Mitt visitkort kör Linux

Översättning av en artikel från blogginlägg ingenjör George Hilliard

Mitt visitkort kör Linux
Klickbar

Jag är en inbyggd systemingenjör. På fritiden letar jag ofta efter något som kan användas i utformningen av framtida system, eller något från mina intressen.

Ett sådant område är billiga datorer som kan köra Linux, och ju billigare desto bättre. Så jag grävde ner ett djupt kaninhål av obskyra processorer.

Jag tänkte: "De här processorerna är så billiga att de praktiskt taget kan ges bort gratis." Och efter en tid kom idén till mig att göra ett enkelt kort för Linux i formfaktorn av ett visitkort.

När jag väl tänkte på det bestämde jag mig för att det skulle vara en riktigt cool grej att göra. jag har redan har sett elektronisk visitkort до av detta, och de hade olika intressanta funktioner, som att emulera flash-kort, blinkande glödlampor eller till och med trådlös dataöverföring. Jag har dock inte sett visitkort med Linux-stöd.

Så jag gjorde en själv.

Detta är den färdiga versionen av produkten. En komplett minimal ARM-dator som kör min anpassade version av Linux byggd med Buildroot.

Mitt visitkort kör Linux

Den har en USB-port i hörnet. Om du ansluter den till en dator startar den på cirka 6 sekunder och är synlig som ett flashkort och en virtuell seriell port genom vilken du kan logga in i kortskalet. På flashenheten finns en README-fil, en kopia av mitt CV och flera bilder på mig. Skalet har flera spel, Unix-klassiker som fortune och rogue, en liten version av spelet 2048 och en MicroPython-tolk.

Allt detta görs med ett mycket litet 8 MB flash-chip. Bootloadern rymmer 256 KB, kärnan tar upp 1,6 MB och hela rotfilsystemet tar upp 2,4 MB. Därför finns det mycket utrymme kvar för den virtuella flashenheten. Det finns också en hemkatalog som är skrivbar om någon gör något de vill spara. Allt detta sparas också på ett flash-chip.

Hela enheten kostar mindre än $3. Det är tillräckligt billigt att ge bort. Om du fick en sådan enhet från mig betyder det att jag med största sannolikhet försöker imponera på dig.

Designa och bygga

Jag designade och monterade allt själv. Det är mitt jobb och jag älskar det, och mycket av utmaningen har varit att hitta tillräckligt billiga delar för hobbyn.

Valet av processor var det viktigaste beslutet som påverkade projektets kostnad och genomförbarhet. Efter omfattande efterforskningar valde jag F1C100s, en relativt lite känd processor från Allwinner som är kostnadsoptimerad (dvs jävligt billig). Samma paket innehåller både RAM och CPU. Jag köpte processorer på Taobao. Alla andra komponenter köptes från LCSC.

Jag beställde skivorna från JLC. De gjorde 8 exemplar åt mig för $10. Deras kvalitet är imponerande, särskilt för priset; inte lika snyggt som OSHParks, men ser fortfarande bra ut.

Jag gjorde den första batchen mattsvart. De såg vackra ut, men var väldigt lätt smutsade.

Mitt visitkort kör Linux

Det var ett par problem med den första batchen. För det första var USB-kontakten inte tillräckligt lång för att passa in i alla USB-portar. För det andra var blixtspåren felaktigt gjorda, men jag kom runt detta genom att böja kontakterna.

Mitt visitkort kör Linux

Efter att ha kontrollerat att allt fungerade beställde jag ett nytt parti brädor; Du kan se ett foto på en av dem i början av artikeln.

På grund av den lilla storleken på alla dessa små komponenter bestämde jag mig för att tillgripa reflowlödning med hjälp av billig spis. Jag har tillgång till en laserskärare, så jag använde den för att klippa ut en lödstencil från lamineringsfilmen. Stencilen blev ganska bra. Hålen med en diameter på 0,2 mm för processorkontakterna krävde särskild omsorg för att säkerställa högkvalitativ tillverkning - det var viktigt att fokusera lasern korrekt och välja dess effekt.

Mitt visitkort kör Linux
Andra brädor fungerar bra för att hålla brädan medan du applicerar pasta.

Jag applicerade lödpasta och placerade komponenterna för hand. Jag såg till att bly inte användes någonstans i processen – alla skivor, komponenter och pasta håller standarden RoHS – för att mitt samvete inte ska plåga mig när jag delar ut dem till folk.

Mitt visitkort kör Linux
Jag gjorde ett litet misstag med denna batch, men lödpastan förlåter misstag, och allt gick bra

Varje komponent tog cirka 10 sekunder att placera, så jag försökte hålla antalet komponenter till ett minimum. Mer information om kartdesign finns att läsa i en annan min detaljerade artikel.

