Oversettelse av artikkelen fra ingeniør George Hilliard
Klikkbar
Jeg er ingeniør innen innebygde systemer. På fritiden leter jeg ofte etter noe som kan brukes i design av fremtidige systemer, eller noe innenfor mine interesser.
Et av disse områdene er billige datamaskiner som kan kjøre Linux, og jo billigere, jo bedre. Derfor har jeg gravd meg ned i en dyp kaninhule av lite kjente prosessorer.
Jeg tenkte: «Disse prosessorene er så billige at man nærmest kan dele dem gratis». Og etter en stund fikk jeg tanken om å lage et bare-kort for Linux i et visittkortformat.
Så snart jeg tenkte på det, bestemte jeg meg for at det ville vært veldig kult å lage. Jeg hadde allerede til , og de hadde en rekke interessante muligheter, som emulering av flash-minner, blinkende lys eller til og med trådløs datatransmisjon. Men visittkort med Linux-støtte hadde jeg ikke sett.
Så jeg laget meg et.
Dette er den ferdige versjonen av produktet. En fullverdig minimal datamaskin på ARM, som kjører min spesialversjon av Linux, laget med Buildroot.

I hjørnet har den en USB-port. Hvis man kobler den til en datamaskin, booter den på omtrent 6 sekunder og den vises som en flash-enhet og en virtuell seriell port, hvor man kan logge inn i kortets skall. På flash-enheten ligger det en README-fil, en kopi av CV-en min og noen av bildene mine. I skallet er det noen spill, klassikere fra Unix som fortune og rogue, en liten versjon av spillet 2048 og en MicroPython-tolk.
Alt dette er laget med en veldig liten 8 MB flash-brikke. Bootloaderen får plass i 256 KB, kjernen tar 1,6 MB, og hele rot-filsystemet er 2,4 MB. Derfor er det mye plass igjen for den virtuelle flash-enheten. Det finnes også hjemmemappe tilgjengelig for skriving – hvis noen gjør noe de ønsker å lagre. Alt dette lagres også på flash-brikken.
Hele enheten koster mindre enn $3. Den er billig nok til at man kan dele den. Hvis du har fått en slik enhet fra meg, betyr det mest sannsynlig at jeg prøver å imponere deg.
Design og montering
Jeg designet og samlet alt selv. Dette er arbeidet mitt, og jeg liker det, og størstedelen av utfordringene lå i å finne tilstrekkelig billige deler for en slik hobby.
Valg av prosessor var den viktigste beslutningen som påvirket kostnaden og gjennomføringen av prosjektet. Etter aktiv forskning valgte jeg F1C100s, en relativt lite kjent prosessor fra Allwinner, optimalisert for kostnad (dvs. utrolig billig). I en enkelt enhet er både RAM og CPU. Jeg kjøpte prosessorene på Taobao. Alle andre komponenter ble kjøpt på LCSC.
Kortene bestilte jeg fra JLC. For 8 dollar fikk jeg laget 10 kopier. Kvaliteten deres er imponerende, spesielt for prisen; de er ikke så pene som de fra OSHPark, men ser fortsatt bra ut.
Jeg laget den første batchen matte svarte. De så fine ut, men var veldig skitne.

Det var et par problemer med den første batchen. For det første var USB-kontakten ikke lang nok til å passe ordentlig i alle USB-porter. For det andre var sporene for flash laget feil, men jeg løste det ved å bøye kontaktene.

Etter å ha sjekket alt i bruk bestilte jeg en ny batch av kort; du kan se et bilde av ett av dem i begynnelsen av artikkelen.
På grunn av den lille størrelsen på alle disse små komponentene bestemte jeg meg for å bruke oppvarming av loddetinn [reflow solder] med hjelp av . Jeg har tilgang til en laser kutter, så jeg laget en stencil til lodding fra laminatorfilm. Stencilen ble ganske bra. Hullene for prosessorkontaktene med en diameter på 0,2 mm krevde spesiell oppmerksomhet for kvalitetsproduksjon – det var kritisk å fokusere laseren riktig og justere dens styrke.

For å holde kortet på plass under påføring av pasta, passer andre kort godt
Jeg påførte loddepasta og plasserte komponentene manuelt. Jeg passet på at det ikke ble brukt bly noe sted i prosessen – alle kort, komponenter og pasta overholder standarden – slik at jeg ikke skal få dårlig samvittighet når jeg gir dem bort til folk.

Med denne batchen traff jeg ikke helt, men loddepastaen tilgir feil, og alt ble samlet normalt.
Det tok omtrent 10 sekunder å plassere hver komponent, så jeg prøvde å holde antallet minimalt. Mer informasjon om design av kortet kan leses i en annen .
Liste over materialer og kostnad
Jeg holdt meg til et strengt budsjett. Visittkortet ble akkurat som tenkt – jeg har ingen betenkeligheter med å gi det bort! Selvfølgelig vil jeg ikke dele det ut til alle og enhver, siden produksjonen av hver enkelt tar tid, og tiden min er ikke inkludert i kostnadene for visittkortet (den er på en måte gratis).
CursorObserverMultiplexer
Pris
F1C100s
$1.42
PCB
$0.80
8MB flash
$0.17
Alle andre komponenter
$0.49
Totalt
$2.88
Det er åpenbart andre kostnader som er vanskelige å beregne, for eksempel frakt (siden det er fordelt mellom komponenter beregnet for flere prosjekter). Men for et brett med støtte for Linux er dette definitivt svært billig. Denne oppdelingen gir også en god indikasjon på hva det koster for selskaper å produsere enheter i det laveste prissegmentet: du kan være sikker på at det er enda billigere for dem enn det er for meg!
Funksjoner
Hva skal jeg si? Kortet laster et svært begrenset Linux på 6 sekunder. På grunn av formfaktoren og kostnaden har kortet ingen I/O, nettverksstøtte, eller noe betydelig lagringsvolum for å kjøre tunge programmer. Likevel klarte jeg å presse inn masse interessant innhold i firmware-bildet.
USB
Med USB kunne man finne på mye interessant, men jeg valgte det enkleste alternativet, slik at folk med stor sannsynlighet kan få alt til å fungere hvis de bestemmer seg for å prøve visittkortet mitt. Linux lar kortet oppføre seg som en "enhet" med støtte for . Jeg hentet noen drivere fra tidligere prosjekter som inkluderte denne prosessoren, så jeg har tilgang til all funksjonaliteten til USB gadget-rammeverket. Jeg bestemte meg for å emulere et forhåndsgenerert flash-stasjon og gi tilgang til skallet via en virtuell seriekontakt.
Skall
Etter innlogging som root-bruker på den serielle konsollen kan følgende programmer startes:
- rogue: et klassisk Unix-eventyrspill om huler;
- 2048: et enkelt spill i 2048 i konsollmodus;
- fortune: viser ulike pompøse sitater. Jeg bestemte meg for ikke å inkludere hele sitatdatabasen for å spare plass til andre funksjoner;
- : en veldig liten Python-compiler.
Emulering av Flash-enhet
Under kompileringen genererer byggverktøyene et lite FAT32-bilde og legger det til som en av partisjonene i UBI. Linux-gadget-subsystemet presenterer PC-en som en lagringsenhet.
Hvis du er interessert i å se hva som ligger på minneskortet, er det enklest å gjøre dette ved å bli kjent med . Der ligger det også noen bilder og CV-en min.
Ressurser
Kildene
Treverket mitt med Buildroot er delt på GitHub — . Der finner du koden for å generere NOR-flashbildet, som installeres ved hjelp av USB-nedlastingsmodus på prosessoren. Det er også alle pakke-definisjonene for spill og andre programmer som jeg la inn i Buildroot etter at alt fungerte. Hvis du ønsker å bruke F1C100s i prosjektet ditt, vil dette være et utmerket utgangspunkt (ikke nøl med å ).
Jeg brukte Linux v4.9 for F1C100s av Icenowy, som jeg har gjort noen endringer på. På kortet mitt fungerer nesten standard v5.2. Det ligger på GitHub — .
Jeg tror jeg har verdens beste port av U-Boot for F1C100s i dag, og den er delvis også basert på arbeidet til Icenowy (overraskende nok var det ganske vanskelig å få U-Boot til å fungere som det skulle). Den kan også finnes på GitHub — .
Dokumentasjonen for F1C100s
Fant en ganske knapp dokumentasjon for F1C100s, og legger den ut her:
- – generell informasjon og pinout.
- – registerdefinisjoner for F1C600, som faktisk er den samme som F1C100s, men omdøpt med påstått støtte for Linux (ha!).
- Jeg lånte aktivt informasjon fra skjemaet til – utviklingskortet jeg brukte for å konfigurere programvaren.
For de som er nysgjerrige, laster jeg opp .

Konklusjon
Jeg har lært mye under utviklingen av dette prosjektet – dette er mitt første prosjekt hvor jeg har brukt en ovn til å lodde med smeltelodd. Jeg lærte også å finne ressurser for komponenter med dårlig dokumentasjon.
Jeg har brukt min erfaring med innebygd Linux og erfaring med plateteknikk. Prosjektet har sine feil, men viser ganske bra alle mine ferdigheter.
For de som er interessert i detaljene om innebygd Linux, anbefaler jeg å lese min artikkelserie om dette: . Der forteller jeg detaljer om hvordan man lager programvare og maskinvare fra bunnen av for små og billige Linux-systemer som ligner på denne visittkortet mitt.
Kilde: habr.com
