jak přežít Embedded Linux-Část 1 proces vývoje Embedded Linuxu

proces vývoje Embedded Linuxu

Linuxové jádro může běžet na mnoha různých počítačových architekturách, z nichž většina je ve vestavěném světě docela populární. Všechny základní balíčky, které OS umožňují provádět základní úkoly, jsou vhodné pro křížovou kompilaci, proto Linux může být stejně všudypřítomný jako mikrokontroléry a systémy na čipu (Soc).

linuxová distribuce je operační systém vytvořený z kolekce softwaru, který je založen na jádře Linuxu a-často-systému správy balíčků. Distribuce může přijít jako předkompilované binární soubory a balíčky sestavené
správci distribuce, nebo jako zdroje spárované s pokyny, jak je (křížově) kompilovat.

ve vestavěné doméně, protože hardwarová platforma je obvykle Zakázková, návrhář OS obecně upřednostňuje generování distribuce od nuly, počínaje zdroji. To dává návrháři absolutní kontrolu nad tím, co skončí v produktu
. Kromě toho inženýr Board Support Package (BSP) upravuje nízkoúrovňový kód tak, aby základní funkce operačního systému fungovala na konkrétním hardwarovém produktu.

spojit všechny potřebné softwarové komponenty pro generování distribuce Linuxu pro konkrétní vložený produkt bývalo noční můrou, ale naštěstí tomu tak již není.

mnozí sdíleli s komunitou open source zdroje sestavovacích systémů schopných stáhnout všechny softwarové komponenty z Internetu, zkompilovat je a propojit je dohromady, až po generování instalačních obrazů plnohodnotných operačních systémů. Několik společností vyvíjí a udržuje svůj vlastní systém sestavení, jiní kompilují jen několik základních komponent a pak si předinstalují binární soubory k dokončení operačního systému.

v roce 2010 se pracovní skupina z Linux Foundation začala zabývat nástroji a procesy, které umožňují vytváření linuxových distribucí pro embedded software (aka Embedded Linux). Taková pracovní skupina, známá jako projekt Yocto, se vyrovnala s Open Embedded, rámcem s podobnými cíli.

Projekt Yocto je open source projekt, jehož cílem je zlepšení procesu vývoje softwaru pro vestavěné distribuce Linuxu. Projekt Yocto poskytuje interoperabilní nástroje, metadata a procesy, které umožňují
rychlý a opakovatelný vývoj vestavěných systémů založených na Linuxu.

projekt Yocto v současné době napájí nejoblíbenější distribuce Linuxu pro embedded systém, do bodu, kdy se někdy pojmy „Embedded Linux“ a „Yocto Project“ snadno zaměňují jako synonyma. Yocto není to vestavěná distribuce Linuxu, vytváří pro vás vlastní.

rozvržení meta-vrstev Yocto

moderní verze architektury Yocto je založena na meta-vrstvách, což jsou adresáře obsahující konfigurační soubory a pravidla, jak kompilovat a sestavovat distribuce Linuxu pro vestavěné systémy.

meta-vrstva obvykle, ale ne vždy, žije na svém vlastním repozitáři git a poskytuje:

  • vlastní balíčky (definované recepty,. bb soubory),
  • modifikace balíčků poskytovaných jinými meta-vrstvami (.bbappend soubory),
  • stroje (.conf files),
  • konfigurační soubory (.conf soubory),
  • společný kód (.soubory bbclass),
  • Licence,
  • a další drobné kousky.

jedna meta-vrstva obvykle řeší konkrétní účel. Proto, aby se dosáhlo plně fungujícího systému, je třeba kombinovat více metavrstvy.

verze vychystávání a porovnávání

při sestavování různých softwarových komponent je třeba mít na paměti verzi každé komponenty, protože nesprávná verze nemusí dobře spolupracovat s ostatními komponenty nebo dokonce rozbít systém.

projekt Yocto poskytuje verze komponent, o kterých je známo, že dobře spolupracují, ale to je jen výchozí bod pro váš produkt.

Linuxové jádro je velký kus kódu, který potřebuje vystavit správná rozhraní uživatelskému prostoru a musí obsahovat správné ovladače, aby systém fungoval správně. Role dodavatele křemíku se proto v těchto dnech stává stále důležitější, protože obvykle mají své vlastní vývojové repozitáře pro Linuxové jádro a bootloader, a proto jsou nejlepšími lidmi, kteří sestavují funkční základní systém založený na jejich technologii.

repo společnosti Google

původně vyvinuté, aby se vyrovnalo s množstvím repozitářů Git v projektu Android, se repo stalo docela populární i mezi vývojáři Yocto.

Repo je nástroj postavený na gitu; používá „manifest soubor“ klonovat a vytáhnout sadu repozitářů Git všechny ve stejnou dobu.
repo manifest je .xml dokument obsahující odkazy na repozitáře git (spolu s jejich verzemi), repo může použít manifest k naplnění adresáře se všemi zdroji pocházejícími z několika repozitářů Git potřebných k vytvoření projektu.

