Tôi đã sử dụng Yocto để tạo một hình ảnh linux nhỏ cho Beaglebone Black. Tôi nghĩ rằng tôi có hầu hết mọi thứ làm việc như tôi muốn, ngoại trừ tôi cần truy cập vào UART 2 và 4. Khi tôi đang sử dụng hình ảnh Debian chuẩn, tôi đã làm điều này với lớp phủ thiết bị và capemgr. Tuy nhiên, tôi thấy rằng hạt nhân được xây dựng với Yocto không có capemgr.Sửa đổi cây thiết bị cho Beaglebone Black
lựa chọn của tôi dường như là:
- có được hạt nhân để xây dựng với capemgr, hoặc
- sửa đổi các tập tin cây thiết bị với những thay đổi cần thiết.
Tùy chọn 2 có vẻ dễ dàng hơn nhiều.
Lớp phủ cây thiết bị cho UART là here và here. Tôi đã cố gắng để bao gồm những người trong một vài cách.
- Tôi đã biên dịch blob cây thiết bị mà tôi đã sử dụng và cố gắng bao gồm các tệp này từ đó.
- Tôi đã tải xuống the full set of dts files và cố gắng đưa các lớp phủ cây thiết bị UART vào am335x-boneblack.dts.
Cả hai phương pháp mang lại một cái gì đó lỗi như thế này:
Error: am335x-boneblack.dts:1.1-2 syntax error
FATAL ERROR: Unable to parse input tree
Tuy nhiên, tôi nhận thấy rằng tôi nhận được một lỗi tương tự khi cố gắng biên dịch am335x-boneblack.dts thậm chí không có sửa đổi nó, vì vậy tôi có thể thậm chí không làm điều đó đúng. (Sử dụng lệnh dtc -I dts -O dtb -o result.dtb am335x-boneblack.dts)
Rõ ràng là tôi không biết mình đang làm gì. Tôi nghi ngờ các lớp phủ cây thiết bị phải được sửa đổi theo một cách nào đó để được sử dụng theo cách tôi đang cố gắng sử dụng chúng. Hoặc có thể tôi không thực hiện quyền bao gồm (chỉ cần thêm #include vào đầu tệp).
Có ai có ý tưởng gì về việc tôi có thể làm sai không? Là những gì tôi đang cố gắng làm thậm chí có thể?
Bạn có thể muốn bao gồm tệp "lớp phủ" ở đầu * * của tệp **. Dts **, đó là sau khi mọi thứ khác đã được khai báo. Các tệp **. Dtsi ** bình thường không sử dụng 'fragment @ 0 { \t \t target = <&x>; \t \t __overlay__ {...}}', vì vậy chúng phải được chỉnh sửa. – sawdust
Để biên dịch DTB trên Yocto: 'bitbake -f -c deploy your_kernel_recipe', ví dụ: 'bitbake -f -c triển khai linux-imx' – LPs