Pe căcarda mea funcționează Linux

Traducerea articolului din blogul inginerului George Hilliard

Pe căcarda mea funcționează Linux
Clickabil

Sunt inginer în sisteme încorporate. În timpul liber, deseori caut lucruri pe care le pot folosi în proiectarea sistemelor viitoare sau ceva din domeniile mele de interes.

Una dintre aceste domenii este calculatoarele ieftine capabile să suporte Linux, iar cu cât sunt mai ieftine, cu atât mai bine. Așa că m-am scufundat într-o vizuină profundă de procesoare mai puțin cunoscute.

M-am gândit: „Aceste procesoare sunt atât de ieftine încât practic ar putea fi date gratis”. Și după un timp, mi-a venit ideea să fac o placă goală pentru Linux în format de carte de vizită.

De îndată ce m-am gândit la asta, am decis că ar fi foarte cool să fac asta. Eu deja văzusem carte de vizită electronice la aceasta, și aveau diverse funcții interesante, cum ar fi emularea cardurilor flash, clipirea ledurilor sau chiar transmiterea wireless de date. Totuși, nu am întâlnit cărți de vizită care să suporte Linux.

Așa că mi-am făcut una.

Aceasta este versiunea finalizată a produsului. Un computer minim complet pe ARM, pe care rulează versiunea mea specială de Linux, creată cu ajutorul Buildroot.

Pe căcarda mea funcționează Linux

În colțul ei se află un port USB. Dacă o conectezi la un computer, se pornește în aproximativ 6 secunde și este vizibil ca un card flash și un port serial virtual, prin care poți accesa shell-ul plăcii. Pe stick se află un fișier README, o copie a CV-ului meu și câteva fotografii de-ale mele. În shell există câteva jocuri, clasice din Unix, cum ar fi fortune și rogue, o versiune mică a jocului 2048 și un interpret MicroPython.

Totul este realizat cu ajutorul unui microchip flash foarte mic de 8 MB. Bootloader-ul încapă în 256 KB, kernel-ul ocupă 1,6 MB, iar întreaga sistem de fișiere root – 2,4 MB. Așadar, rămâne mult spațiu pentru cardul virtual. Există, de asemenea, un director personal accesibil pentru scriere – dacă cineva face ceva ce dorește să păstreze. Totul este, de asemenea, salvat pe chip-ul flash.

Întreaga unitate costă mai puțin de 3 $. Este suficient de ieftin pentru a putea fi dat. Dacă ai primit de la mine o astfel de unitate, asta înseamnă că cel mai probabil încerc să te impresionez.

Proiectare și asamblare

Am proiectat și asamblat totul singur. Este munca mea și îmi place, iar cea mai mare parte a dificultăților a constat în găsirea de piese suficient de ieftine pentru un astfel de hobby.

Alegerea procesorului a fost cea mai importantă decizie care a influențat costul și fezabilitatea proiectului. După cercetări active, am ales F1C100s, un procesor relativ puțin cunoscut fabricat de Allwinner, optimizat din punct de vedere al costurilor (adică extrem de ieftin). Într-un singur corp se află atât RAM, cât și CPU. Am cumpărat procesoarele de pe Taobao. Toate celelalte componente au fost achiziționate de pe LCSC.

Am comandat plăcile de la JLC. Pentru 8 dolari mi-au făcut 10 copie. Calitatea lor este impresionantă, mai ales pentru un astfel de preț; nu sunt atât de rafinate ca cele de la OSHPark, dar tot arată bine.

Prima serie am făcut-o de culoare neagră mată. Arătau frumos, dar erau foarte murdare.

Pe căcarda mea funcționează Linux

Am avut câteva probleme cu prima serie. În primul rând, conectorul USB nu era suficient de lung pentru a se potrivi bine în orice porturi USB. În al doilea rând, traseele pentru flash erau realizate greșit, dar am rezolvat asta îndoind contactele.

Pe căcarda mea funcționează Linux

După ce am verificat totul în funcțiune, am comandat o nouă serie de plăci; o fotografie a uneia dintre ele o puteți vedea la începutul articolului.

Datorită dimensiunii reduse a tuturor acestor componente mici, am decis să recurg la sudura prin refuzare [reflow solder] folosind o cuptor ieftin. Am acces la o mașină de tăiat cu laser, așa că am tăiat un șablon pentru sudare dintr-o folie de laminare. Șablonul s-a realizat destul de bine. Orificiile pentru contactele procesorului cu diametrul de 0,2 mm necesitau o atenție deosebită pentru a fi fabricate de calitate – era critic să se focalizeze corect laserul și să se ajusteze puterea acestuia.

Pe căcarda mea funcționează Linux
Pentru a susține placa în timpul aplicării pastei, alte plăci sunt foarte utile

Am aplicat pasta de sudură și am aranjat componentele manual. M-am asigurat că în proces nu s-a folosit plumb – toate plăcile, componentele și pasta respectă standardul RoHS – pentru a nu avea remușcări când le voi da oamenilor.

Pe căcarda mea funcționează Linux
Cu această serie am avut câteva erori, totuși pasta de sudură iartă greșelile, iar totul s-a asamblat corect.

