Oversættelse af artiklen fra ingeniør George Hilliard
Klikbar
Jeg er ingeniør inden for indbyggede systemer. I min fritid søger jeg ofte efter hvad jeg kan bruge i designet af fremtidige systemer, eller noget relateret til mine interesser.
Et sådant område – billige computere, der kan køre Linux, og jo billigere, desto bedre. Derfor gravede jeg mig ned i en dyb kaninhul af mindre kendte processorer.
Jeg tænkte: "Disse processorer er så billige, at man næsten kan give dem væk." Og efter noget tid fik jeg ideen til at lave et bare kort til Linux i visitkortformat.
Så snart jeg tænkte på det, besluttede jeg, at det ville være virkelig fedt at lave. Jeg havde allerede op til , og de havde forskellige interessante funktioner, som emulering af flash-drev, blinkende lys eller endda trådløs dataoverførsel. Men jeg havde ikke set visitkort, der understøttede Linux.
Så jeg lavede mig et sådant.
Dette er den færdige version af produktet. En fuldt funktionel minimum computer på ARM, som kører min specielle version af Linux, lavet ved hjælp af Buildroot.

I hjørnet har den et USB-port. Når den tilsluttes til en computer, starter den op på omkring 6 sekunder og den ses som et flash-drev og en virtuel seriell port, hvor man kan logge ind i kortets terminal. På flashdrevet ligger der en README-fil, en kopi af mit CV og et par af mine billeder. I terminalen er der et par spil, klassikere fra Unix som fortune og rogue, en mindre version af spillet 2048, og en MicroPython fortolker.
Alt dette er lavet ved hjælp af en meget lille flash-chip på 8 Mb. Bootloaderen fylder 256 Kb, kernen fylder 1,6 Mb, og hele roden filsystemet fylder 2,4 Mb. Så der er meget plads tilbage til det virtuelle flashdrev. Der er også et hjemmemappe, der er skrivbar – hvis nogen laver noget, de ønsker at gemme. Alt dette gemmes også på flash-chippen.
Hele enheden koster mindre end $3. Den er så billig, at man kan give den væk. Hvis du har fået en sådan enhed fra mig, betyder det, at jeg sandsynligvis prøver at imponere dig.
Design og samling
Jeg har selv designet og samlet alt. Dette er mit arbejde, og jeg kan godt lide det, og størstedelen af udfordringerne bestod i at finde tilstrækkeligt billige dele til en sådan hobby.
Valget af processor var den vigtigste beslutning, der påvirkede projektets omkostninger og gennemførlighed. Efter grundige undersøgelser valgte jeg F1C100s, en relativt ukendt processor fra Allwinner, som er optimeret til omkostninger (dvs. ekstremt billig). Både RAM og CPU er samlet i ét kabinet. Jeg købte processorerne på Taobao. Alle øvrige komponenter blev købt på LCSC.
Jeg bestilte kredsene hos JLC. For $8 fik jeg lavet 10 kopier. Kvaliteten imponerede mig, især til prisen; de er ikke så pæne som hos OSHPark, men ser stadig godt ud.
Den første batch gjorde jeg mat-sort. De så flotte ud, men var meget snavsede.

Der var et par problemer med den første batch. For det første var USB-stikket ikke langt nok til at passe sikkert i alle USB-porte. For det andet var sporene til flash lavet forkert, men jeg kom rundt om det ved at bøje stikkene.

Efter at have kontrolleret alt i drift bestilte jeg en ny batch af kredse; et billede af en af dem kan ses i begyndelsen af artiklen.
På grund af den lille størrelse af alle disse små komponenter besluttede jeg at bruge reflow soldering med en Jeg har adgang til en laser cutter, så jeg skar en stencil til lodning af lamineringen. Resultatet blev en stencil af rimelig kvalitet. Hullerne til processorens kontaktpunkter havde en diameter på 0,2 mm, hvilket krævede særlig omhu for at fremstille korrekt – det var kritisk vigtigt at fokusere laseren korrekt og vælge dens effekt.

For at holde kredsen på plads, mens jeg påførte pasta, kan andre kredse være nyttige.
Jeg påførte loddepasta og placerede komponenterne manuelt. Jeg sørgede for, at der ikke blev brugt bly nogen steder i processen – alle kredse, komponenter og pasta er i overensstemmelse med standarden – så jeg kan føle mig tryg, når jeg giver dem til folk.

