Learning Linux for embedded systems
am fost întrebat recent cum o persoană cu experiență în programarea sistemelor încorporate cu procesoare pe 8 biți, cum ar fi PIC, precum și procesoare pe 32 de biți, cum ar fi PowerPC, dar fără experiență Linux, poate învăța cum să folosească Linux încorporat.
ceea ce recomand întotdeauna unui astfel de programator de sisteme încorporate este acesta: priviți Linux încorporat ca două părți, partea încorporată și partea Linux. Să luăm în considerare mai întâi partea Linux.
partea Linux
sistemele de Operare abundă și opțiunile sunt multe pentru un sistem încorporat, atât proprietar, cât și open source. Linux este una dintre aceste opțiuni. Indiferent de ceea ce utilizați pentru gazda dvs. de dezvoltare, indiferent dacă este Linux sau Windows sau Mac, trebuie să învățați cum să programați folosind sistemul de operare țintă. În acest sens, utilizarea Linux încorporat nu este foarte diferită de utilizarea VXworks, WindowCE sau a altui sistem de operare. Aveți nevoie de o înțelegere a modului în care este proiectat sistemul de operare, cum să configurați sistemul de operare și cum să programați folosind interfața sa de programare a aplicațiilor (API).
câțiva factori fac învățarea cum să programați Linux mai ușor decât alte sisteme de Operare încorporate. Veți găsi multe cărți și tutoriale despre Linux, precum și Unix din care este derivat — mult mai mult decât pentru alte sisteme de Operare. Resursele Online Pentru Linux sunt ample, în timp ce alte sisteme de Operare au o prezență mult mai mică sau una condusă de producătorul sistemului de operare. Linux este open source și puteți citi codul pentru a înțelege exact ceea ce face sistemul de operare, lucru care este adesea imposibil cu un sistem de operare proprietar distribuit ca binare. (Cu siguranță nu recomand să citiți sursa Linux pentru a încerca să învățați cum să programați Linux. Este ca și cum ai încerca să înveți să conduci studiind cum funcționează transmisia unei mașini.)
cel mai important factor care diferențiază Linux de alte sisteme de operare este că același kernel este utilizat pentru toate sistemele, de la cele mai mici plăci încorporate, la sisteme desktop, la ferme mari de servere. Aceasta înseamnă că puteți învăța o cantitate mare de programare Linux pe desktop într-un mediu, care este mult mai flexibil decât utilizarea unei plăci țintă cu toate complexitățile conectării la țintă, descărcarea unei programări de testare și rularea testului. Toate conceptele de bază și cele mai multe API-uri sunt aceleași pentru desktop Linux și Linux încorporat.
instalarea Linux
puteți instala o distribuție Linux desktop pe sistemul dvs. de dezvoltare, înlocuind sistemul Windows sau Mac, dar aceasta poate fi o piesă destul de mare pentru a mușca la un moment dat, deoarece probabil va trebui să configurați e-mailul, să învățați noi instrumente și să veniți la viteză cu o interfață desktop diferită. Ai putea instala Linux într-un mediu dual-boot, în cazul în care utilizați mediul vechi pentru e-mail, etc., și utilizați sistemul Linux pentru învățare. Acest lucru poate fi destul de ciudat, deoarece trebuie să închideți un mediu pentru a-l aduce pe celălalt. În plus, a face fie într-un mediu corporativ poate fi impracticabil sau imposibil. Oamenii preferă să susțină un mediu cunoscut, nu unul pe care l-ați ales.
o modalitate mai ușoară este să creați un mediu de mașină virtuală pe sistemul dvs. actual de dezvoltare. Pentru gazdele Windows, puteți instala VMware Player sau VirtualBox, iar pe Mac, puteți instala Parallels sau VMWare Fusion. Utilizarea unui VM vă oferă mult mai multă flexibilitate. Puteți instala o distribuție Linux desktop, cum ar fi Ubuntu sau Fedora. Puteți utiliza această distribuție pentru a vă familiariza cu conceptele de bază Linux, pentru a afla shell-ul de comandă și pentru a învăța cum să construiți și să rulați programe. Puteți reconfigura kernel-ul sau încărcați driverele, fără îngrijorarea că vă veți prăbuși sistemul desktop. Puteți construi întregul mediu de kernel și aplicație, similar cu ceea ce ați putea face cu un mediu de dezvoltare încrucișată pentru o țintă Linux încorporată.
dacă VM-ul dvs. care rulează Linux se blochează, pur și simplu reporniți VM-ul. Blocarea nu afectează alte lucruri pe care le-ați putea face în sistemul dvs. de dezvoltare, cum ar fi citirea unei pagini web despre cum să construiți și să instalați un driver sau scrierea unui e-mail la una dintre numeroasele liste de corespondență de asistență.
unele dintre produsele VM au caracteristici instantanee care vă permit să luați un punct de control al unei configurații de lucru cunoscute, la care puteți reveni dacă nu puteți corecta cu ușurință un accident. Acest instantaneu este mult mai ușor decât încercarea de a salva un sistem desktop care se prăbușește sau o placă țintă care nu răspunde.
un VM Linux care rulează pe desktop nu este un model perfect pentru un mediu Linux încorporat. VM emulează hardware-ul unui sistem desktop, cu un set limitat de dispozitive care este puțin probabil să se potrivească cu o țintă reală încorporată. Dar obiectivul nostru în acest moment nu este modelarea unei ținte reale (ceva ce vom discuta mai târziu), ci crearea unui mediu în care puteți învăța cu ușurință conceptele și programarea Linux.
acesta este primul pas: creați un VM și instalați o distribuție Linux desktop pe VM. Vom alege de aici în următoarea tranșă.
Michael Eager este consultant principal la Eager Consulting din Palo Alto, California. Are o experiență de peste patru decenii în dezvoltarea de compilatoare, depanatoare și simulatoare pentru o gamă largă de arhitecturi de procesoare utilizate în sistemele încorporate. Clienții săi actuali și foști includ companii majore de semiconductori și dezvoltatori de sisteme. Michael a fost membru al Comitetului standard ISO C++ și al comitetelor ABI pentru mai multe arhitecturi de procesoare. Este președintele Comitetului pentru Standarde de depanare pentru DWARF, un format de date de depanare utilizat pe scară largă. Este activ în comunitățile open-source și Linux.
link-uri conexe:
- învățarea Linux pentru sisteme încorporate
- Noțiuni introductive cu Linux încorporat: partea a doua
- Noțiuni introductive cu Linux încorporat: Partea A treia
- Noțiuni introductive cu Linux încorporat: partea a patra
- Noțiuni introductive cu Linux încorporat: partea a cincea
- Noțiuni introductive cu Linux încorporat: Partea A șasea
- Noțiuni introductive cu Linux încorporat: partea a șaptea