GNU/Linux >> Tutoriels Linux >  >> Linux

Comment programmer les fichiers d'arborescence de périphériques Linux .dts ?

Jetez un œil au dts de la carte qui ressemble le plus à votre carte de développement. Utilisez-le comme référence et apportez des modifications au dts en fonction des différences entre la carte de référence et votre carte de développement.

Consultez également les éléments suivants :
- Projet de documentation Device-tree sur eLinux (possède une vaste collection de liens pour commencer à lire).
- Série d'articles sur les bases de l'arborescence des appareils.
- Procédure pas à pas pour migrer vers l'arborescence des appareils.


Minimale reg + interrupt exemple avec un périphérique virtuel QEMU

Notre exemple ajoutera le nœud d'arborescence de périphériques suivant au versatilepb arborescence de périphériques que QEMU utilisera en raison de -M versatilepb :

[email protected] {
    compatible = "lkmc_platform_device";
    reg = <0x101e9000 0x1000>;
    interrupts = <18>;
    interrupt-controller;
    #interrupt-cells = <2>;
    clocks = <&pclk>;
    clock-names = "apb_pclk";
    lkmc-asdf = <0x12345678>;
};

Ensuite, en utilisant un module du noyau Linux pour interagir avec l'appareil, nous testerons les fonctionnalités DTS suivantes :

  • enregistre les adresses
  • IRQ
  • lire les propriétés personnalisées du pilote

Voici les principaux composants de l'exemple :

  • Linux polyvalent .dts correctif sur le fork Linux
    • reg et interrupt faire correspondre les numéros codés en dur dans la machine polyvalente QEMU (qui représente le SoC)
    • compatible correspond au platform_driver.name dans le module du noyau, et informe le noyau du module qui gérera ce périphérique
    • nous transmettons également une propriété personnalisée au pilote :lkmc-asdf = <0x12345678>; , qui est lu avec of_property_read_u32
    • l'arborescence des périphériques est transmise au micrologiciel de QEMU avec le -dtb argument
  • Fourchette QEMU :
    • dispositif qui lit un registre et génère des interruptions
    • insérer l'appareil dans -M versatilepb
  • module du noyau Écrit en mémoire sur la sonde pour tester les éléments, ce qui génère également une IRQ.

Les arborescences d'appareils ont de nombreuses autres fonctionnalités que nous n'avons pas couvertes, mais cet exemple devrait vous aider à démarrer et vous permettre de jouer facilement avec toutes les nouvelles fonctionnalités qui apparaissent.

Autres ressources :

  • tutoriel elinux indispensable :http://elinux.org/Device_Tree_Usage
  • jouer avec dtc pour des questions purement syntaxiques. Par exemple, il montre comment les nœuds sont simplement fusionnés par chemin :https://unix.stackexchange.com/a/375923/32558
  • https://unix.stackexchange.com/questions/118683/what-is-a-device-tree-and-a-device-tree-blob

Prenons un exemple et je vais vous expliquer chacun d'eux comme ci-dessous

auart0: [email protected] {
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
reg = <0x8006a000 0x2000>;
interrupts = <112>;
dmas = <&dma_apbx 8>, <&dma_apbx 9>;
dma-names = "rx", "tx";
};

Propriétés requises :
- compatible :Doit être "fsl,-auart". Les SoC pris en charge incluent imx23 et imx28.
- reg :Adresse et longueur du registre défini pour l'appareil
- interruptions :doit contenir les numéros d'interruption auart
- dmas :spécificateur DMA, composé d'un nœud de contrôleur DMA et d'un ID de canal AUART DMA.
- noms dma :"rx" pour le canal RX, "tx" pour le canal TX.

Remarque :Chaque port auart doit avoir un alias correctement numéroté dans le nœud "aliases".
Pour plus de propriétés à l'avance, veuillez vous rendre sur ce lien, il est très utile
Explication de l'arborescence des appareils

J'espère que cela vous aidera !


Linux
  1. Comment chiffrer des fichiers avec gocryptfs sous Linux

  2. Comment renommer des fichiers sous Linux

  3. Comment créer des fichiers Linux Proc dans le programme C à l'aide de LKM

  4. Comment monter un appareil sous Linux ?

  5. Comment lister l'arborescence des périphériques du noyau

Comment tronquer des fichiers (vides) sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Comment défragmenter votre système Linux

Comment renommer des fichiers en utilisant la ligne de commande sous Linux

Comment renommer un ou plusieurs fichiers sous Linux

Comment compresser un fichier sous Linux