Op mijn visitekaartje draait Linux

Vertaling van een artikel uit blog post ingenieur George Hilliard

Op mijn visitekaartje draait Linux
Klikbaar

Ik ben een embedded systeemingenieur. In mijn vrije tijd zoek ik vaak naar iets dat gebruikt kan worden bij het ontwerpen van toekomstige systemen, of iets vanuit mijn interesses.

Een voorbeeld van zo'n gebied zijn goedkope computers die Linux kunnen draaien, en hoe goedkoper, hoe beter. Dus heb ik een diep konijnenhol van obscure processors gegraven.

Ik dacht: "Deze processors zijn zo goedkoop dat ze praktisch gratis kunnen worden weggegeven." En na enige tijd kwam het idee bij mij op om een ​​kale kaart voor Linux te maken in de vorm van een visitekaartje.

Toen ik er eenmaal over nadacht, besloot ik dat het heel gaaf zou zijn om te doen. ik heb al zag elektronisch visitekaartjes naar het, en ze hadden verschillende interessante mogelijkheden, zoals het emuleren van flashkaarten, knipperende gloeilampen of zelfs draadloze gegevensoverdracht. Ik heb echter geen visitekaartjes gezien met Linux-ondersteuning.

Dus heb ik er zelf een gemaakt.

Dit is de voltooide versie van het product. Een complete minimale ARM-computer waarop mijn aangepaste versie van Linux draait, gebouwd met Buildroot.

Op mijn visitekaartje draait Linux

Er zit een USB-poort in de hoek. Als je hem op een computer aansluit, start hij in ongeveer 6 seconden op en is hij zichtbaar als een flashkaart en een virtuele seriële poort waarmee je kunt inloggen op de kaartshell. Op de flashdrive staat een README-bestand, een kopie van mijn CV en verschillende foto's van mij. De shell bevat verschillende spellen, Unix-klassiekers als Fortune en Rogue, een kleine versie van het spel 2048 en een MicroPython-interpreter.

Dit alles gebeurt met behulp van een zeer kleine flashchip van 8 MB. De bootloader past in 256 KB, de kernel neemt 1,6 MB in beslag en het volledige rootbestandssysteem neemt 2,4 MB in beslag. Er is dus veel ruimte over voor de virtuele flashdrive. Er is ook een thuismap die beschrijfbaar is voor het geval iemand iets doet wat hij wil opslaan. Dit wordt ook allemaal opgeslagen op een flashchip.

Het hele apparaat kost minder dan $ 3. Het is goedkoop genoeg om weg te geven. Als je zo'n apparaat van mij hebt ontvangen, betekent dit dat ik hoogstwaarschijnlijk indruk op je probeer te maken.

Ontwerp en bouw

Ik heb alles zelf ontworpen en gemonteerd. Het is mijn werk en ik vind het geweldig, en een groot deel van de uitdaging is het vinden van onderdelen die goedkoop genoeg zijn voor de hobby.

De keuze van de processor was de belangrijkste beslissing die van invloed was op de kosten en haalbaarheid van het project. Na uitgebreid onderzoek heb ik gekozen voor de F1C100s, een relatief weinig bekende processor van Allwinner die kostengeoptimaliseerd is (dwz verdomd goedkoop). Zowel RAM als CPU bevinden zich in hetzelfde pakket. Ik heb processors gekocht op Taobao. Alle andere componenten zijn gekocht bij LCSC.

Ik heb de planken bij JLC besteld. Ze hebben 8 exemplaren voor mij gemaakt voor $ 10. Hun kwaliteit is indrukwekkend, vooral voor de prijs; niet zo netjes als die van OSHPark, maar zien er nog steeds goed uit.

Ik heb de eerste batch matzwart gemaakt. Ze zagen er mooi uit, maar waren heel gemakkelijk vervuild.

Op mijn visitekaartje draait Linux

Er waren een paar problemen met de eerste batch. Ten eerste was de USB-connector niet lang genoeg om veilig in een USB-poort te passen. Ten tweede zijn de flashtracks verkeerd gemaakt, maar ik heb dit omzeild door de contacten te buigen.

Op mijn visitekaartje draait Linux

Nadat ik had gecontroleerd of alles werkte, bestelde ik een nieuwe partij planken; Aan het begin van het artikel kunt u een foto van een van hen zien.

Vanwege de kleine omvang van al deze kleine componenten, besloot ik mijn toevlucht te nemen tot reflow-solderen met behulp van goedkope kachel. Ik heb de beschikking over een lasersnijder, dus die heb ik gebruikt om een ​​soldeersjabloon uit de lamineerfolie te snijden. Het stencil is redelijk goed gelukt. De gaten met een diameter van 0,2 mm voor de processorcontacten vereisten speciale zorg om een ​​hoogwaardige productie te garanderen - het was van cruciaal belang om de laser correct te focussen en het vermogen ervan te selecteren.

Op mijn visitekaartje draait Linux
Andere planken werken goed om het bord vast te houden tijdens het aanbrengen van pasta.

Ik heb soldeerpasta aangebracht en de componenten met de hand gepositioneerd. Ik zorgde ervoor dat er nergens in het proces lood werd gebruikt - alle platen, componenten en pasta voldoen aan de norm RoHS - zodat mijn geweten mij niet zal kwellen als ik ze onder mensen uitdeel.

Op mijn visitekaartje draait Linux
Ik heb een kleine fout gemaakt met deze batch, maar de soldeerpasta vergeeft fouten en alles ging prima

