Dezvoltare Linux încorporată: 5 pași pentru a începe

Iată ghidul de pornire rapidă pentru dezvoltare Linux încorporat că trebuie să generați un sistem încorporat de calitate industrială pentru placa care se află pe desktop. dezvoltare Linux încorporată este o zonă vastă și există o mulțime de documentație pentru a vă ajuta cu toate detaliile acestui tutorial vrea doar să vă ofere pași clari pentru a fi eficient în construirea sistemului dvs.

încorporată

Beaglebone Black este o placă excelentă pentru învățarea Linux încorporat

Construiți un sistem încorporat complet utilizând Buidroot

Buildroot și Yocto sunt cele mai importante instrumente Linux încorporate. Le-ai putea compara cu Distribuții Linux încorporate, dar, după cum veți vedea, sunt mult mai mult decât atât.

Pentru această postare de blog folosim Buildroot. Într-adevăr, la Openest credem că este mai ușor de utilizat la început și mult mai rapid de configurat. Dacă preferați Yocto, anunțați-ne în comentarii, probabil că vom actualiza acest articol mai târziu.

Să clonăm codul sursă al Buildroot și să mergem la sursele sale:

Să explorăm etichetele git disponibile (în prezent 2019.11) și să luăm această versiune:

Acum vrem să vă găsim Pachetul de asistență la bord Linux încorporat în folderul „bord”. Este clasificat în funcție de producătorul de carduri, deci este relativ ușor să-l găsești. Pentru restul acestui tutorial, vom folosi Beaglebone Black pe care îl veți găsi în directorul „board/beaglebone”. De aici vă sugerez să citiți fișierul readme.txt pe care îl veți găsi în acest director.

Acum aplicați configurația corespunzătoare și construiți-vă sistemul:

În cazul în care aveți un Raspberry-Pi 4, rulați:

Acum așteptați aproximativ 30 de minute (durează mai mult prima dată), Buildroot va descărca și va compila tot software-ul necesar. Acum puteți trece la pasul următor.

Aștepta ! Nu-mi găsesc cardul în directorul „bord”! Ok, acesta este ghinion. Aceasta înseamnă că nu este (încă?) Acceptat oficial în Buildroot. Fie că acesta este un card complet personalizat sau un card foarte rar, nu este surprinzător. În acest caz, vă sugerez să găsiți un card cu același microprocesor:

Acest lucru vă va oferi carduri cu același procesor, găsiți unul care este similar cu al dvs. Folosiți-l ca bază pentru a vă crea propriul folder în bord/și configurație în config/modificat pentru propriile nevoi.

Porniți sistemul Linux încorporat

La sfârșitul procesului de compilare, veți găsi cele mai utile fișiere în directorul de ieșire/imagini:

Care sunt toate fișierele din ieșirea/imaginile Buildroot ? Ei bine, sunt multe de spus. Foarte des veți găsi:

  • dtb: fișiere (binar arborele dispozitivului): sunt generate din fișiere dts: ele descriu practic hardware-ul din Linux, îi spun unde să găsească diferitele componente prezente pe un PCB și care se înregistrează și ce drivere să folosească.
  • zImage: imagine binară Linux, zImage este un format de imagine binară, dar există altele precum uImage.
  • u-boot.img: este o imagine de încărcare binară, de obicei folosim U-Boot. Inițializează unele componente (de obicei DDR, controler sdcard și Ethernet).
  • rootfs.ext2: sistemul de fișiere rădăcină: partiția unde Linux așteaptă să găsească toate fișierele necesare.
  • o imagine gata de utilizat sdcard.img care poate fi clipită pe un card SD.

În cazul Beaglebone Black, veți găsi și un fișier MLO. MLO este primul program de boot, realizează inițializarea de bază și apoi pornește U-Boot.

Cum să începeți harta:

Introduceți un microSD pe computer, verificați numele acestuia cu dmesg și blocați imaginea generată cu dd:

Avertizare ! Verificați de două ori dispozitivul de destinație, mai ales asigurați-vă că nu este sda, sdb: ați putea șterge în totalitate hard disk-ul computerului.

Acum introduceți cardul SD în Beaglebone Black și conectați sursa de alimentare. O veți vedea pornind pe consola dvs. prin UART. Acum vă puteți conecta la Buildroot. Utilizatorul implicit este root.

Instalați software suplimentar pe rootfs

Buildroot nu acceptă doar zeci de carduri hardware. De asemenea, conține peste 2300 de pachete. Termenul pachet nu este chiar corect, de fapt ar trebui să vorbim despre rețete de compilare. Oricum, puteți adăuga pachete noi la rootfs, pe computerul dvs. reveniți la directorul principal Buildroot:

Aceasta va deschide un GUI:

creați menuconfig pe Buildroot

Din meniul principal puteți explora software încorporat disponibil, accesați secțiunea „Pachete țintă”:

Dacă știți ce doriți să căutați, trebuie doar să tastați „/” și să introduceți numele aplicației sau bibliotecii pe care doriți să o adăugați.

Odată ce ați terminat, apăsați pe Escape, salvați noua configurație și relansați-l după ce ați revenit pe consolă.

