GNU/Linux >> Linux Esercitazione >  >> Linux

Come programmare i file dell'albero dei dispositivi Linux .dts?

Dai un'occhiata ai dts della scheda che assomiglia di più alla tua scheda di sviluppo. Usalo come riferimento e apporta modifiche al dts in base alle differenze tra la scheda di riferimento e la tua scheda di sviluppo.

Controlla anche quanto segue:
- Progetto Device-tree Documentation su eLinux (ha una vasta collezione di link per iniziare a leggere).
- Serie di articoli sulle basi dell'albero dei dispositivi.
- Procedura dettagliata della migrazione all'albero dei dispositivi.


Minimo reg + interrupt esempio con dispositivo virtuale QEMU

Il nostro esempio aggiungerà il seguente nodo dell'albero dei dispositivi a versatilepb albero dei dispositivi che QEMU utilizzerà a causa di -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>;
};

Quindi, utilizzando un modulo del kernel Linux per interagire con il dispositivo, testeremo le seguenti funzionalità DTS:

  • registra gli indirizzi
  • IRQ
  • leggere le proprietà personalizzate dal driver

Questi sono i componenti principali dell'esempio:

  • Linux versatile .dts patch sul fork di Linux
    • reg e interrupt numeri di corrispondenza codificati nella macchina versatile QEMU (che rappresenta il SoC)
    • compatible corrisponde a platform_driver.name nel modulo del kernel e informa il kernel quale modulo gestirà questo dispositivo
    • passiamo anche una proprietà personalizzata al driver:lkmc-asdf = <0x12345678>; , che viene letto con of_property_read_u32
    • l'albero dei dispositivi viene passato al firmware di QEMU con -dtb argomento
  • Forcella QEMU:
    • dispositivo che legge un registro e genera interrupt
    • inserisci il dispositivo in -M versatilepb
  • modulo del kernel Scrive in memoria su probe per testare le cose, che genera anche un IRQ.

Le strutture dei dispositivi hanno molte altre funzionalità che non abbiamo trattato, ma questo esempio dovrebbe aiutarti a iniziare e consentirti di giocare facilmente con le nuove funzionalità che si presenteranno.

Ulteriori risorse:

  • Tutorial Elinux indispensabile:http://elinux.org/Device_Tree_Usage
  • gioca con dtc per questioni puramente sintattiche. Ad esempio, mostra come i nodi vengono semplicemente uniti per percorso:https://unix.stackexchange.com/a/375923/32558
  • https://unix.stackexchange.com/questions/118683/what-is-a-device-tree-and-a-device-tree-blob

Facciamo un esempio e spiegherò ciascuno di essi come di seguito

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";
};

Proprietà richieste:
- compatibile :dovrebbe essere "fsl,-auart". I SoC supportati includono imx23 e imx28.
- reg :Indirizzo e lunghezza del registro impostato per il dispositivo
- interrupt :dovrebbe contenere i numeri di interrupt auart
- dmas:specificatore DMA, costituito da un phandle al nodo controller DMA e ID canale AUART DMA.
- dma-names:"rx" per canale RX, "tx" per canale TX.

Nota:ogni porta auart dovrebbe avere un alias correttamente numerato nel nodo "alias".
Per ulteriori proprietà avanzate, vai a questo link, è molto utile
Spiegazione dell'albero dei dispositivi

Spero ti sia d'aiuto!


Linux
  1. Come crittografare i file con gocryptfs su Linux

  2. Come installare un driver di dispositivo su Linux

  3. Come rinominare i file in Linux

  4. Come creare file Proc Linux nel programma C usando LKM

  5. Come montare un dispositivo in Linux?

Come troncare (svuotare) i file in Linux

Come contare i file nella directory in Linux

Come deframmentare il tuo sistema Linux

Come rinominare i file usando la riga di comando in Linux

Come rinominare uno o più file in Linux

Come comprimere un file in Linux