Fiecare componentă necesita aproximativ 10 secunde, așa că am încercat să fac numărul minim. Mai multe detalii despre proiectarea plăcii pot fi citite într-un alt articol detaliat de-al meu.

Lista materialelor și costurile

Am respectat un buget strict. Și cărticica de vizită a ieșit exact așa cum mi-am imaginat – nu-mi pare rău să o împărtășesc! Desigur, nu o voi împărți fiecăruia, deoarece producerea fiecărui exemplar necesită timp, iar timpul meu în costul cărticii de vizită nu este inclus (este, într-un fel, gratuit).

Componentă
Preț

F1C100s
$1.42

PCB
$0.80

8MB flash
$0.17

Toate celelalte componente
$0.49

În concluzie
$2.88

Desigur, mai sunt și alte cheltuieli greu de calculat, cum ar fi livrarea (deoarece aceasta s-a distribuit între componentele destinate mai multor proiecte). Cu toate acestea, pentru placa care suportă Linux, este cu siguranță foarte ieftin. Această divizare oferă, de asemenea, o idee bună despre cât de mult îi costă pe companie fabricarea dispozitivelor din segmentul de prețuri cel mai scăzut: puteți fi siguri că le costă chiar mai puțin decât pe mine!

Funcționalități

Ce să zic? Placa încarcă un Linux foarte tăiat în 6 secunde. Din cauza factorului de formă și prețului, placa nu are I/O, suport de rețea, sau un volum semnificativ de stocare pentru a rula programe grele. Cu toate acestea, am reușit să încap într-unul dintre imaginile de firmware o mulțime de lucruri interesante.

USB

Cu USB s-ar fi putut gândi la multe lucruri interesante, dar am ales cea mai simplă variantă pentru ca oamenii să aibă șanse mari să funcționeze, în cazul în care decid să încerce cărticica mea de vizită. Linux permite plăcii să se comporte ca un «dispozitiv» de suport Gadget Framework. Unele drivere le-am preluat din proiectele anterioare care includeau acest procesor, așa că am acces la toată funcționalitatea platformei USB gadget framework. Am decis să emulez un flash drive generat anterior și să permit accesul la shell printr-un port serial virtual.

Shell

După logare ca utilizator root pe consola serială, se pot rula următoarele programe:

  • rogue: un joc clasic de aventură din Unix despre temnițe;
  • 2048: un joc simplu 2048 în modul consolei;
  • fortune: afișează diverse afirmații memorabile. Am decis să nu includ toată baza de citate pentru a rămâne loc pentru alte funcții;
  • micropython: un interpret Python foarte mic.

Emularea Flash Drive

În timpul compilării, instrumentele de construire generează o imagine mică FAT32 și o adaugă ca unul dintre partițiile UBI. Subsistemul gadget Linux o prezintă PC-ului ca un dispozitiv de stocare.

Dacă sunteți curios să vedeți ce se află pe stick-ul USB, cel mai simplu este să faceți acest lucru consultând sursele. Acolo se află de asemenea câteva fotografii și CV-ul meu.

Resurse

Surse

Structura mea Buildroot este disponibilă pe GitHub — thirtythreeforty/businesscard-linux. Acolo este codul pentru generarea imaginii NOR pe care o instalați folosind modul de descărcare prin USB al procesorului. De asemenea, există toate definițiile pachetului pentru jocuri și alte programe pe care le-am inclus în Buildroot după ce totul a funcționat. Dacă doriți să folosiți F1C100s în proiectul dumneavoastră, aceasta va fi un excelent punct de plecare (nu ezitați să întrebați-mă).
Am folosit un proiect excelent Linux v4.9 pentru F1C100s realizat de Icenowy, pe care l-am adaptat puțin. Pe placa mea funcționează aproape standard v5.2. Este disponibil pe GitHub — thirtythreeforty/linux.
Cred că am astăzi cel mai bun port U-Boot pentru F1C100s din lume, și este parțial bazat pe lucrările lui Icenowy (în mod surprinzător, a fost o sarcină destul de neplăcută să fac U-Boot să funcționeze corect). De asemenea, poate fi găsit pe GitHub — thirtythreeforty/u-boot.

Documentația pentru F1C100s

Am găsit o documentație destul de sărăcăcioasă pentru F1C100s, și o public aici:

Pentru curioși, încarc schema proiectului meu.

Pe căcarda mea funcționează Linux

Concluzie

Am învățat multe în procesul de dezvoltare a acestui proiect – acesta este primul meu proiect în care am folosit un cuptor pentru lipirea prin topire. De asemenea, am învățat cum să găsesc resurse pentru componente cu documentație slabă.

Am folosit experiența acumulată lucrând cu Linux încorporat și experiența dezvoltării plăcilor. Proiectul nu este fără defecte, totuși arată bine toate abilitățile mele.

Pentru cei interesați de detalii despre lucrul cu Linux încorporat, vă propun să citiți seria mea de articole despre acesta: Stăpânirea Linux-ului Înglobat. Acolo explic în detaliu cum să creați soft și hardware de la zero pentru sisteme Linux mici și ieftine, asemănătoare cu această vizitcarda a mea.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster