GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana memprogram file pohon perangkat Linux .dts?

Lihatlah dts papan yang paling mirip dengan papan dev Anda. Gunakan itu sebagai referensi dan buat perubahan pada dts sesuai dengan perbedaan antara papan referensi dan papan dev Anda.

Juga periksa yang berikut ini:
- Proyek Dokumentasi pohon-perangkat di eLinux (memiliki banyak koleksi tautan untuk mulai membaca).
- Serangkaian artikel tentang dasar-dasar pohon perangkat.
- Panduan bermigrasi ke pohon perangkat.


Minimal reg + interrupt contoh dengan perangkat virtual QEMU

Contoh kita akan menambahkan simpul pohon perangkat berikut ke versatilepb pohon perangkat yang akan digunakan QEMU karena -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>;
};

Kemudian, dengan menggunakan modul kernel Linux untuk berinteraksi dengan perangkat, kami akan menguji fitur DTS berikut:

  • mendaftarkan alamat
  • IRQ
  • baca properti khusus dari driver

Ini adalah komponen utama dari contoh:

  • Linux serbaguna .dts tambalan di garpu Linux
    • reg dan interrupt mencocokkan angka yang di-hard-code di mesin serbaguna QEMU (yang mewakili SoC)
    • compatible cocok dengan platform_driver.name dalam modul kernel, dan memberi tahu kernel modul mana yang akan menangani perangkat ini
    • kami juga memberikan properti khusus kepada pengemudi:lkmc-asdf = <0x12345678>; , yang dibaca dengan of_property_read_u32
    • pohon perangkat diteruskan ke firmware QEMU dengan -dtb argumen
  • garpu QEMU:
    • perangkat yang membaca register dan menghasilkan interupsi
    • masukkan perangkat ke -M versatilepb
  • modul kernel Menulis ke memori pada probe untuk menguji berbagai hal, yang juga menghasilkan IRQ.

Struktur perangkat memiliki lebih banyak fitur yang belum kami bahas, tetapi contoh ini akan membantu Anda memulai, dan memungkinkan Anda untuk bermain-main dengan fitur baru apa pun yang muncul dengan mudah.

Referensi lebih lanjut:

  • tutorial elinux yang sangat diperlukan:http://elinux.org/Device_Tree_Usage
  • bermain-main dengan dtc untuk pertanyaan murni sintaksis. Misalnya, ini menunjukkan bagaimana node digabungkan dengan jalur:https://unix.stackexchange.com/a/375923/32558
  • https://unix.stackexchange.com/questions/118683/what-is-a-device-tree-and-a-device-tree-blob

Mari kita ambil contoh dan saya akan menjelaskan masing-masing seperti di bawah ini

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

Properti yang dibutuhkan:
- kompatibel :Seharusnya "fsl,-auart". SoC yang didukung termasuk imx23 dan imx28.
- reg :Alamat dan panjang set register untuk perangkat
- interupsi :Harus berisi nomor interupsi auart
- dmas:Penspesifikasi DMA, terdiri dari phandle ke node pengontrol DMA dan ID saluran DMA AUART.
- nama-dma:"rx" untuk saluran RX, "tx" untuk saluran TX.

Catatan:Setiap port auart harus memiliki alias yang diberi nomor dengan benar di simpul "alias".
Untuk properti lebih lanjut, silakan buka tautan ini, ini sangat berguna
Penjelasan Pohon Perangkat

Semoga membantu!


Linux
  1. Cara Membuat Zip Banyak File di Linux

  2. Bagaimana cara memasang perangkat di Linux?

  3. Cara mendaftar Pohon Perangkat kernel

  1. Cara mengenkripsi file dengan gocryptfs di Linux

  2. Cara menginstal driver perangkat di Linux

  3. Cara Mengganti Nama File di Linux

  1. Bagaimana saya menyesuaikan dekorasi jendela Linux saya

  2. Cara menemukan file di Linux

  3. Cara Membuat File Proc Linux di Program C menggunakan LKM