Traducerea articolului din inginerului George Hilliard
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 la , ș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.

Î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.

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.

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 . 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.

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 – pentru a nu avea remușcări când le voi da oamenilor.

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 .
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 . 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;
- : 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 . Acolo se află de asemenea câteva fotografii și CV-ul meu.
Resurse
Surse
Structura mea Buildroot este disponibilă pe GitHub — . 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ă ).
Am folosit 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 — .
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 — .
Documentația pentru F1C100s
Am găsit o documentație destul de sărăcăcioasă pentru F1C100s, și o public aici:
- – informații generale și pinout.
- – definiții ale registrelor pentru F1C600, care este de fapt același cu F1C100s, dar redenumit cu suport declarat pentru Linux (ha!).
- Am împrumutat activ informații din schema de la – placa de dezvoltare pe care am folosit-o pentru setarea software-ului.
Pentru curioși, încarc .

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: . 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