stejný manifest může repo použít také k udržení pod kontrolou (synchronizace) zdrojů projektu při provádění změn proti proudu.

několik výrobců křemíku poskytuje manifesty pro jejich vývoj a uvolňování větví v těchto dnech, takže návrháři mohou snadno zkontrolovat výchozí bod pro své vlastní produkty.

Yocto-based product development

BSP engineer obvykle začíná od silicon vendor repo manifestu k pokladně verzi softwaru pro referenční návrh (což je návrh poskytnutý samotným prodejcem křemíku nebo jedním z jeho partnerů, který obsahuje stejný nebo podobný SoC jako ten, na kterém je nový produkt založen). Inženýr provádí změny bootloaderu a jádra Linuxu, aby se ujistil, že hardware vybraný elektronickým inženýrem má správnou softwarovou podporu na nízké úrovni (např. ovladače zařízení ,strom zařízení, konfigurace jádra atd.).

účelem produktu je spustit jednu nebo více aplikací, proto inženýr BSP / OS zajišťuje, že všechny závislosti aplikací jsou vytvářeny pro systém. Inženýři vyvíjející aplikaci potřebují Software Develpment Kit (SDK) pro křížovou kompilaci a propojení aplikace, proto jim BSP/OS engineer
poskytne takovou sadu a díky Yocto se to stalo docela přímočarým.

Embedded Linux good practice

repo manifesty používané pro vývoj obvykle obsahují odkaz na vývojové větve, což znamená, že repo načte nejnovější odevzdání pro tyto větve.

pokud použijete stejný manifest k načtení projektu později, můžete načíst jinou verzi kódu! To je naprosto v pořádku pro vývoj, protože se chcete držet nejnovější verze vašeho projektu, ale jedna z vašich vývojových verzí se nakonec stane vydáním, a proto musíte „vyfotit“ tuto přesnou verzi zdrojů použitých ke generování verze softwaru, která pokračuje v projektu. Pokud tak neučiníte, může vás vystavit právním potížím, protože nebudete moci regenerovat stejnou sestavu počínaje zdroji, proto nebudete moci provést změnu nad konkrétním vydáním, což nutí zákazníka znovu otestovat celý systém, protože budete nuceni opravit chybu nebo přidat novou funkci na nejnovější verzi softwaru.

také, pokud nechcete vzít tyto snímky, neexistuje žádný způsob, jak můžete spustit bisect na zdrojích projektu zjistit, který commit porušil funkce, které tak zoufale potřebují. Při navrhování vývojového procesu najděte způsob, jak automaticky generovat repo manifesty s přesnými commity v nich, abyste je mohli uložit spolu s verzemi, abyste později znovu zkontrolovali stejné zdroje a udělali vše, za co jste placeni.

kopírovat zdroje v domě

mějte také na paměti, že 99.9% zdrojů, které jdou uvnitř vašeho produktu, pochází z komunity s otevřeným zdrojovým kódem, což znamená, že nemáte žádnou záruku, že stejné zdroje budou znovu k dispozici ke stažení. Jako designér se musíte chránit před změnami a chybami proti proudu. Uchovávejte kopii všech relevantních zdrojů v domě a najděte způsob, jak je připojit zpět do systému sestavení. Také možná budete chtít zrcadlit některé repozitáře, které používáte nejvíce, protože někdy se servery git proti proudu mohou náhle stát nedostupnými. Pokud nemáte interní kopii, budete zaseknuti, dokud se servery nevrátí online.

v ByteSnap máme plně automatizovaný způsob uvolňování projektů založených na Yocto, takže můžeme získat zpět zdroje, které jdou do vydání, a také znovu vytvořit stejné vydání později. Kopie balíčků s otevřeným zdrojovým kódem uchováváme automaticky, takže nezažíváme žádné prostoje způsobené vadnými servery po celém světě. Kromě toho zálohujeme vše každý den, abychom mohli zaručit, že žádná práce nebude ztracena ani v případě katastrofy na místě.

Fabrizio Castro
Fab je senior softwarový inženýr. Bakalářský a magisterský titul získal na Politecnico di Milano v italském Miláně. Má 20 let zkušeností s všestranným vývojem softwaru (služby ,databáze, aplikace, vědecký software, firmware, RTOS, ovladače zařízení, Linuxové jádro atd.), strávil prací v akademické sféře a průmyslu. Fab je spoluautorem vědeckých prací a knih a pracoval na patentech. Kromě výzkumu a vývoje se specializuje na vývoj Embedded Linuxu-dodává nejmodernější návrhy pohánějící úspěšné vědecké, průmyslové, komerční a vojenské produkty. Fab byl také lektorem a učil vysokoškoláky na některé z nejprestižnějších univerzit v Evropě. Pro více informací o ByteSnap design navštivte http://www.bytesnap.co.uk.

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna.