Użyłem Yocto do stworzenia małego obrazu linuxowego dla Beaglebone Black. Myślę, że mam wszystko co działa tak, jak chcę, z wyjątkiem tego, że potrzebuję dostępu do UART 2 i 4. Kiedy używałem standardowego obrazu Debiana, zrobiłem to z nakładkami drzewa i capemgrem urządzenia. Jednak znalazłem, że jądro zbudowane z Yocto nie ma capemgr.Modyfikowanie drzewa urządzeń dla Beaglebone Black
Moje opcje wydają się być:
- dostać jądro budować z capemgr lub
- zmodyfikować plik drzewo urządzenie z niezbędnymi zmianami.
Opcja 2 wydaje się znacznie łatwiejsza.
Nakładki drzewa urządzeń dla UART to here i here. Próbowałem włączyć je na kilka sposobów.
- Dekompilowałem drzewo blobu urządzenia, którego używałem i próbowałem znaleźć tam te pliki.
- Pobrałem the full set of dts files i próbowałem dołączyć nakładki drzewa urządzeń UART z w am335x-boneblack.dts.
Oba podejścia uzyskując coś podobnego błędu:
Error: am335x-boneblack.dts:1.1-2 syntax error
FATAL ERROR: Unable to parse input tree
Jednak zauważyłem, że mam podobny błąd przy próbie kompilacji am335x-boneblack.dts nawet bez modyfikowania go, więc jestem prawdopodobnie nawet nie robiąc tego dobrze. (Używając polecenia dtc -I dts -O dtb -o result.dtb am335x-boneblack.dts)
Oczywiście nie wiem, co robię. Podejrzewam, że nakładki drzewa urządzeń muszą być w jakiś sposób zmodyfikowane, aby były używane w sposób, w jaki próbuję ich użyć. A może nie robię prawa do włączania (tylko dodawanie #include do początku pliku).
Czy ktoś ma jakieś pomysły, co mogę robić źle? Czy to, co próbuję zrobić, nawet możliwe?
Prawdopodobnie chcesz dołączyć plik "nakładki" na * koniec * pliku **. Dts **, czyli po zadeklarowaniu wszystkiego innego. Zwykli **. Dtsi plików ** nie używać 'fragment @ 0 { \t \t target = <&x>; \t \t __overlay__ {...}}', więc te muszą być wycięte. – sawdust
Aby skompilować DTB na Yocto: 'bitbake -f -c wdrożyć your_kernel_recipe', np. 'bitbake -f -c wdraża linux-imx' – LPs