Sul mio biglietto da visita funziona Linux

Traduzione dell'articolo di blog ingegnere George Hilliard

Sul mio biglietto da visita funziona Linux
Cliccabile

Sono un ingegnere di sistemi embedded. Nel mio tempo libero, spesso cerco ciò che può essere utilizzato nella progettazione di futuri sistemi o qualcosa che rientra nei miei interessi.

Una di queste aree è rappresentata dai computer economici in grado di supportare Linux, e più sono economici, meglio è. Così, mi sono immerso in un profondo tunnel di processori poco conosciuti.

Ho pensato: «Questi processori sono così economici che praticamente potrebbero essere dati via gratis». E dopo un po' mi è venuta l'idea di creare una scheda nuda per Linux nel formato di un biglietto da visita.

Non appena ho pensato a questo, ho deciso che sarebbe stato molto interessante realizzarlo. Avevo già visto biglietti da visita , e presentavano varie funzioni interessanti, come l'emulazione di schede flash, l'illuminazione di luci lampeggianti o persino la trasmissione di dati senza fili. Tuttavia, non avevo mai incontrato biglietti da visita con supporto per Linux. fino a questo, e avevano varie interessanti funzionalità, come l'emulazione di schede flash, il lampeggiamento delle luci o persino la trasmissione dati wireless. Tuttavia, non ho mai incontrato biglietti da visita che supportassero Linux.

Così, me ne sono creato uno.

Questa è la versione finale del prodotto. Un computer minimale completo basato su ARM, su cui funziona la mia versione particolare di Linux, realizzata con Buildroot.

Sul mio biglietto da visita funziona Linux

Nell'angolo c'è una porta USB. Se la colleghi al computer, si avvia in circa 6 secondi e viene riconosciuta come una chiavetta USB e una porta seriale virtuale, tramite la quale è possibile accedere alla shell della scheda. Sulla chiavetta c'è un file README, una copia del mio curriculum e alcune mie fotografie. Nella shell ci sono alcuni giochi, classici di Unix come fortune e rogue, una versione ridotta del gioco 2048 e un interprete di MicroPython.

Tutto questo è realizzato con un microchip flash molto piccolo da 8 MB. Il bootloader occupa 256 KB, il kernel 1,6 MB, e l'intero file system root – 2,4 MB. Pertanto, rimane molto spazio per la flash virtuale. C'è anche una directory home accessibile in scrittura – se qualcuno fa qualcosa che desidera salvare. Anche tutto questo viene memorizzato sul chip flash.

L'intero dispositivo costa meno di $3. È abbastanza economico da poter essere distribuito. Se hai ricevuto un dispositivo del genere da me, significa che probabilmente sto cercando di impressionarti.

Progettazione e assemblaggio

Ho progettato e assemblato tutto da solo. È il mio lavoro e mi piace, e gran parte delle difficoltà consisteva nel trovare componenti abbastanza economici per un hobby del genere.

La scelta del processore è stata la decisione più importante che ha influenzato i costi e la fattibilità del progetto. Dopo ricerche approfondite, ho scelto l'F1C100s, un processore relativamente poco conosciuto prodotto da Allwinner, ottimizzato per il costo (cioè dannatamente economico). Sia la RAM che la CPU sono integrate in un'unica unità. Ho acquistato i processori su Taobao. Tutti gli altri componenti sono stati acquistati su LCSC.

Ho ordinato le schede da JLC. Per $8 mi hanno realizzato 10 copie. La loro qualità è impressionante, specialmente per quel prezzo; non sono così curate come quelle di OSHPark, ma comunque sembrano buone.

La prima serie l'ho realizzata in nero opaco. Erano belle da vedere, ma molto soggette a macchie.

Sul mio biglietto da visita funziona Linux

Con la prima serie ho avuto un paio di problemi. In primo luogo, il connettore USB non era abbastanza lungo da inserire in modo sicuro in tutte le porte USB. In secondo luogo, le tracce per la flash erano state realizzate in modo errato, ma l'ho aggirato piegando i contatti.

Sul mio biglietto da visita funziona Linux

Dopo aver verificato che tutto funzionasse, ho ordinato una nuova serie di schede; puoi vedere una foto di una di esse all'inizio dell'articolo.

A causa delle dimensioni ridotte di tutti questi piccoli componenti, ho deciso di utilizzare la saldatura a riflusso [reflow solder] con il forno economico.Ho accesso a un laser cutter, quindi ho realizzato un stencil per la saldatura utilizzando una pellicola per laminazione. Lo stencil è venuto abbastanza bene. I fori per i contatti del processore, da 0,2 mm, hanno richiesto particolare attenzione per una buona realizzazione: era fondamentale focalizzare correttamente il laser e regolarne la potenza.

Sul mio biglietto da visita funziona Linux
Per mantenere la scheda ferma durante l'applicazione della pasta, si prestano bene altre schede.

Ho applicato la pasta saldante e disposto i componenti a mano. Mi sono assicurato che in nessuna fase del processo fosse utilizzato piombo: tutte le schede, i componenti e la pasta rispettano lo standard RoHS per non avere rimorsi quando le distribuirò alle persone.

