Op mijn visitekaartje draait Linux

Vertaling van een artikel van de blog ingenieur George Hilliard

Op mijn visitekaartje draait Linux
Klikbaar

Ik ben een ingenieur van embedded systemen. In mijn vrije tijd ben ik vaak op zoek naar wat ik kan gebruiken bij het ontwerpen van toekomstige systemen, of iets dat past binnen mijn interesses.

Een van deze gebieden is goedkope computers die Linux kunnen draaien, en hoe goedkoper, hoe beter. Daarom heb ik me verdiept in de onbekendere processors.

Ik dacht: ā€˜Deze processors zijn zo goedkoop dat je ze bijna gratis kunt weggeven.’ En na een tijdje kreeg ik het idee om een bare board voor Linux in een visitekaartjesformaat te maken.

Zodra ik hierover dacht, besloot ik dat het erg cool zou zijn om dit te maken. Ik had al gezien elektronische visitekaartjes tot dit, en die hadden verschillende interessante mogelijkheden, zoals het emuleren van flashkaarten, het knipperen van lampjes of zelfs draadloze gegevensoverdracht. Echter, ik had nog nooit visitekaartjes met Linux-ondersteuning gezien.

Dus heb ik er zelf een gemaakt.

Dit is de afgeronde versie van het product. Een volwaardige minimale computer op ARM, waarop mijn speciale versie van Linux draait, gemaakt met behulp van Buildroot.

Op mijn visitekaartje draait Linux

In de hoek bevindt zich een USB-poort. Als je hem op een computer aansluit, begint hij op te starten in ongeveer 6 seconden en verschijnt hij als een flashkaart en een virtuele seriƫle poort, waarmee je in de shell van de kaart kunt inloggen. Op de flashkaart staat een README-bestand, een kopie van mijn cv en een paar foto's van mij. In de shell zijn er een paar spelletjes, klassiekers uit Unix zoals fortune en rogue, een kleine versie van het spel 2048 en een MicroPython-interpreter.

Dit alles is gedaan met behulp van een zeer kleine flash-chip van 8 MB. De bootloader past in 256 KB, de kernel neemt 1,6 MB in beslag en het volledige root-bestandssysteem is 2,4 MB. Hierdoor blijft er veel ruimte over voor de virtuele flashkaart. Er is ook een thuismap die schrijfbaar is – als iemand iets doet dat hij of zij wil bewaren. Dit wordt ook opgeslagen op de flash-chip.

Het hele apparaat kost minder dan $3. Het is zo goedkoop dat je het bijna kunt weggeven. Als je zo'n apparaat van me hebt gekregen, betekent dit vrijwel zeker dat ik probeer indruk op je te maken.

Ontwerpen en assembleren

Ik heb alles zelf ontworpen en samengesteld. Dit is mijn werk, en ik hou ervan, en een groot deel van de uitdaging was het vinden van voldoende goedkope onderdelen voor zo'n hobby.

De keuze van de processor was de belangrijkste beslissing die de kosten en uitvoerbaarheid van het project beïnvloedde. Na grondig onderzoek koos ik de F1C100s, een relatief onbekende processor van Allwinner, die kostenefficiënt is (d.w.z. ontzettend goedkoop). In één behuizing zitten zowel RAM als CPU. Ik heb de processors gekocht op Taobao. Alle andere componenten zijn aangeschaft bij LCSC.

De printplaten heb ik besteld bij JLC. Voor $8 kreeg ik 10 exemplaren. De kwaliteit is indrukwekkend, vooral voor die prijs; ze zijn niet zo netjes als die van OSHPark, maar zien er toch goed uit.

De eerste partij heb ik matzwart gemaakt. Ze zagen er mooi uit, maar waren erg kwetsbaar.

Op mijn visitekaartje draait Linux

Met de eerste partij waren er een paar problemen. Ten eerste was de USB-connector niet lang genoeg om betrouwbaar in alle USB-poorten te passen. Ten tweede waren de sporen voor de flash verkeerd gemaakt, maar ik heb dit opgelost door de contacten te buigen.

Op mijn visitekaartje draait Linux

Nadat ik alles getest had, bestelde ik een nieuwe partij printplaten; een foto van een van hen kunt u aan het begin van het artikel zien.

Vanwege de kleine afmetingen van al deze kleine componenten besloot ik gebruik te maken van reflow soldering met behulp van een goedkope oven. Ik heb toegang tot een lasercutter, dus ik snijd een stencil voor het solderen uit een laminaatfilm. Het stencil is vrij goed gelukt. De openingen voor de processor contacten met een diameter van 0,2 mm vereisten bijzondere zorgvuldigheid voor een goede fabricage – het was cruciaal om de laser goed te focussen en het vermogen correct in te stellen.

Op mijn visitekaartje draait Linux
Om de printplaat vast te houden tijdens het aanbrengen van de pasta, zijn andere printplaten erg handig.

Ik heb soldeerpasta aangebracht en de componenten handmatig gepositioneerd. Ik zorgde ervoor dat er nergens in het proces lood werd gebruikt – alle printplaten, componenten en pasta voldoen aan de RoHS norm, zodat ik me niet schuldig hoef te voelen wanneer ik ze aan mensen uitdeel.

Op mijn visitekaartje draait Linux
Met deze partij heb ik een kleine fout gemaakt, maar soldeerpasta vergeeft fouten, en alles kwam goed samen.