Het duurde ongeveer 10 seconden om elk onderdeel te positioneren, dus ik probeerde het aantal componenten tot een minimum te beperken. Meer details over kaartontwerp kunt u in een andere lezen mijn gedetailleerde artikel.

Lijst met materialen en kosten

Ik hield me aan een strikt budget. En het visitekaartje is geworden zoals bedoeld - ik vind het niet erg om het weg te geven! Natuurlijk zal ik het niet aan iedereen geven, omdat het tijd kost om elke kopie te maken, en mijn tijd wordt niet meegerekend in de kosten van het visitekaartje (het is min of meer gratis).

bestanddeel
Prijs

F1C100's
$1.42

PCB
$0.80

8 MB flitser
$0.17

Alle overige componenten
$0.49

In totaal
$2.88

Uiteraard zijn er ook lastig te berekenen kosten, zoals de bezorging (aangezien deze wordt verdeeld over onderdelen die voor meerdere projecten bestemd zijn). Voor een bord dat Linux ondersteunt, is het echter absoluut vrij goedkoop. Deze uitsplitsing geeft ook een goed beeld van hoeveel het bedrijven kost om apparaten in het laagste prijssegment te maken: je kunt er zeker van zijn dat het bedrijven nog minder kost dan het mij kost!

Mogelijkheden

Wat te zeggen? De kaart start een zeer zwaar gestripte Linux op in 6 seconden. Vanwege de vormfactor en de kosten beschikt de kaart niet over I/O, netwerkondersteuning of enige aanzienlijke hoeveelheid opslagruimte om zware programma's uit te voeren. Niettemin slaagde ik erin een aantal interessante dingen in de firmware-image te proppen.

USB

Er waren veel leuke dingen die met USB gedaan konden worden, maar ik koos voor de eenvoudigste optie, zodat de kans groter was dat mensen het werkend zouden krijgen als ze besloten mijn visitekaartje te proberen. Linux staat toe dat de kaart zich gedraagt ​​als een "apparaat" met ondersteuning Gadget-framework. Ik heb een aantal stuurprogramma's uit eerdere projecten gebruikt waarin deze processor was opgenomen, zodat ik toegang heb tot alle functionaliteit van het USB-gadgetframework. Ik besloot een vooraf gegenereerde flashdrive te emuleren en shell-toegang te geven via een virtuele seriële poort.

schelp

Nadat u als root bent ingelogd, kunt u de volgende programma's op de seriële console uitvoeren:

  • rogue: een klassiek Unix-avonturenspel in kerkers;
  • 2048: een eenvoudig spel van 2048 in consolemodus;
  • fortuin: output van verschillende pretentieuze uitspraken. Ik heb besloten om hier niet de hele citatiedatabase op te nemen om ruimte te laten voor andere kenmerken;
  • micropython: Een zeer kleine Python-tolk.

Flash Drive-emulatie

Tijdens de compilatie genereren de buildtools een kleine FAT32-image en voegen deze toe als een van de UBI-partities. Het Linux Gadget Subsystem presenteert zijn pc als opslagapparaat.

Als u geïnteresseerd bent om te zien wat er op de flashdrive verschijnt, kunt u dit het gemakkelijkst doen door te lezen bronnen. Er zijn ook verschillende foto's en mijn CV.

Ресурсы

bronnen

Mijn Buildroot-boom is op GitHub geplaatst - dertigdrieveertig/visitekaartje-linux. Er is code voor het genereren van een NOR-flashimage, die wordt geïnstalleerd met behulp van de USB-downloadmodus van de processor. Het bevat ook alle pakketdefinities voor games en andere programma's die ik in Buildroot heb gepusht nadat ik alles werkend had gekregen. Als u geïnteresseerd bent in het gebruik van de F1C100's in uw project, zou dit een goed startpunt zijn (voel u vrij vraag me vragen).
ik gebruikte prachtig uitgevoerd project Linux v4.9 voor F1C100s door Icenowy, enigszins opnieuw ontworpen. Mijn kaart draait bijna standaard v5.2. Het staat op GitHub - dertigdrieveertig/linux.
Ik denk dat ik momenteel de beste port van U-Boot voor F1C100's ter wereld heb, en het is ook gedeeltelijk gebaseerd op het werk van Icenowy (verrassend genoeg was het een behoorlijk frustrerende taak om U-Boot goed te laten werken). Je kunt het ook op GitHub krijgen - dertigdrieveertig/u-boot.

Documentatie voor F1C100's

Ik heb nogal schaarse documentatie gevonden voor F1C100's, en ik plaats deze hier:

Ik upload hem voor de nieuwsgierigen. mijn projectdiagram.

Op mijn visitekaartje draait Linux

Conclusie

Ik heb veel geleerd tijdens de ontwikkeling van dit project - het was mijn eerste project waarbij ik een reflow-soldeeroven gebruikte. Ik heb ook geleerd hoe ik bronnen kon vinden voor componenten met slechte documentatie.

Ik heb mijn bestaande ervaring met embedded Linux en boardontwikkelingservaring gebruikt. Het project is niet zonder gebreken, maar het laat al mijn vaardigheden goed zien.

Voor degenen die geïnteresseerd zijn in de details van het werken met embedded Linux, raad ik aan mijn serie artikelen hierover te lezen: Beheersing van ingebedde Linux. Daar praat ik gedetailleerd over hoe je vanaf het begin software en hardware kunt maken voor kleine en goedkope Linux-systemen, vergelijkbaar met mijn visitekaartje.

Bron: www.habr.com

Voeg een reactie