Sul mio biglietto da visita funziona Linux
Con questo lotto ho commesso qualche errore, ma la pasta saldante perdona e tutto si è assemblato correttamente.

Il posizionamento di ogni componente richiedeva circa 10 secondi, quindi ho cercato di ridurne il numero al minimo. Puoi leggere maggiori dettagli sulla progettazione della scheda in un altro mio articolo dettagliato.

Lista dei materiali e costi

Ho rispettato un budget rigoroso. E il biglietto da visita è venuto come previsto – non ho problemi a darlo! Ovviamente, non lo distribuirò a chiunque, poiché la produzione di ogni pezzo richiede tempo, e il mio tempo non è incluso nel costo del biglietto (è praticamente gratuito).

Componente
Prezzo

F1C100s
$1.42

PCB
$0.80

8MB flash
$0.17

Tutti gli altri componenti
$0.49

Totale
$2.88

Naturalmente, ci sono anche ulteriori spese che sono difficili da calcolare, come la spedizione (poiché è stata ripartita tra i componenti destinati a più progetti). Tuttavia, per una scheda compatibile con Linux, è decisamente molto economico. Inoltre, questa suddivisione offre un'ottima idea dei costi per le aziende che producono dispositivi nella fascia di prezzo più bassa: puoi essere sicuro che per le aziende sia ancora più conveniente di quanto lo sia per me!

Capacità

Cosa dire? La scheda carica un Linux estremamente ridotto in 6 secondi. A causa del fattore di forma e del costo, la scheda non ha I/O, supporto di rete o uno spazio di archiviazione significativo per eseguire programmi pesanti. Tuttavia, sono riuscito a inserire nel firmware un sacco di cose interessanti.

USB

Con USB si poteva pensare a molte cose interessanti, ma ho scelto l'opzione più semplice affinché le persone, con alta probabilità, potessero farlo funzionare se decidono di provare il mio biglietto da visita. Linux consente alla scheda di comportarsi come un "dispositivo" con supporto Gadget Framework. Alcuni driver li ho presi da progetti precedenti che includevano questo processore, quindi ho accesso a tutta la funzionalità della piattaforma USB gadget framework. Ho deciso di emulare una chiavetta USB generata in anticipo e dare accesso alla shell tramite una porta seriale virtuale.

Shell

Dopo aver effettuato il login come utente root sulla console seriale, è possibile eseguire i seguenti programmi:

  • rogue: il classico gioco di avventura su dungeon per Unix;
  • 2048: un semplice gioco di 2048 in modalità console;
  • fortuna: visualizzazione di citazioni altamente suggestive. Ho deciso di non includere l'intero database di citazioni per lasciare spazio ad altre funzionalità;
  • micropython: un interprete Python molto ridotto.

Emulazione di Flash Drive

Durante la compilazione, gli strumenti di build generano una piccola immagine FAT32 e la aggiungono come una delle partizioni UBI. Il sottosistema gadget Linux lo rappresenta al PC come un dispositivo di archiviazione.

Se sei curioso di vedere cosa appare nella chiavetta, la cosa più semplice da fare è consultare il codice sorgente. Lì troverai anche alcune foto e il mio curriculum.

Risorse

Codice sorgente

Il mio albero Buildroot è stato pubblicato su GitHub — thirtythreeforty/businesscard-linux. Qui c'è il codice per generare l'immagine flash NOR, che viene installata utilizzando la modalità di download via USB del processore. Ci sono anche tutte le definizioni dei pacchetti per i giochi e altre applicazioni che ho inserito in Buildroot dopo che tutto ha funzionato. Se desideri utilizzare F1C100s nel tuo progetto, questo sarà un ottimo punto di partenza (non esitare a farmi domande).
Ho usato progetto splendidamente realizzato Linux v4.9 per F1C100s realizzato da Icenowy, con alcune modifiche. Sulla mia scheda funziona quasi come la v5.2 standard. È disponibile su GitHub — thirtythreeforty/linux.
Credo di avere oggi il miglior port U-Boot per F1C100s al mondo, ed è parzialmente basato sul lavoro di Icenowy (inaspettatamente, far funzionare U-Boot come si deve si è rivelato un compito piuttosto complesso). Puoi trovarlo anche su GitHub — thirtythreeforty/u-boot.

Documentazione per F1C100s

Ho trovato una documentazione piuttosto scarsa per F1C100s e la carico qui:

Per gli interessati carico lo schema del mio progetto.

Sul mio biglietto da visita funziona Linux

Conclusione

Ho imparato molto durante lo sviluppo di questo progetto: è il mio primo progetto in cui ho utilizzato un forno per la saldatura a rifusione. Inoltre, ho imparato a trovare risorse per componenti con scarsa documentazione.

Ho sfruttato la mia esperienza lavorativa con Linux embedded e la progettazione di schede. Il progetto ha delle imperfezioni, ma mostra bene tutte le mie abilità.

Per chi fosse interessato ai dettagli sul lavoro con Linux embedded, consiglio di leggere la mia serie di articoli al riguardo: Mastering Embedded Linux. Lì spiego in dettaglio come creare software e hardware da zero per piccoli e economici sistemi Linux, simili a questa mia scheda di visita.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster