Umumnya untuk sistem lengan, pohon perangkat memasok informasi perangkat keras ke kernel (Linux). Pohon perangkat ini ada sebagai file dts (sumber pohon perangkat) yang dikompilasi dan dimuat ke kernel. Masalahnya adalah saya tidak memiliki akses ke dts
file seperti itu , bahkan tidak ke dtb
file.
Saya memiliki akses ke /sys
dan /proc
pada mesin dan saya ingin bertanya apakah itu akan memungkinkan saya untuk "menebak nilai yang benar" untuk digunakan dalam dts?
Juga jawaban potensial dapat menyoroti aspek tambahan jika jawaban untuk pertanyaan ini juga tergantung pada apakah antarmuka pohon perangkat digunakan di tempat pertama (yaitu a dtb
dibuat dan disediakan ke kernel) daripada beberapa peretasan lagi "kita cukup mengalihkan dari vanilla dan menambal kernel untuk menyelesaikan masalah informasi perangkat hanya untuk kernel kami "-solusi?
sumber
Jawaban:
/proc/device-tree
atau/sys/firmware/devicetree/base
Saya pikir keduanya alias,
/sys/firmware/devicetree/base
kemungkinan menjadi pilihan yang lebih baik setelah penjinakan/proc
.Anda kemudian dapat mengakses properti dts dari file:
Format output untuk bilangan bulat adalah biner, jadi
hexdump
diperlukan.dtc -I fs
Dapatkan pohon perangkat lengkap dari sistem file:
output dts ke stdout.
Lihat juga: Cara membuat daftar Tree Device kernel | Unix & Linux Stack Exchange
dtc
di BuildrootBuildroot memiliki
BR2_PACKAGE_DTC=y
konfigurasi untuk diletakkandtc
di dalam sistem file root.QEMU
-machine dumpdtb
Jika Anda menjalankan Linux di dalam QEMU, QEMU secara otomatis menghasilkan DTB jika Anda tidak memberikannya secara eksplisit
-dtb
, dan juga dapat membuangnya langsung dengan:sebagaimana disebutkan di: https://lists.gnu.org/archive/html/qemu-discuss/2017-02/msg00051.html
Diuji dengan pengaturan QEMU + Buildroot ini pada kernel Linux v4.19 arm64.
sumber
Saya tidak yakin apakah saya mengerti Anda dengan benar.
Jika Anda menggunakan sistem yang melakukan boot menggunakan dtb, bagan perangkat Anda harus dapat diakses di dalam debugfs.
Anda juga dapat mencoba alat-alat dtc oleh Pantelis Antoniou, mereka termasuk fdtdump dan fdtget yang mencetak dts dari gumpalan.
Jika Anda tidak memiliki hierarki perangkat sama sekali dan tidak mem-boot dari dtb, maka Anda harus melihat sendiri kode mesin dan menambahkan semua atribut dan node khusus perangkat ke dts Anda. Tidak ada pohon perangkat "sintetis" yang dihasilkan untuk boot semacam itu. Titik awal akan menjadi mesin atau orang tua yang serupa dan kemudian bekerja dengan sistem Anda dengan sistem.
sumber
dtb
mungkin dapat diakses melalui melalui debugfs belum bahwa akan mengandalkanCONFIG_DEBUG_FS
dalam.config
dan bahkan jika set masih pada kemauan belaka bahwa mereka benar-benar menggunakandtb
untuk memulai dengan, saya membaca hak ini? Jadi dengan "nasib buruk" mereka tidak melakukan keduanya dan menggunakan semacam patch kernel langsung yang dipasang pada antarmuka pohon perangkat, juga kan? Jadi ini berarti jalan terakhir adalah kode mesin, mengingat mereka melanggar GPLv2 dan menutup sumber kernel, kan?