Dezvoltă-ți propria aplicație încorporată

Cel mai bun lucru despre dezvoltarea Linux încorporat este că puteți utiliza orice limbă, de la Java la Go și chiar javascript. Desigur, trebuie să țineți cont de resursele disponibile pe placa dvs., dar în aceste zile vedem o mulțime de software nodeJS sau Python care rulează pe sisteme încorporate. Prin urmare, puteți alege limba preferată sau puteți transporta software-ul existent într-un platformă la bord.

Procesul de dezvoltare poate varia în funcție de proiectul dvs., dar puteți începe cu ușurință să dezvoltați pe orice computer Linux și să vă ocupați de aspectele specifice hardware mai târziu.

Pentru limbi necompilat, pur și simplu instalați instrumentul necesar cu instrumentul make menuconfig. Apoi mergeți la secțiunea următoare.

Pentru limbi compilate, cum ar fi C sau C ++, puteți instala direct un compilator pe sistemul dvs. de bord, dar acest lucru nu ar fi eficient. În schimb, puteți utiliza un lanț de instrumente Cross. Un lanț de instrumente încrucișate compilează software pentru o arhitectură diferită. În cazul nostru, vom compila câteva coduri ARM pe un PC.

Unde este canalul de compilare încrucișat al Buildroot ? Când ne-am generat sistemul de fișiere, Buildroot și-a compilat propriul lanț de instrumente. Din directorul principal Buildroot, îl puteți găsi în ieșire/gazdă:

Directorul de ieșire/gazdă este locul în care Buildroot plasează toate fișierele necesare sistemului gazdă (computerul dvs.) pentru a genera sistemul ţintă (Cardul dvs.). Tu vei gasi gcc și toate instrumentele sale asociate din directorul bin.

Compilatorul nu este totul. Probabil că doriți să vă conectați programul cu bibliotecile din bibliotecile de sistem de la bord. Acestea sunt localizate în ieșire/țintă ":

Acesta conține toate fișierele instalate pe sistemul dvs. țintă, inclusiv binare pentru bibliotecile și programele dvs. Puteți adăuga aceste căi la opțiunea „-L” a liniei de comandă gcc pentru a vă asigura că puteți face legătura cu aceste binare.

Fișierele antet nu sunt instalate în directorul țintă, dar le veți găsi în „output/build /”

Implementați software-ul pe sistemul dvs. încorporat

Când dezvoltați un program, doriți să îl testați foarte des. Așadar, aveți nevoie de un flux de lucru eficient care vă permite să transferați rapid programul și datele.

Există mai multe opțiuni pe masă, puteți încerca NFS sau SSHFS, dar sunt puțin mai dificil de configurat. În schimb, vom folosi doar comanda scp.

Cum se instalează un server ssh pe sistemul dvs. de bord ? Din nou, utilizați instrumentul de configurare Buildroot: face menuconfig. Acum puteți căuta dropbear, un server ssh mic conceput pentru sisteme încorporate. O veți găsi în „pachete țintă/aplicații/rețea/push bear”:

Dropbear se află în „pachete țintă/Aplicații de rețea/dropbear”, selectați-l.

Pentru a utiliza ssh, trebuie să facem rețeaua funcțională. Cel mai simplu mod de a face acest lucru este să folosiți Ethernet. Dacă nu aveți un port Ethernet pe card, puteți utiliza în schimb Wi-Fi cu wpa-supplicant. Putem spune Buildroot să ne asigurăm că interfața de rețea implicită primește o adresă IP de către DHCP în meniul „Configurare sistem/interfețe de rețea care trebuie configurate de DHCP”:

Introduceți aici numele interfeței implicite de rețea. Adesea este eth0.

Acum puteți rula make pentru a construi dropbear și a genera din nou toate rootf-urile. Apoi flash cardul SD și porniți sistemul. Acesta va primi o adresă IP de la serverul dvs. DHCP și dropbear-ul va fi pornit. Rețineți adresa IP a interfeței dvs.:

Acum tot ce trebuie să facem este să transferăm fișierul executabil în sistemul de bord. Pe computer, rulați:

Înapoi pe sistemul încorporat, puteți rula acum programul:

Mergeți mai departe în dezvoltarea Linux încorporat

Dezvoltarea Linux încorporată este un domeniu vast de expertiză. Experții încorporați în Linux necesită ani întregi să-l stăpânească.

Vă rugăm să rețineți că acest tutorial nu menționează securitatea, desigur că nu ar fi cea mai bună idee să rulați totul ca utilizator root sau să instalați dropbear pe produsul final! Pe de altă parte, este cu siguranță o modalitate bună de a începe.

Cu toate acestea, sperăm că acest articol vă va oferi câteva dintre cheile de care aveți nevoie. În funcție de nevoile dvs., vă sugerăm să citiți celelalte postări ale noastre de pe blog, pe Actualizări de sistem încorporate sau cum ar trebui să alegeți hardware pentru a asigura o integrare hardware/software adecvată.

Spuneți-ne ce părere aveți în secțiunea de comentarii. Căutăm să ne îmbunătățim tutorialele și orice comentarii sunt binevenite !