Wpis z mikrobloga

Cześć mam trochę pytań odnośnie Yocto. Coś tam już sobie jakiś czas temu pokonfigurowałem, wszystko działa tak jak chcę, ale teraz chciałbym popytać o jakieś dobre praktyki w Yocto. W pytanich głównie przewiną się rzeczy związane z tym gdzie co należy dodać. Idealnie wszystkie opcje konfiguracyjne typu IMAGEINSTALL chciałbym wywalić z local.conf i wrzucić w miejsca bardziej odpowiednie.

1) Mam kernel driver, który służy do kontroli sprzętu podpietego do boarda - umieściłem go w meta-custom-bsp/recipes-kernel/custom-module. Czy to jest ok?

2) Aby mój driver działał, musiałem dodać device-tree overlay. Stworzyłem więc patch do kernela i umieściłem go w meta-custom-bsp/recipes-kernel/linux/. Czy to jest ok?

3) Stworzyłem plik opisujący moją "maszynę", bazuje on na raspberrypi, dorzuciłem tam kilka opcji konfiguracyjnych. Plik ten wrzuciłem do meta-custom-bsp/conf/machine. Czy to jest ok?

4) Stworzyłem warstwę opisującą moją własną dystrybucję - meta-custom-os Póki co wiele tam nie ma, ale stworzyłem ją w ramach treningu. Czy tworzenie własnej dystrybucji do dobra praktyka? Co wrzuca się do takiej warstwy?

5) Chciałbym zamienić init na systemd. Nie wnikając w to czy to dobra decyzja czy zła - do której warstwy powinno to zostać wrzucone? Genralnie czuje, że właściwym miejscem byłaby warstwa opisująca moją dystrybucję.

6) Czy stworzenie warstwy meta-application i wrzucenie tam kilku recipes w których będzie czy to kod źródłowy czy link do repo z kodem jest ok? Załóżmy, że każda aplikacja to osobny plik wykonywalny, który chciałbym uruchomić podczas startu systemu. Gdzie powinna znaleźć się konfiguracja dla systemd, opisująca każdy serwis? W meta-application/recipes-systemd?

7) Załóżmy, że chciałby zmienić układ i ilość partycji, które produkuje wic. Gdzie to powinno się znaleźć? Czy w warstwie bsp?

8) Załóżmy, że mam dwa takie same sprzęty, tj. dwa raspberrypi, na których uruchomione są dokładnie te same aplikacje. Tj. wrzucam output z yocto na dwa różne sprzęty. Oba sprzęty mają wifi. Niemniej jednak każdy ze sprzętów powinien podłączyć się do innej sieci wifi - jest to jedyna różnica. Czy konfiguracja wifi to coś co powininem przetrzymywać w warstwach, czy jest to konfiguracja - nazwijmy to - runtime, którą powinienem sobie ustawić ręcznie po uruchomieniu? Aktualne w meta-custom-os mam recipes-connectivity a w nim znajduje się wpa
supplicant.conf dla konkretnej sieci.

9) Załóżmy, że chciałbym dodać do bibliotek znajdujacych się na moim systemie, bibliotekę boost. Z tego co widzę, jest ona dostępna w recipes-support. Gdzie powinienem dodać opcję IMAGEINSTALLappend = " boost"? Do której warstwy? Co

10) Chciałbym dodać inną bibliotekę do mojego projektu, np. z projektu Poco - https://pocoproject.org/ Czy powinienem to wrzucić np. w meta-application/recipes-poco? Czy inne miejsce będzie bardziej odpowiednie?

Generalnie mam dostęp do komercyjnego projektu opartego na Yocto. Niemniej jednak jest to bardzo duży projekt, który ma już wiele lat, więc ciężko tam czasem coś znaleźć. Dodatkowo jest tam dużo legacy i przypuszczam rzeczy, które już nie są używane ale zostały w repo.

Jeżeli posiadacie jakieś dobre materiały o tym jak pracować z Yocto, ale nie w stylu wrzuć to i tamto w local.conf to chętnie przygarnę :)

#embedded #programowanie #yocto
  • 4
@pepepanpatryk: Witaj mireczku. Siedzę już trochę w Yocto. Odpowiem na Twoje pytania pisząc jak ja robię i dlaczego tak - co nie oznacza że jestem wyrocznią.
Zrobiłem i udostępniłem swoją podstawową warstwę dla płytek SOMLabs i na jej podstawie będę pisał
https://github.com/QB4-dev/meta-somlabs-bsp

1) Mam kernel driver, który służy do kontroli sprzętu podpietego do boarda - umieściłem go w meta-custom-bsp/recipes-kernel/custom-module. Czy to jest ok?


Tak, czasem jest też folder recipes-modules(petalinux bazujący na
@QBA__: Dzięki mireczku, powiem szczerze,że po cichu liczyłem na Twoją odpowiedź bo już kiedyś mi pomagałeś ( ͡° ͜ʖ ͡°) Dzieki za wszystkie odpowiedzi, póki co nie mam więcej pytań, pojawią się jak zacznę wdrażać to o co tutaj zapytałem :)