Lista över material och kostnader

Jag höll mig till en strikt budget. Och visitkortet blev som det var tänkt - jag har inget emot att ge bort det! Naturligtvis kommer jag inte att dela ut det till alla, eftersom det tar tid att göra varje kopia, och min tid tas inte med i kostnaden för visitkortet (det är typ gratis).

komponent
Pris

F1C100s
$1.42

PCB
$0.80

8MB blixt
$0.17

Alla andra komponenter
$0.49

Totalt
$2.88

Naturligtvis finns det även kostnader som är svåra att beräkna, såsom leverans (eftersom den är fördelad på komponenter avsedda för flera projekt). Men för ett kort som stöder Linux är det definitivt ganska billigt. Denna uppdelning ger också en god uppfattning om hur mycket det kostar företag att tillverka enheter i det lägsta prissegmentet: du kan vara säker på att det kostar företag ännu mindre än vad det kostar mig!

Capabilities

Vad jag ska säga? Kortet startar ett mycket hårt avskalat Linux på 6 sekunder. På grund av formfaktorn och kostnaden har kortet inte I/O, nätverksstöd eller någon betydande mängd lagringsutrymme för att köra tunga program. Ändå lyckades jag stoppa in en massa intressanta saker i firmware-bilden.

USB

Det fanns många coola saker som kunde göras med USB, men jag valde det enklaste alternativet så att folk var mer benägna att få det att fungera om de bestämde sig för att prova mitt visitkort. Linux låter kortet bete sig som en "enhet" med stöd Gadget Framework. Jag tog några av drivrutinerna från tidigare projekt som inkluderade den här processorn, så jag har tillgång till alla funktioner i USB-gadgetramverket. Jag bestämde mig för att emulera en förgenererad flashenhet och ge skalåtkomst via en virtuell seriell port.

skal

Efter att ha loggat in som root kan du köra följande program på seriekonsolen:

  • rogue: ett klassiskt äventyrsspel för att krypa i fängelsehålor i Unix;
  • 2048: ett enkelt spel av 2048 i konsolläge;
  • förmögenhet: produktion av olika pretentiösa talesätt. Jag bestämde mig för att inte inkludera hela hänvisningsdatabasen här för att lämna utrymme för andra funktioner;
  • mikropyton: En mycket liten Python-tolk.

Flash Drive-emulering

Under kompileringen genererar byggverktygen en liten FAT32-bild och lägger till den som en av UBI-partitionerna. Linux Gadget Subsystem presenterar sin PC som en lagringsenhet.

Om du är intresserad av att se vad som visas på flashenheten är det enklaste sättet att göra detta genom att läsa källor. Det finns också flera fotografier och mitt CV.

Ресурсы

Källor

Mitt Buildroot-träd är publicerat på GitHub - thirtythreeforty/businesscard-linux. Det finns kod för att generera en NOR-blixtbild, som installeras med processorns USB-nedladdningsläge. Den har också alla paketdefinitioner för spel och andra program som jag tryckte in i Buildroot efter att jag fick allt att fungera. Om du är intresserad av att använda F1C100s i ditt projekt skulle detta vara en bra utgångspunkt (gärna Ställ frågor till mig).
jag använde vackert genomfört projekt Linux v4.9 för F1C100s av Icenowy, något omdesignad. Mitt kort kör nästan standard v5.2. Det finns på GitHub - trettiotreforty/linux.
Jag tror att jag har den bästa porten för U-Boot för F1C100s i världen idag, och den är också delvis baserad på Icenowy's arbete (överraskande nog var det en ganska frustrerande uppgift att få U-Boot att fungera korrekt). Du kan också få det på GitHub - trettiotrefyrty/u-boot.

Dokumentation för F1C100s

Jag hittade ganska sparsam dokumentation för F1C100s, och jag lägger upp den här:

Jag laddar upp det för de som är nyfikna. mitt projektdiagram.

Mitt visitkort kör Linux

Slutsats

Jag lärde mig mycket under utvecklingen av detta projekt - det var mitt första projekt med en reflow lödugn. Jag lärde mig också hur man hittar resurser för komponenter med dålig dokumentation.

Jag använde min befintliga erfarenhet av inbäddad Linux och erfarenhet av kortutveckling. Projektet är inte utan brister, men det visar alla mina färdigheter väl.

För dem som är intresserade av detaljerna om att arbeta med inbäddad Linux, föreslår jag att du läser min serie artiklar om detta: Bemästra inbyggd Linux. Där pratar jag i detalj om hur man skapar mjukvara och hårdvara från grunden för små och billiga Linux-system, liknande mitt telefonkort.

Källa: will.com

Lägg en kommentar