Saya mencoba membangun Linux khusus untuk BeagleBoard xM (Rev. C). Saya melakukan banyak C / C ++ tetapi saya pemula dalam membangun dan menginstal Linux dari awal.
Saya menggunakan Yocto Project build appliance ( https://www.yoctoproject.org/ ) yang sepertinya menjanjikan - ia membuat file untuk boot loader u-Boot, kernel Linux dan sistem file root.
Halaman ini memberikan instruksi untuk mengatur kartu micro SD dengan file yang dihasilkan Yocto. Namun, file gambar menyertakan file ".dtb" yang tidak disebutkan dalam instruksi pengaturan.
Apakah file ini ada hubungannya dengan perangkat keras papan? Berbagai situs menyebutkan memuat file dtd (mungkin di uEnv.txt?) Tetapi saya belum menemukan informasi terperinci.
Saya menggunakan instruksi di atas untuk mengatur partisi boot dengan MLO dan u-boot.img, dan sedikit mengacaukan dengan uEnv.txt. Saya juga mengatur partisi kedua dengan sistem file root.
Saya dapat melakukan boot dan masuk (melalui konsol port serial), tetapi sepertinya sebagian besar perangkat keras papan - misalnya video dan semua perangkat USB termasuk ethernet - tidak berfungsi. Mungkinkah ini karena saya tidak menggunakan file .dtb?
Adakah yang bisa menjelaskan dtb dan bagaimana menggunakannya di papan beagle? Terima kasih!
sumber
Jawaban:
Menjawab pertanyaan saya sendiri, setelah saya menemukan apa yang harus dicari. File "dtb" berisi Device Tree Blob (atau Binary) (deskripsi bagus di sini ). Ini adalah cara (er) baru untuk meneruskan informasi perangkat keras tentang board ke kernel Linux.
Itu dapat dimuat ke dalam memori dan diteruskan ke kernel oleh u-Boot.
Berikut adalah perintah u-Boot yang saya gunakan:
zGambar menjadi kernel, dan beagle-xm.dtb menjadi gumpalan pohon perangkat. Saya mengotomatiskan proses booting dengan mengatur variabel "uenvcmd = ..." di uEnv.txt (dengan yang di atasnya), tapi agak jelek dan mungkin ada cara yang lebih baik.
Perhatikan bahwa ini boot, dan mengatakan bahwa itu memuat pohon perangkat OK. Namun, saya masih belum memiliki perangkat USB atau video (sejauh yang saya tahu). Namun, saya menduga itu mungkin masalah yang berbeda.
sumber
Saya menggunakan Ubuntu 14.04 pada beaglebone black, jadi pengaturan saya mungkin sedikit berbeda, tapi di sini adalah bagaimana saya memuat dtb khusus:
Di uEnv.txt, tambahkan baris dengan:
dtb=name-of-desired.dtb
Lokasi yang dicari harus seperti yang ditentukan di sini . Bagi saya ini adalah di
/boot/dtbs/linux-kernel/
mana linux-kernel adalah nama versi yang dimuat.sumber
Perhatikan bahwa ada 2 dtb. U-boot dtb dan kernel dtb. Mereka adalah 2 hal yang berbeda. U-boot board dts / dtb tidak selalu digunakan, tidak wajib, btw di u-boot Anda dapat menggunakan "u-boot" dtb yang menanamkannya ke dalam u-boot atau menggabungkannya ke u-boot.
sumber