Tệp dtb u-Boot là gì và làm cách nào để sử dụng nó (BeagleBoard xM)?


13

Tôi đang cố gắng xây dựng một Linux tùy chỉnh cho BeagleBoard xM (Rev. C). Tôi làm rất nhiều C / C ++ nhưng là người mới bắt đầu xây dựng và cài đặt Linux từ đầu.

Tôi đã sử dụng thiết bị xây dựng Dự án Yocto ( https://www.yoctoproject.org/ ) có vẻ đầy hứa hẹn - nó đã xây dựng các tệp cho trình tải khởi động u-Boot, nhân Linux và hệ thống tệp gốc.

Trang này cung cấp hướng dẫn để thiết lập thẻ micro SD với các tệp do Yocto tạo. Tuy nhiên, các tệp hình ảnh bao gồm tệp ".dtb" không được đề cập trong hướng dẫn thiết lập.

Tập tin này có liên quan gì đến phần cứng của bo mạch không? Các trang web khác nhau đề cập đến việc tải các tệp dtd (có thể trong uEnv.txt?) Nhưng tôi không tìm thấy bất kỳ thông tin chi tiết nào.

Tôi đã sử dụng các hướng dẫn ở trên để thiết lập phân vùng khởi động với MLO và u-boot.img và đã nhầm lẫn một chút với uEnv.txt. Tôi cũng thiết lập một phân vùng thứ hai với hệ thống tập tin gốc.

Tôi đã có thể khởi động và đăng nhập (thông qua bảng điều khiển cổng nối tiếp), nhưng có vẻ như hầu hết phần cứng của bo mạch - ví dụ: video và tất cả các thiết bị USB bao gồm ethernet - không hoạt động. Điều này có thể là do tôi không sử dụng tệp .dtb?

Ai đó có thể giải thích dtb và làm thế nào để sử dụng nó trên một bảng beagle? Cảm ơn!


Hóa ra tôi đã đọc sai tên tệp - ban đầu tôi nghĩ đó là tệp ".dtd" nhưng đó là HOẠT ĐỘNG ".dtb" - đó là lý do tại sao tôi không thể tìm thấy thông tin về nó. Câu hỏi hiện đã được cập nhật.
Jeremy

Chẳng hạn tối thiểu với thiết bị ảo QEMU để hiểu rõ hơn về khái niệm: stackoverflow.com/questions/17488320/...
Ciro Santilli新疆改造中心法轮功六四事件

Câu trả lời:


13

Trả lời câu hỏi của riêng tôi, sau khi tôi tìm ra những gì cần tìm kiếm. Tệp "dtb" chứa Device Tree Blob (hoặc Binary) (mô tả hay ở đây ). Đây là cách mới để truyền thông tin phần cứng về bo mạch cho nhân Linux.

Nó có thể được tải vào bộ nhớ và được truyền vào kernel bằng u-Boot.

Dưới đây là các lệnh u-Boot tôi đã sử dụng:

setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw'
fatload mmc 0:1 0x80300000 zImage
fatload mmc 0:1 0x815f0000 beagle-xm.dtb
bootz 0x80300000 - 0x815f0000

zImage là kernel và beagle-xm.dtb là blob cây thiết bị. Tôi đã tự động hóa quá trình khởi động bằng cách thiết lập biến "uenvcmd = ..." trong uEnv.txt (với phần trên), nhưng nó hơi xấu và có nhiều cách tốt hơn.

Lưu ý rằng điều này khởi động và nói rằng nó đã tải cây thiết bị OK. Tuy nhiên, tôi vẫn không có thiết bị USB hoặc video (theo như tôi có thể nói). Tuy nhiên, tôi nghi ngờ đó có thể là một vấn đề khác.


3
Đây là cách mới để truyền thông tin phần cứng về bo mạch cho nhân Linux. Không có cách nào trước đây để truyền thông tin phần cứng cho kernel. Thay vào đó, hạt nhân sẽ phải bao gồm tĩnh tất cả các thông tin và do đó sẽ có một tệp C dành riêng cho bảng để liệt kê tất cả các ánh xạ đó. Đây là một cơn ác mộng bảo trì từ quan điểm hạt nhân.
BatchyX

Cảm ơn! Tôi đã tìm ra cách tải tệp dtb và Linux hiện khởi động và phát hành các thông báo khác nhau về tải trình điều khiển, nhưng tôi không thể thấy bất kỳ thiết bị USB nào (bao gồm mô-đun ethernet). Xem câu hỏi mới: liên kết . Có lẽ có một cái gì đó tôi cần phải cấu hình thủ công trong Linux?
Jeremy

Nhưng địa chỉ nào để sử dụng cho tập tin dtb? Ví dụ: nếu zImage của tôi chuyển đến địa chỉ 0x43000000 (thay cho ví dụ trên 0x80300000), dtb nên đi đâu?
André van Schoubroeck 6/07/2016

2

Tôi đang sử dụng Ubuntu 14.04 trên beaglebone màu đen, vì vậy thiết lập của tôi có thể hơi khác một chút, nhưng đây là cách tôi tải một dtb tùy chỉnh:

Trong uEnv.txt, thêm một dòng với: dtb=name-of-desired.dtb

Các vị trí tìm kiếm nên được chỉ định ở đây . Đối với tôi đây là /boot/dtbs/linux-kernel/nơi linux-kernel là tên của phiên bản được tải.


0

Lưu ý rằng có 2 dtb. Các dtb u-boot và dtb kernel. Chúng là 2 thứ khác nhau. U-boot board dts / dtb không phải lúc nào cũng được sử dụng, không bắt buộc, btw trong u-boot bạn có thể sử dụng dtb "u-boot" nhúng nó vào u-boot hoặc nối nó với u-boot.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.