Mit visitkort kører Linux

Oversættelse af en artikel fra blogindlæg ingeniør George Hilliard

Mit visitkort kører Linux
Klikbar

Jeg er indlejret systemingeniør. I min fritid leder jeg ofte efter noget, der kan bruges i design af fremtidige systemer, eller noget ud fra mine interesser.

Et sådant område er billige computere, der kan køre Linux, og jo billigere jo bedre. Så jeg gravede ned et dybt kaninhul af obskure processorer.

Jeg tænkte: "Disse processorer er så billige, at de praktisk talt kan gives væk gratis." Og efter noget tid kom ideen til mig at lave et blottet kort til Linux i formfaktoren som et visitkort.

Da jeg tænkte over det, besluttede jeg, at det ville være en rigtig fed ting at lave. Jeg har allerede set elektronisk visitkort til det, og de havde forskellige interessante muligheder, såsom at emulere flash-kort, blinkende pærer eller endda trådløs datatransmission. Jeg har dog ikke set visitkort med Linux-understøttelse.

Så jeg lavede mig en.

Dette er den færdige version af produktet. En komplet minimal ARM-computer, der kører min brugerdefinerede version af Linux bygget med Buildroot.

Mit visitkort kører Linux

Den har en USB-port i hjørnet. Hvis du slutter den til en computer, starter den op på cirka 6 sekunder og er synlig som et flash-kort og en virtuel seriel port, hvorigennem du kan logge ind på kortskallen. På flashdrevet er en README-fil, en kopi af mit CV og flere billeder af mig. Skallen har flere spil, Unix-klassikere som fortune og rogue, en lille version af spillet 2048 og en MicroPython-fortolker.

Alt dette gøres ved hjælp af en meget lille 8 MB flash-chip. Bootloaderen har plads til 256 KB, kernen fylder 1,6 MB, og hele rodfilsystemet fylder 2,4 MB. Derfor er der meget plads tilbage til det virtuelle flashdrev. Der er også en hjemmemappe, der kan skrives, hvis nogen gør noget, de vil gemme. Alt dette er også gemt på en flash-chip.

Hele enheden koster mindre end $3. Det er billigt nok at give væk. Hvis du har modtaget sådan en enhed fra mig, betyder det, at jeg højst sandsynligt prøver at imponere dig.

Design og byg

Jeg har selv designet og monteret alt. Det er mit job, og jeg elsker det, og meget af udfordringen har været at finde billige nok dele til hobbyen.

Valget af processor var den vigtigste beslutning, der påvirkede projektets omkostninger og gennemførlighed. Efter omfattende research valgte jeg F1C100s, en relativt lidt kendt processor fra Allwinner, der er omkostningsoptimeret (dvs. forbandet billig). Både RAM og CPU er placeret i samme pakke. Jeg købte processorer på Taobao. Alle andre komponenter blev købt hos LCSC.

Jeg bestilte pladerne fra JLC. De lavede 8 kopier til mig for $10. Deres kvalitet er imponerende, især til prisen; ikke så pæn som OSHParks, men ser stadig godt ud.

Jeg lavede den første batch mat sort. De så smukke ud, men blev meget let snavsede.

Mit visitkort kører Linux

Der var et par problemer med den første batch. For det første var USB-stikket ikke langt nok til at passe sikkert ind i nogen USB-porte. For det andet var flashsporene lavet forkert, men jeg kom uden om dette ved at bøje kontakterne.

Mit visitkort kører Linux

Efter at have kontrolleret, at alt virkede, bestilte jeg et nyt parti brædder; Du kan se et billede af en af ​​dem i begyndelsen af ​​artiklen.

På grund af den lille størrelse af alle disse små komponenter, besluttede jeg at ty til reflow lodning ved hjælp af billig komfur. Jeg har adgang til en laserskærer, så den brugte jeg til at skære en loddestencil ud af lamineringsfilmen. Stencilen blev ret godt. Hullerne med en diameter på 0,2 mm til processorkontakterne krævede særlig omhu for at sikre højkvalitetsproduktion - det var afgørende at fokusere laseren korrekt og vælge dens effekt.

Mit visitkort kører Linux
Andre brædder fungerer godt til at holde brættet, mens du påfører pasta.

Jeg påførte loddepasta og placerede komponenterne i hånden. Jeg sørgede for, at der ikke blev brugt bly nogen steder i processen – alle plader, komponenter og pasta opfylder standarden RoHS - for at min samvittighed ikke skal plage mig, når jeg deler dem ud til folk.

Mit visitkort kører Linux
Jeg lavede en lille fejl med denne batch, men loddepastaen tilgiver fejl, og alt gik fint sammen

Hver komponent tog omkring 10 sekunder at placere, så jeg forsøgte at holde antallet af komponenter på et minimum. Flere detaljer om kortdesign kan læses i en anden min detaljerede artikel.

Liste over materialer og omkostninger

Jeg holdt mig til et stramt budget. Og visitkortet blev efter hensigten - jeg gider ikke give det væk! Jeg vil selvfølgelig ikke give det ud til alle, da det tager tid at lave hver kopi, og min tid er ikke taget i betragtning i prisen på visitkortet (det er lidt gratis).

komponent
Pris

F1C100s
$1.42

PCB
$0.80

8 MB flash
$0.17

Alle andre komponenter
$0.49

I alt
$2.88

Der er naturligvis også omkostninger, som er svære at beregne, såsom levering (da det er fordelt på komponenter beregnet til flere projekter). Men for et board, der understøtter Linux, er det bestemt ret billigt. Denne opdeling giver også en god idé om, hvor meget det koster virksomheder at lave enheder i det laveste prissegment: du kan være sikker på, at det koster virksomhederne endnu mindre, end det koster mig!

Capabilities

Hvad skal man sige? Kortet starter en meget stærkt strippet Linux på 6 sekunder. På grund af formfaktoren og omkostningerne har kortet ikke I/O, netværksunderstøttelse eller nogen betydelig mængde lagerplads til at køre tunge programmer. Ikke desto mindre lykkedes det mig at proppe en masse interessante ting ind i firmwarebilledet.

USB

Der var mange fede ting, der kunne gøres med USB, men jeg valgte den enkleste mulighed, så folk var mere tilbøjelige til at få det til at fungere, hvis de besluttede at prøve mit visitkort. Linux tillader kortet at opføre sig som en "enhed" med support Gadget Framework. Jeg tog nogle af driverne fra tidligere projekter, der inkluderede denne processor, så jeg har adgang til al funktionaliteten i USB-gadget-rammerne. Jeg besluttede at efterligne et præ-genereret flashdrev og give shell-adgang via en virtuel seriel port.

shell

Efter at have logget ind som root, kan du køre følgende programmer på den serielle konsol:

  • rogue: et klassisk Unix-dungeon-crawling-eventyrspil;
  • 2048: et simpelt spil af 2048 i konsoltilstand;
  • formue: output af forskellige prætentiøse ordsprog. Jeg besluttede ikke at inkludere hele citatdatabasen her for at give plads til andre funktioner;
  • mikropython: En meget lille Python-fortolker.

Flash Drive emulering

Under kompileringen genererer byggeværktøjerne et lille FAT32-billede og tilføjer det som en af ​​UBI-partitionerne. Linux Gadget Subsystem præsenterer sin pc som en lagerenhed.

Hvis du er interesseret i at se, hvad der vises på flashdrevet, er den nemmeste måde at gøre dette på ved at læse kilder. Der er også flere fotografier og mit CV.

ressourcer

Kilder

Mit byggerodstræ er udgivet på GitHub - thirtythreeforty/businesscard-linux. Der er kode til at generere et NOR flash-billede, som installeres ved hjælp af processorens USB-downloadtilstand. Det har også alle pakkedefinitionerne for spil og andre programmer, som jeg skubbede ind i Buildroot, efter at jeg fik alt til at fungere. Hvis du er interesseret i at bruge F1C100'erne i dit projekt, ville dette være et godt udgangspunkt (du er velkommen stille mig spørgsmål).
jeg brugte flot udført projekt Linux v4.9 til F1C100s af Icenowy, lidt redesignet. Mit kort kører næsten standard v5.2. Det er på GitHub - trettitrefirty/linux.
Jeg tror, ​​jeg har den bedste port af U-Boot til F1C100s i verden i dag, og den er også delvist baseret på Icenowy's arbejde (overraskende nok var det en ret frustrerende opgave at få U-Boot til at fungere korrekt). Du kan også få det på GitHub - treogtrefirty/u-støvle.

Dokumentation til F1C100s

Jeg fandt temmelig sparsom dokumentation for F1C100s, og jeg poster den her:

Jeg uploader det for de nysgerrige. mit projektdiagram.

Mit visitkort kører Linux

Konklusion

Jeg lærte meget under udviklingen af ​​dette projekt - det var mit første projekt med en reflow-loddeovn. Jeg lærte også at finde ressourcer til komponenter med dårlig dokumentation.

Jeg brugte min eksisterende erfaring med embedded Linux og board udviklingserfaring. Projektet er ikke fejlfrit, men det viser alle mine evner godt.

For dem, der er interesseret i detaljerne om at arbejde med indlejret Linux, foreslår jeg at læse min serie af artikler om dette: Mestring af Embedded Linux. Der taler jeg i detaljer om, hvordan man laver software og hardware fra bunden til små og billige Linux-systemer, svarende til mit visitkort.

Kilde: www.habr.com

Tilføj en kommentar