Het plaatsen van elk component kostte ongeveer 10 seconden, dus ik probeerde hun aantal tot een minimum te beperken. Meer details over het ontwerpen van de kaart kunt u lezen in een andere uitgebreide artikel van mij..

Lijst van materialen en kosten

Ik hield me aan een strikt budget. En de visitekaartje is precies zoals ik het me had voorgesteld – ik heb er geen spijt van om het weg te geven! Natuurlijk ga ik het niet aan iedereen uitreiken, omdat het maken van elk exemplaar tijd kost, en mijn tijd is niet inbegrepen in de kosten van het visitekaartje (het is als het ware gratis).

Component
Prijs

F1C100s
$1.42

PCB
$0.80

8MB flash
$0.17

Alle andere componenten
$0.49

Total
$2.88

Natuurlijk zijn er ook andere kosten die moeilijk te berekenen zijn, zoals verzending (omdat deze verdeeld is over componenten voor verschillende projecten). Maar voor een bord met Linux-ondersteuning is dit beslist erg goedkoop. Ook geeft deze uitsplitsing een goed idee van wat bedrijven moeten betalen voor de productie van apparaten in het laagste prijssegment: je kunt er verzekerd van zijn dat het voor bedrijven nog goedkoper is dan voor mij!

Functionaliteiten

Wat kan ik zeggen? De kaart laadt een sterk afgeslankte versie van Linux in 6 seconden. Vanwege het formaat en de kosten heeft de kaart geen I/O, netwerkondersteuning, of enige serieuze opslagcapaciteit voor het draaien van zware programma's. Desondanks slaagde ik erin om veel interessante dingen in het firmware-beeld te persen.

USB

Met USB kon ik veel interessante dingen bedenken, maar ik koos de eenvoudigste optie, zodat mensen met een grote kans alles kunnen laten werken als ze mijn visitekaartje willen proberen. Linux maakt het mogelijk om de kaart zich te gedragen als een 'apparaat' met ondersteuning voor Gadget Framework. Enkele stuurprogramma's heb ik afkomstig van eerdere projecten die deze processor bevatten, zodat ik toegang heb tot de volledige functionaliteit van het USB gadget framework. Ik besloot om een vooraf gegenereerde flash-schijf te emuleren en toegang te geven tot de shell via een virtuele seriƫle poort.

Shell

Na inloggen als de gebruiker root, kunnen de volgende programma's op de seriƫle console worden gestart:

  • rogue: een klassieke Unix avonturenspel over kerker;
  • 2048: een eenvoudig 2048-spel in consolemodus;
  • fortune: het weergeven van verschillende hoogdravende uitspraken. Ik besloot de hele database met citaten hier niet op te nemen, zodat er ruimte overblijft voor andere functies;
  • micropython: een heel kleine Python-interpreter.

Emulatie van Flash Drive

Tijdens de compilatie genereert de build-tool een klein FAT32-image en voegt dit toe als een van de partities van UBI. De Linux-gadget subsystem stelt het apparaat voor als een opslagapparaat.

Als je nieuwsgierig bent naar wat er op de flashdrive staat, kun je dit het gemakkelijkst bekijken door de bronbestandente bekijken. Daar staan ook enkele foto's en mijn cv in.

Hulpmiddelen

Bronbestand

Mijn Buildroot-boom is te vinden op GitHub — thirtythreeforty/businesscard-linux. Daar staat de code voor het genereren van het NOR-flashbeeld, dat wordt geĆÆnstalleerd via de USB-downloadmodus van de processor. Ook zijn daar alle pakketdefinities voor games en andere programma's die ik in Buildroot heb gestopt nadat alles werkte. Als je F1C100s in je project wilt gebruiken, is dit een uitstekende startpunt (voel je vrij om mij vragen te stellen).
Ik heb gebruikt een prachtig uitgevoerd project Linux v4.9 voor F1C100s van Icenowy, iets aangepast door mij. Op mijn kaart draait bijna de standaard v5.2. Deze staat op GitHub — thirtythreeforty/linux.
Ik denk dat ik vandaag de beste U-Boot-port voor F1C100s ter wereld heb, en het is gedeeltelijk ook gebaseerd op het werk van Icenowy (verrassend genoeg bleek het behoorlijk lastig om U-Boot goed werkend te krijgen). Je kunt het ook op GitHub vinden — thirtythreeforty/u-boot.

Documentatie over F1C100s

Ik heb vrij karige documentatie over F1C100s gevonden en plaats deze hier:

Voor de nieuwsgierigen upload ik het schema van mijn project.

Op mijn visitekaartje draait Linux

Conclusie

Ik heb veel geleerd tijdens de ontwikkeling van dit project – het is mijn eerste project waarbij ik een oven voor het solderen van smelttin gebruik heb gemaakt. Ook heb ik geleerd om bronnen voor componenten met slechte documentatie te vinden.

Ik heb gebruikgemaakt van mijn ervaringsachtergrond met embedded Linux en het ontwerpen van kaarten. Het project heeft zijn tekortkomingen, maar laat goed al mijn vaardigheden zien.

Voor degenen die geïnteresseerd zijn in details over werken met embedded Linux, raad ik aan mijn serie artikelen hierover te lezen: Mastering Embedded Linux. Daar leg ik in detail uit hoe je software en hardware vanaf nul kunt creëren voor kleine en goedkope Linux-systemen, vergelijkbaar met deze visitekaart.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster