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 Linuxreg
daninterrupt
mencocokkan angka yang di-hard-code di mesin serbaguna QEMU (yang mewakili SoC)compatible
cocok denganplatform_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 denganof_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!