Med denne batch tog jeg lidt fejl, men loddepastaen tilgiver fejl, og alt blev samlet ordentligt.
Det tog cirka 10 sekunder at placere hver komponent, så jeg forsøgte at holde antallet på et minimum. Mere information om designet af kortet kan læses i en anden .
Materialeliste og omkostninger.
Jeg har overholdt et stramt budget. Visiten blev præcis, som jeg havde tænkt – jeg har ikke noget imod at give den væk! Selvfølgelig vil jeg ikke dele den ud til alle og enhver, da det tager tid at fremstille hver enkelt kopi, og min tid er ikke en del af omkostningerne ved visiten (den er på en måde gratis).
Komponent
Pris
F1C100s
$1.42
PCB
$0.80
8MB flash
$0.17
Alle andre komponenter
$0.49
I alt
$2.88
Naturligvis er der også andre omkostninger, der er svære at beregne, som f.eks. forsendelse (da den er fordelt mellem komponenter, der er beregnet til flere projekter). Men for et kort med Linux-support er det bestemt meget billigt. Denne opdeling giver også et godt indtryk af, hvad virksomhederne betaler for at fremstille enheder i det laveste prissegment: du kan være sikker på, at det koster virksomhederne endnu mindre, end det gør for mig!
Muligheder
Hvad skal man sige? Kortet loader et meget skåret ned Linux på 6 sekunder. På grund af formfaktoren og omkostningerne har kortet ikke I/O, netværksunderstøttelse eller noget betydeligt lagervolumen til at køre tunge programmer. Ikke desto mindre har jeg formået at putte rigtig mange interessante ting i firmware-billedet.
USB
Man kunne finde på mange interessante ting med USB, men jeg valgte den enkleste løsning, så folk med stor sandsynlighed får det til at fungere, hvis de beslutter at prøve min visitkort. Linux lader kortet opføre sig som et "device" med støtte for . Nogle drivere tog jeg fra tidligere projekter, der inkluderede denne processor, så jeg har adgang til alle funktionerne i USB gadget framework. Jeg besluttede at emulere et på forhånd genereret flash-drev og give adgang til skallen via en virtuel seriel port.
Skal
Efter login som root-bruger på den serielle konsol kan følgende programmer køres:
- rogue: et klassisk Unix-eventyrspil om dungeon;
- 2048: et simpelt 2048-spil i konsoltilstand;
- fortune: viser forskellige pompøse citater. Jeg valgte ikke at inkludere hele citeringsdatabasen for at give plads til andre funktioner;
- : en meget lille Python-fortolker.
Emulering af Flash Drive
Under kompileringen genererer build-værktøjerne et lille FAT32-billede og tilføjer det som en af partitionerne i UBI. Linux-gadget subsystemet præsenterer det for PC'en som en lagringsenhed.
Hvis du er nysgerrig på, hvad der findes på USB-nøglen, så er det nemmeste at få indblik i . Der ligger også et par billeder og mit CV.
Ressourcer
Kilder
Mit Buildroot-træ er uploadet på GitHub — . Der er kode til genereringen af NOR-flash-billedet, som installeres ved hjælp af USB-nedlastningstilstand på processoren. Der er også alle pakke-definitioner til spil og andre programmer, som jeg har tilføjet til Buildroot, efter at det hele fungerede. Hvis du ønsker at bruge F1C100s i dit projekt, vil dette være et fremragende udgangspunkt (tøv ikke med ).
Jeg har brugt Linux v4.9 til F1C100s af Icenowy, som jeg gjorde nogle ændringer til. På mit kort kører næsten standard v5.2. Det er tilgængeligt på GitHub — .
Jeg tror, jeg har den bedste U-Boot-port til F1C100s i verden lige nu, og den er delvist også baseret på Icenowys arbejde (overraskende nok viste det sig at være en udfordrende opgave at få U-Boot til at fungere som ønsket). Den kan også findes på GitHub — .
Dokumentation til F1C100s
Jeg fandt en ret sparsom dokumentation til F1C100s og uploader den her:
- – grundlæggende oplysninger og pinout.
- – registreringsdefinitioner til F1C600, som faktisk er den samme som F1C100s, men omdøbt med angivet Linux-support (helt ærligt!).
- Jeg har aktivt brugt information fra diagrammet fra – udviklingsboardet, som jeg brugte til at konfigurere softwaren.
For de nysgerrige uploader jeg .

Konklusion
Jeg har lært meget i løbet af udviklingen af dette projekt – det er mit første projekt, hvor jeg har brugt en ovn til lodning med smeltet loddetin. Jeg har også lært at finde ressourcer til komponenter med dårlig dokumentation.
Jeg har brugt min erfaring med indlejret Linux og hardwareudvikling. Projektet har sine mangler, men viser dog mine færdigheder godt.
Til dem der er interesseret i detaljerne ved indlejret Linux, foreslår jeg at læse min serie af artikler om dette: . Her beskriver jeg i detaljer, hvordan man skaber software og hardware fra bunden til små og billige Linux-systemer, der ligner mit visitkort.
Kilde: habr.com
