Supla-device dostępna w YOCTO

QBA-dev
Posts: 48
Joined: Sat Mar 03, 2018 5:48 pm
Has thanked: 2 times
Been thanked: 3 times

Post

Cześć

Przeciętny użytkownik forum spotkany na ulicy odpowie pewnie tak:
https://www.youtube.com/watch?v=OO3FANjwKHY

Temat dość niszowy, ale napiszę komu to potrzebne i po co. W pracy zajmuję się Linuksem wbudowanym i korzystam do jego budowania właśnie z YOCTO.

Co to jest to YOCTO? Kolejna dystrybucja Linuksa?
Nie, to zestaw narzędzi do budowania własnej dystrybucji

Po co to komu?
Najbardziej popularną platformą dla Linuksa Embedded znaną na całym świecie jest RaspberryPi. Mamy na nią kilka dystrybucji Linuksa w tym najbardziej znanego raspbiana. Jasne i logiczne że można sobie na nim zainstalować sd4linux, ale co jeśli mamy ambicję robić więcej niż jedno takie urządzenie?
Za każdym razem instalować jeszcze raz i jeszcze raz? Kopiować obraz karty z zainstalowanym sd4linux jak zwierzęta?
Co jeśli przyjdzie potrzeba zaktualizowania takiego systemu? Chodzenie i podłączenie się do każdego takiego komputerka? I ręczna aktualizacja? No nie - nie o takie Linuksy ludzie walczyli

Właśnie po to jest Yocto - tworzysz swoją dystrybucję skrojoną na miarę pod urządzenie i zastosowanie i dodajesz takie programy i sterowniki jakich potrzebujesz.

W naszym konkretnym przykładzie posłużę się płytką SOM VisionSOM-6ULL z procesorem i.MX6-ULL założoną na VisionCB-6ULL-STD
od polskiego producenta - firmy SOMLabs:
https://somlabs.com/product/visionsom-6ull-imx-6ull/
https://somlabs.com/product/visioncb-6u ... nsom-6ull/

Takich SOMów używam w pracy i było mi najwygodniej. Nic nie stoi na przeszkodzie żeby użyć RaspberryPi czy Beaglebone czy czegokolwiek ze wsparciem Yocto

Samo YOCTO składa się z warstw dostarczanych przez różne podmioty. Warstwy to zbiory recept - czyli przepisów na poszczególne komponenty systemu(skąd pobrać?, co patchować? jak skonfigurować?, jak skompilować?, gdzie wrzuciś pliki wynikowe?)
W typ przypadku sprawa wygląda następująco:

- firma NXP(która kupiła firmę Freescale) zapewnia obsługę swoich procesorów i publikuje warstwę: meta-freescale https://github.com/Freescale/meta-freescale
- również firma NXP zapewnia softwareowe wsparcie dla komponentów i bajerów związanych z ich procesorami w warstwie: meta-freescale-distro https://github.com/Freescale/meta-freescale-distro
- firma SOMLabs zapewnia wsparcie dla płytek SOM z procesorami iMX ich produkcji w warstwie: imx-meta-somlabs https://github.com/SoMLabs/imx-meta-somlabs

I tak dalej... choćby z bibliotekami Qt czy na przykład systemami aktualizacji jak mender czy swupdate. Do tego wszystkiego znajdziemy w internecie odpowiednie warstwy ze wsparciem od producenta

My jako twórcy urządzenia też możemy robić kolejne wyższe warstwy korzystające z wymienionych.
Ja taką warstwę zrobiłem jakiś czas temu dla SUPLi:

https://github.com/QB4-dev/meta-supla

Aktualnie znajdują się w niej 2 recepty:
- na moją autorską bibliotekę do obsługi SUPLi w C: viewtopic.php?t=12131
- na kawał porządnego programu jakim jest sd4linux autorstwa użytkownika @klew

YOCTO ma niestety stromą krzywą uczenia się i może na początku mocno odpychać.

Pisanie całego tutoriala jak wybudować obraz systemu zajęłoby mnóstwo miejsca, a takich tutoriali w sieci znajdziemy od groma więc to pominę. Dla płytki SOMLabs należy wykonać kolejne punkty z README
https://github.com/SoMLabs/imx-meta-som ... /scarthgap

Budowanie dla raspberryPi pokazano tutaj(polecam ten kanał na YT):
https://www.youtube.com/watch?v=lHFakpueRtw

I teraz czeka nas spora przerwa - pierwsza kompilacja takiego Linuksa to dobre kilka godzin i grube dziesiątki GB zajętego miejsca na dysku

Jak już uda się skompilować swoją pierwszą dystrybucję to w kolejnych krokach będziemy postępować jak na tym filmie gdzie gość dodaje dooma do swojego systemu, z tym że my dodamy sd4linux
https://www.youtube.com/watch?v=Oios6yvJico

Aby dodać sd4linux do naszej dystrybucji należy:
1. wejść do katalogu z warstwami i pobrać z githuba moją warstwę poleceniem(dla wydania scarthgap):

Code: Select all

git clone -b scarthgap https://github.com/QB4-dev/meta-supla
2. dodać warstwę meta-supla do naszej konfiguracji Yocto

Code: Select all

bitbake-layers add-layer meta-supla
3. w pliku local.conf dodać linijkę

Code: Select all

IMAGE_INSTALL+="supla-device nano"
Ta linijka doda do naszego obrazu program supla-device oraz edytor tekstu nano
4. zbudować i wgrać obraz oraz go uruchomić

5. Po uruchomieniu systemu edytować plik(Ctrl+O zapisuje) i ustawić swój adres email i serwer

Code: Select all

nano /etc/supla-device.yaml
I pamiętać żeby w SUPLA cloud właczyć dodawanie urządzeń
6. Przeładować usługę supla-device

Code: Select all

systemctl restart supla-device
Po tym w SUPLi pojawi się nowe urządzenie SUPLA Linux Device które działa dokładnie jak na PC

Return to “Supla-device dla Linuxa (sd4linux)”