Visittkortet mitt kjører Linux

Oversettelse av en artikkel fra blogginnlegg ingeniør George Hilliard

Visittkortet mitt kjører Linux
Klikkbar

Jeg er en innebygd systemingeniør. På fritiden ser jeg ofte etter noe som kan brukes i utformingen av fremtidige systemer, eller noe fra mine interesser.

Et slikt område er billige datamaskiner som kan kjøre Linux, og jo billigere jo bedre. Så jeg gravde ned et dypt kaninhull med obskure prosessorer.

Jeg tenkte: "Disse prosessorene er så billige at de praktisk talt kan gis bort gratis." Og etter en tid kom ideen til meg om å lage et bart kort for Linux i formfaktoren som et visittkort.

Når jeg tenkte på det, bestemte jeg meg for at det ville være en veldig kul ting å gjøre. Jeg har allerede sag elektronisk visittkort til det, og de hadde forskjellige interessante evner, som å emulere flash-kort, blinkende lyspærer eller til og med trådløs dataoverføring. Jeg har imidlertid ikke sett visittkort med Linux-støtte.

Så jeg laget meg en.

Dette er den ferdige versjonen av produktet. En komplett minimal ARM-datamaskin som kjører min egendefinerte versjon av Linux bygget med Buildroot.

Visittkortet mitt kjører Linux

Den har en USB-port i hjørnet. Hvis du kobler den til en datamaskin, starter den opp på omtrent 6 sekunder og er synlig som et flash-kort og en virtuell seriell port som du kan logge inn på kortskallet gjennom. På flash-stasjonen er en README-fil, en kopi av CV-en min og flere bilder av meg. Skallet har flere spill, Unix-klassikere som fortune og rogue, en liten versjon av spillet 2048 og en MicroPython-tolk.

Alt dette gjøres ved hjelp av en veldig liten 8 MB flash-brikke. Bootloaderen får plass i 256 KB, kjernen tar opp 1,6 MB, og hele rotfilsystemet tar opp 2,4 MB. Derfor er det mye plass igjen for den virtuelle flash-stasjonen. Det er også en hjemmekatalog som er skrivbar i tilfelle noen gjør noe de vil lagre. Alt dette er også lagret på en flash-brikke.

Hele enheten koster mindre enn $3. Det er billig nok å gi bort. Hvis du mottok en slik enhet fra meg, betyr det at jeg mest sannsynlig prøver å imponere deg.

Design og bygg

Jeg har designet og montert alt selv. Det er jobben min og jeg elsker den, og mye av utfordringen har vært å finne billige nok deler til hobbyen.

Valget av prosessor var den viktigste beslutningen som påvirket kostnadene og gjennomførbarheten av prosjektet. Etter omfattende research valgte jeg F1C100s, en relativt lite kjent prosessor fra Allwinner som er kostnadsoptimalisert (dvs. jævla billig). Både RAM og CPU er plassert i samme pakke. Jeg kjøpte prosessorer på Taobao. Alle andre komponenter ble kjøpt fra LCSC.

Jeg bestilte brettene fra JLC. De laget 8 eksemplarer til meg for $10. Kvaliteten deres er imponerende, spesielt for prisen; ikke like pent som OSHParks, men ser fortsatt bra ut.

Jeg laget den første batchen matt svart. De så vakre ut, men ble veldig lett tilsmusset.

Visittkortet mitt kjører Linux

Det var et par problemer med den første batchen. For det første var ikke USB-kontakten lang nok til å passe sikkert inn i noen USB-porter. For det andre ble flash-sporene laget feil, men jeg kom meg rundt dette ved å bøye kontaktene.

Visittkortet mitt kjører Linux

Etter å ha sjekket at alt fungerte, bestilte jeg et nytt parti med brett; Du kan se et bilde av en av dem i begynnelsen av artikkelen.

På grunn av den lille størrelsen på alle disse små komponentene, bestemte jeg meg for å ty til reflow lodding ved å bruke billig komfyr. Jeg har tilgang til en laserskjærer, så jeg brukte den til å kutte ut en loddesjablon fra lamineringsfilmen. Sjablongen ble ganske bra. Hullene med en diameter på 0,2 mm for prosessorkontaktene krevde spesiell forsiktighet for å sikre produksjon av høy kvalitet - det var avgjørende å fokusere laseren riktig og velge kraft.

Visittkortet mitt kjører Linux
Andre brett fungerer godt for å holde brettet mens du bruker lim.

Jeg brukte loddepasta og plasserte komponentene for hånd. Jeg sørget for at bly ikke ble brukt noe sted i prosessen – alle plater, komponenter og pasta holder standarden RoHS – for at samvittigheten min ikke skal plage meg når jeg deler dem ut til folk.

Visittkortet mitt kjører Linux
Jeg gjorde en liten feil med denne batchen, men loddepastaen tilgir feil, og alt gikk bra sammen

Det tok omtrent 10 sekunder å plassere hver komponent, så jeg prøvde å holde antallet komponenter på et minimum. Flere detaljer om kartdesign kan du lese i en annen min detaljerte artikkel.

Liste over materialer og kostnader

Jeg holdt meg til et strengt budsjett. Og visittkortet ble etter hensikten - jeg har ikke noe imot å gi det bort! Selvfølgelig vil jeg ikke gi det ut til alle, siden det tar tid å lage hver kopi, og tiden min blir ikke tatt med i kostnadene for visittkortet (det er på en måte gratis).

komponent
Pris

F1C100s
$1.42

PCB
$0.80

8 MB blits
$0.17

Alle andre komponenter
$0.49

Totalt
$2.88

Naturligvis er det også kostnader som er vanskelige å beregne, som levering (siden det er fordelt på komponenter beregnet på flere prosjekter). Men for et brett som støtter Linux, er det definitivt ganske billig. Denne sammenbruddet gir også en god idé om hvor mye det koster bedrifter å lage enheter i det laveste prissegmentet: du kan være sikker på at det koster bedrifter enda mindre enn det koster meg!

Evner

Hva skal jeg si? Kortet starter opp en veldig sterkt strippet Linux på 6 sekunder. På grunn av formfaktoren og kostnadene har ikke kortet I/O, nettverksstøtte eller noen betydelig mengde lagringsplass for å kjøre tunge programmer. Likevel klarte jeg å stappe en haug med interessante ting inn i fastvarebildet.

USB

Det var mange kule ting som kunne gjøres med USB, men jeg valgte det enkleste alternativet slik at folk var mer sannsynlig å få det til å fungere hvis de bestemte seg for å prøve visittkortet mitt. Linux lar kortet oppføre seg som en "enhet" med støtte Gadget Framework. Jeg tok noen av driverne fra tidligere prosjekter som inkluderte denne prosessoren, så jeg har tilgang til all funksjonaliteten til USB-gadget-rammeverket. Jeg bestemte meg for å etterligne en forhåndsgenerert flash-stasjon og gi skalltilgang via en virtuell seriell port.

shell

Etter å ha logget på som root, kan du kjøre følgende programmer på seriekonsollen:

  • rogue: et klassisk Unix-dungeon crawling-eventyrspill;
  • 2048: et enkelt spill av 2048 i konsollmodus;
  • formue: produksjon av ulike pretensiøse ordtak. Jeg bestemte meg for å ikke inkludere hele sitasjonsdatabasen her for å gi plass til andre funksjoner;
  • mikropyton: En veldig liten Python-tolk.

Flash Drive-emulering

Under kompilering genererer byggeverktøyene et lite FAT32-bilde og legger det til som en av UBI-partisjonene. Linux Gadget Subsystem presenterer sin PC som en lagringsenhet.

Hvis du er interessert i å se hva som vises på flash-stasjonen, er den enkleste måten å gjøre dette på ved å lese kilder. Det er også flere bilder og CV-en min.

Ресурсы

Kilder

Mitt Buildroot-tre er lagt ut på GitHub - thirtythreeforty/visitkort-linux. Det er kode for å generere et NOR-flash-bilde, som installeres ved hjelp av USB-nedlastingsmodusen til prosessoren. Den har også alle pakkedefinisjonene for spill og andre programmer som jeg presset inn i Buildroot etter at jeg fikk alt til å fungere. Hvis du er interessert i å bruke F1C100s i prosjektet ditt, vil dette være et flott utgangspunkt ( gjerne Still meg spørsmål).
jeg brukte vakkert gjennomført prosjekt Linux v4.9 for F1C100s av Icenowy, noe redesignet. Kortet mitt kjører nesten standard v5.2. Det er på GitHub - trettitrefirty/linux.
Jeg tror jeg har den beste porten for U-Boot for F1C100s i verden i dag, og den er også delvis basert på Icenowy sitt arbeid (overraskende nok var det en ganske frustrerende oppgave å få U-Boot til å fungere). Du kan også få det på GitHub - trettitrefirty/u-støvel.

Dokumentasjon for F1C100s

Jeg fant ganske sparsom dokumentasjon for F1C100s, og jeg legger den ut her:

Jeg laster det opp for de som er nysgjerrige. mitt prosjektdiagram.

Visittkortet mitt kjører Linux

Konklusjon

Jeg lærte mye under utviklingen av dette prosjektet - det var mitt første prosjekt med en reflow-loddeovn. Jeg lærte også å finne ressurser for komponenter med dårlig dokumentasjon.

Jeg brukte min eksisterende erfaring med innebygd Linux og brettutviklingserfaring. Prosjektet er ikke feilfritt, men det viser alle mine ferdigheter godt.

For de som er interessert i detaljene om å jobbe med innebygd Linux, foreslår jeg at du leser min serie med artikler om dette: Mestring av innebygd Linux. Der snakker jeg i detalj om hvordan man kan lage programvare og maskinvare fra bunnen av for bittesmå og billige Linux-systemer, som ligner på telefonkortet mitt.

Kilde: www.habr.com

Legg til en kommentar