cum să supraviețuiești Linux încorporat-Partea 1 Procesul de dezvoltare Linux încorporat
procesul de dezvoltare Linux încorporat
kernel-ul Linux poate rula pe mai multe arhitecturi de calculatoare diferite, dintre care majoritatea sunt destul de populare în lumea încorporată. Toate pachetele de bază care permit sistemului de Operare să îndeplinească sarcinile de bază sunt potrivite pentru compilare încrucișată, prin urmare Linux poate fi la fel de omniprezent ca microcontrolerele și sistemele pe cip (soc).
o distribuție Linux este un sistem de operare realizat dintr – o colecție de software, care se bazează pe nucleul Linux și – adesea-un sistem de gestionare a pachetelor. Distribuția poate veni ca binare precompilate și pachete puse împreună
de către întreținătorii distribuției sau ca surse asociate cu instrucțiuni despre cum să le compilați (încrucișat).
în domeniul încorporat, deoarece platforma hardware este de obicei personalizată, proiectantul sistemului de operare preferă în general să genereze distribuția de la zero, pornind de la surse. Acest lucru oferă designerului un control absolut asupra a ceea ce ajunge în produsul
. În plus, inginerul Board Support Package (BSP) modifică codul de nivel scăzut pentru a face funcționalitatea de bază a sistemului de Operare să funcționeze pe produsul hardware specific.
reunirea tuturor componentelor software necesare pentru a genera distribuția Linux pentru un anumit produs încorporat a fost un coșmar, dar din fericire acest lucru nu mai este cazul.
mulți au împărtășit comunității open source sursele sistemelor de construcție capabile să preia toate componentele Software de pe Internet, să le compileze și să le conecteze împreună, până la generarea de imagini de instalare a sistemelor de operare cu drepturi depline. Câteva companii își dezvoltă și mențin propriul sistem de construire, altele compilează doar câteva dintre componentele de bază și apoi iau binare pre-construite pentru a finaliza sistemul de operare.
în 2010, un grup de lucru de la Linux Foundation a început să abordeze instrumente și procese pentru a permite crearea de distribuții Linux pentru Software încorporat (alias Linux încorporat). Un astfel de grup de lucru, cunoscut sub numele de Proiectul Yocto, s-a aliniat cu Open Embedded, un cadru cu obiective similare.
proiectul Yocto este un proiect open source al cărui accent este pe îmbunătățirea procesului de dezvoltare software pentru distribuțiile Linux încorporate. Proiectul Yocto oferă instrumente interoperabile, metadate și procese care permit
dezvoltarea rapidă și repetabilă a sistemelor încorporate bazate pe Linux.
proiectul Yocto alimentează în prezent cele mai populare distribuții Linux pentru sistemul încorporat, până la un punct în care uneori termenii „Embedded Linux” și „Yocto Project” sunt ușor confundați ca sinonime. Yocto nu este o distribuție Linux încorporată, ci creează una personalizată pentru dvs.
aspectul meta-straturilor Yocto
versiunea modernă a arhitecturii Yocto se bazează pe meta-straturi, care sunt directoare care conțin fișiere de configurare și reguli privind modul de compilare și asamblare a distribuțiilor Linux pentru sistemele încorporate.
de obicei, dar nu întotdeauna, un meta-strat trăiește pe propriul depozit git și oferă:
- pachete proprii (definite de rețete, fișiere. bb),
- modificări ale pachetelor furnizate de alte meta-straturi (.fișiere bbappend),
- mașini (.fișiere conf),
- fișiere de configurare (.fișiere conf),
- cod comun (.fișiere bbclass),
- licențe,
- și alți biți și piese minore.
un singur meta-strat se adresează în mod normal unui scop specific. Prin urmare, pentru a realiza un sistem complet de lucru, mai multe meta-straturi trebuie combinate împreună.
alegerea și potrivirea versiunilor
atunci când puneți împreună diferite componente software, trebuie să fiți atenți la versiunea fiecărei componente, deoarece versiunea greșită poate să nu funcționeze bine împreună cu celelalte componente sau chiar să rupă sistemul.
proiectul Yocto oferă versiuni ale componentelor cunoscute că funcționează bine împreună, dar acesta este doar punctul de plecare pentru produsul dvs.
nucleul Linux este o bucată mare de cod care trebuie să expună interfețele potrivite spațiului utilizatorului și trebuie să conțină driverele potrivite, pentru ca sistemul să funcționeze corect. Prin urmare, rolul vânzătorului de siliciu a devenit din ce în ce mai important în aceste zile, deoarece de obicei au propriile depozite de dezvoltare pentru kernel-ul Linux și bootloader-ul, prin urmare, sunt cei mai buni oameni pentru a pune la punct un sistem de bază de lucru bazat pe tehnologia lor.
repo Google
dezvoltat inițial pentru a face față multitudinii de depozite Git într-un proiect Android, repo a devenit destul de popular printre dezvoltatorii Yocto prea.
Repo este un instrument construit pe partea de sus a Git; folosește un” fișier manifest ” pentru a clona și trage un set de depozite Git în același timp.
un manifest repo este un .document xml care conține referințe la depozitele git (împreună cu versiunile lor), repo poate utiliza Manifestul pentru a popula un director cu toate sursele provenite din mai multe depozite Git necesare pentru a construi un proiect.
de asemenea, același manifest poate fi folosit de repo pentru a ține sub control (sincronizare) sursele proiectului atunci când amonte face modificări.
câțiva furnizori de siliciu oferă manifeste pentru dezvoltarea și lansarea ramurilor lor în aceste zile, astfel încât designerii să poată verifica cu ușurință punctul de plecare pentru propriile produse.
Yocto-based product development
inginerul BSP pornește de obicei de la manifestul repo al furnizorului de siliciu pentru a verifica versiunea software-ului pentru proiectarea de referință (care este un design furnizat de vânzătorul de siliciu însuși sau de unul dintre partenerii săi, care conține același SoC sau similar cu cel pe care se bazează noul produs). Inginerul face modificări la bootloader și kernel-ul Linux pentru a vă asigura că hardware-ul selectat de inginerul electronic are suport software adecvat de nivel scăzut (de exemplu, drivere de dispozitiv, arbore de dispozitiv, configurație kernel etc.).
scopul produsului este de a rula una sau mai multe aplicații, prin urmare, inginerul BSP/OS se asigură că toate dependențele aplicației(aplicațiilor) sunt construite pentru sistem. Inginerii care dezvoltă aplicația au nevoie de un kit de dezvoltare Software (SDK) pentru a compila și lega aplicația, prin urmare BSP/os engineer
le va oferi un astfel de kit, iar datorită lui Yocto acest lucru a devenit destul de simplu.
Embedded Linux good practice
manifestele repo utilizate pentru dezvoltare conțin de obicei referințe la ramurile de dezvoltare, ceea ce înseamnă că repo va prelua cea mai recentă comitere pentru acele ramuri.
dacă utilizați același manifest pentru a prelua proiectul la o dată ulterioară, puteți prelua o versiune diferită a codului! Acest lucru este perfect pentru dezvoltare, deoarece doriți să rămâneți cu cea mai recentă versiune a proiectului dvs., dar una dintre versiunile dvs. de dezvoltare va deveni în cele din urmă o versiune și, prin urmare, trebuie să „faceți o fotografie” a acelei versiuni precise a surselor utilizate pentru a genera versiunea software care merge pe proiect. Dacă nu faceți acest lucru, vă puteți expune la probleme legale, deoarece nu veți putea regenera aceeași construcție pornind de la surse, prin urmare nu veți putea face o modificare în partea de sus a unei versiuni specifice, forțând clientul să re-testeze întregul sistem, deoarece veți fi obligat să remediați eroarea sau să adăugați noua caracteristică deasupra celei mai recente versiuni a software-ului.
de asemenea, dacă nu luați aceste instantanee, nu există nici un fel puteți rula un bisect pe sursele de proiect pentru a afla care comite a rupt funcționalitatea aveți nevoie atât de disperat. Când proiectați procesul de dezvoltare, găsiți o modalitate de a genera automat manifeste repo cu comiteri precise în ele, astfel încât să le puteți salva alături de versiuni pentru a verifica din nou aceleași surse la o dată ulterioară și faceți tot ce sunteți plătit să faceți.
copiați sursele în casă
rețineți, de asemenea, că 99,9% din sursele care intră în produsul dvs. provin din comunitatea open source, ceea ce înseamnă că nu aveți nicio garanție că aceleași surse vor fi disponibile din nou pentru descărcare. Ca designer, trebuie să vă protejați împotriva schimbărilor și greșelilor făcute în amonte. Păstrați o copie a tuturor surselor relevante în casă și găsiți o modalitate de a le conecta înapoi la sistemul dvs. de construire. De asemenea, poate doriți să oglindiți unele dintre depozitele pe care le utilizați cel mai mult, deoarece uneori serverele git din amonte pot deveni brusc indisponibile. Dacă nu aveți o copie internă, veți fi blocat până când serverele vor reveni online.
la ByteSnap, avem un mod complet automatizat de eliberare a proiectelor bazate pe Yocto, astfel încât să putem recupera sursele care intră într-o versiune și, de asemenea, să reconstruim aceeași versiune la o dată ulterioară. Păstrăm copii ale pachetelor open source într-un mod automat, astfel încât să nu avem timp de oprire cauzat de servere defecte din întreaga lume. În plus, susținem totul în fiecare zi, astfel încât să putem garanta că nu se va pierde nicio muncă chiar și în caz de dezastru la fața locului.
Fabrizio Castro
Fab este un inginer software senior. A obținut diplomele de licență și master la Politecnico di Milano, în Milano, Italia. Are o experiență de 20 de ani în dezvoltarea de software complet (servicii, baze de date, aplicații, software științific, firmware, RTOS, drivere de dispozitiv, kernel Linux etc.), petrecut lucrând în mediul academic și industrie. Fab a co-autor lucrări științifice și cărți, și a lucrat la brevete. Pe lângă cercetare și dezvoltare, este specializat în dezvoltarea Linux încorporată – oferind modele de ultimă generație care alimentează produse științifice, industriale, comerciale și militare de succes. Fab a fost, de asemenea, lector și a predat studenți la unele dintre cele mai prestigioase universități din Europa. Pentru mai multe informații despre Bytesnap design vizitați http://www.bytesnap.co.uk.