Übersetzung des Artikels von Ingenieur George Hilliard
Klickbar
Ich bin Ingenieur für eingebettete Systeme. In meiner Freizeit suche ich oft nach Ideen, die ich für die Entwicklung zukünftiger Systeme verwenden kann, oder nach interessanten Themen.
Eines dieser Themen sind kostengünstige Computer, die Linux unterstützen können – je günstiger, desto besser. Daher habe ich mich in die Welt weniger bekannter Prozessoren vertieft.
Ich dachte mir: „Diese Prozessoren sind so billig, dass man sie praktisch kostenlos verteilen könnte.“ Und nach einiger Zeit kam mir die Idee, eine einfache Karte für Linux im Format einer Visitenkarte zu erstellen.
Sobald ich darüber nachdachte, entschied ich, dass es wirklich cool wäre, das zu machen. Ich hatte bereits bis zu , die verschiedene interessante Funktionen hatten, wie das Emulieren von Flash-Karten, das Blinken von Lichtern oder sogar die drahtlose Datenübertragung. Allerdings hatte ich noch keine Visitenkarten mit Linux-Unterstützung gesehen.
Also habe ich mir so eine gemacht.
Dies ist die abgeschlossene Version des Produkts. Ein voll funktionsfähiger minimaler Computer auf ARM, der mit meiner speziellen Linux-Version läuft, die mit Buildroot erstellt wurde.

In der Ecke befindet sich ein USB-Anschluss. Wenn man sie mit einem Computer verbindet, lädt sie in etwa 6 Sekunden und wird als Flash-Laufwerk und virtueller serieller Port angezeigt, über den man auf die Shell der Karte zugreifen kann. Auf dem Flash-Laufwerk befindet sich eine README-Datei, eine Kopie meines Lebenslaufs und einige meiner Fotos. In der Shell sind einige Spiele, Klassiker aus Unix wie fortune und rogue, eine kompakte Version des Spiels 2048 und ein MicroPython-Interpreter zu finden.
Das alles wurde mit einem sehr kleinen Flash-Chip von 8 MB realisiert. Der Bootloader benötigt 256 KB, der Kern nimmt 1,6 MB ein und das gesamte Root-Dateisystem benötigt 2,4 MB. Daher bleibt viel Platz für das virtuelle Flash-Laufwerk. Es gibt auch ein Home-Verzeichnis, das beschreibbar ist – falls jemand etwas speichern möchte. Auch das wird auf dem Flash-Chip gespeichert.
Das gesamte Gerät kostet weniger als 3 $. Es ist günstig genug, um es zu verschenken. Wenn Sie so ein Gerät von mir erhalten haben, bedeutet das wahrscheinlich, dass ich versuche, einen guten Eindruck zu hinterlassen.
Entwurf und Bau
Ich habe alles selbst entworfen und zusammengestellt. Es ist meine Arbeit, und ich mag sie. Die größte Herausforderung bestand darin, ausreichend günstige Ersatzteile für dieses Hobby zu finden.
Die Wahl des Prozessors war die wichtigste Entscheidung, die Kosten und Machbarkeit des Projekts beeinflusste. Nach intensiver Recherche entschied ich mich für den F1C100s, einen relativ unbekannten Prozessor von Allwinner, der auf Kosteneffizienz optimiert ist (d.h. verdammt günstig). In einem Gehäuse befinden sich sowohl RAM als auch CPU. Ich habe die Prozessoren auf Taobao gekauft. Alle anderen Komponenten wurden bei LCSC erworben.
Die Platten habe ich bei JLC bestellt. Für 8 $ habe ich 10 Exemplare bekommen. Die Qualität beeindruckt, besonders für diesen Preis; sie sind nicht so präzise wie die von OSHPark, sehen aber trotzdem gut aus.
Die erste Charge habe ich in mattschwarz gemacht. Sie sahen schön aus, waren aber sehr anfällig für Fingerabdrücke.

Mit der ersten Charge gab es ein paar Probleme. Erstens war der USB-Anschluss nicht lang genug, um sicher in jeden USB-Port zu passen. Zweitens waren die Leiterbahnen für den Flash-Speicher falsch gemacht, aber ich habe das umgangen, indem ich die Kontakte gebogen habe.

Nachdem ich alles im Betrieb überprüft hatte, bestellte ich eine neue Charge von Platten; ein Foto davon sehen Sie zu Beginn des Artikels.
Aufgrund der geringen Größe all dieser kleinen Bauteile habe ich mich für das Reflow-Löten mit [reflow solder] entschieden, unter Verwendung Ich habe Zugang zu einem Laserschneider, daher habe ich eine Lötmaske aus Laminierfolie ausgeschnitten. Die Maske ist recht gut gelungen. Die Löcher für die CPU-Pins mit einem Durchmesser von 0,2 mm erforderten besondere Sorgfalt für eine qualitativ hochwertige Ausführung – es war entscheidend, den Laser richtig zu fokussieren und die Leistung entsprechend anzupassen.

Um das Board beim Auftragen der Paste zu halten, eignen sich gut andere Boards.
Ich habe die Lötpaste aufgetragen und die Bauteile manuell platziert. Ich habe darauf geachtet, dass während des gesamten Prozesses kein Blei verwendet wurde – alle Boards, Bauteile und die Paste entsprechen dem Standard – damit ich kein schlechtes Gewissen haben muss, wenn ich sie an andere weitergebe.

Mit dieser Charge habe ich etwas daneben gegriffen, aber die Lötpaste verzeiht Fehler, und alles ließ sich gut zusammenbauen.
Die Anordnung jedes einzelnen Komponenten erforderte etwa 10 Sekunden, weshalb ich versuchte, die Anzahl zu minimieren. Weitere Einzelheiten zur Planung der Karte können in einem anderen .
Materialliste und Kosten
Ich hielt mich an ein strenges Budget. Die Visitenkarte ist so geworden, wie ich es mir vorgestellt habe – ich gebe sie gerne weiter! Natürlich werde ich sie nicht an jeden verteilen, da die Herstellung jedes Exemplars Zeit in Anspruch nimmt und meine Zeit nicht in den Kosten der Visitenkarte berücksichtigt ist (sie ist quasi kostenlos).
Komponente
Preis
F1C100s
$1.42
PCB
$0.80
8MB Flash
$0.17
Alle anderen Komponenten
$0.49
Gesamt
$2.88
Natürlich gibt es auch noch Kosten, die schwer zu berechnen sind, wie z.B. die Lieferung (da sie auf mehrere Projekte verteilte Komponenten aufgeteilt wurde). Allerdings ist das für die Platine mit Linux-Unterstützung definitiv recht günstig. Diese Aufschlüsselung gibt auch einen guten Überblick darüber, wie viel es Unternehmen kostet, Geräte im niedrigsten Preissegment herzustellen: Sie können sicher sein, dass es für Unternehmen noch günstiger ist als für mich!
Funktionen
Was soll ich sagen? Die Karte lädt ein stark beschnittenes Linux in 6 Sekunden. Aufgrund des Formfaktors und der Kosten hat die Karte keine I/O, keine Netzwerkanbindung und nur wenig Speicherplatz, um schwere Programme auszuführen. Dennoch ist es mir gelungen, viele interessante Dinge in das Firmware-Image zu packen.
USB
Es gäbe viele interessante Ideen mit USB, aber ich habe die einfachste Variante gewählt, damit es für die Menschen mit großer Wahrscheinlichkeit funktioniert, wenn sie meine Visitenkarte ausprobieren. Linux ermöglicht es der Karte, sich wie ein „Gerät“ zu verhalten, das unterstützt wird. . Einige Treiber habe ich aus früheren Projekten bezogen, die diesen Prozessor beinhalteten, also habe ich Zugriff auf die gesamte Funktionalität des USB-Gadget-Frameworks. Ich habe mich entschieden, ein vorab generiertes Flash-Laufwerk zu emulieren und Zugriff auf die Shell über einen virtuellen seriellen Port zu gewähren.
Shell
Nach dem Login als Benutzer root können im seriellen Konsolenmodus folgende Programme gestartet werden:
- rogue: ein klassisches Unix-Abenteuerspiel über Dungeons;
- 2048: ein einfaches Spiel im 2048-Konsolenmodus;
- Verschiedene pompöse Zitate. Ich habe mich entschieden, nicht die gesamte Zitatdatenbank aufzunehmen, um Platz für andere Funktionen zu lassen;
- : ein sehr kleiner Python-Interpreter.
Emulation eines Flash-Laufwerks
Während der Kompilierung generieren die Build-Tools ein kleines FAT32-Image und fügen es als eine der Partitionen in UBI ein. Das Gadget-Subsystem von Linux stellt den PC als Speichermedium dar.
Falls Sie sehen möchten, was auf dem Flash-Laufwerk erscheint, ist es am einfachsten, sich die anzusehen. Dort finden Sie auch einige Fotos und meinen Lebenslauf.
Ressourcen
Quelltexte
Mein Buildroot-Verzeichnis ist auf GitHub veröffentlicht — . Dort finden Sie den Code zur Erstellung des NOR-Flash-Images, das über den USB-Download-Modus des Prozessors installiert wird. Außerdem sind alle Paketdefinitionen für Spiele und andere Programme enthalten, die ich in Buildroot eingefügt habe, nachdem alles funktionierte. Wenn Sie F1C100s in Ihrem Projekt verwenden möchten, ist dies ein ausgezeichneter Ausgangspunkt (zögern Sie nicht, ).
Ich habe verwendet Linux v4.9 für F1C100s, erstellt von Icenowy, leicht modifiziert. Auf meiner Karte läuft nahezu die Standardversion v5.2. Sie ist auf GitHub zu finden — .
Ich denke, ich habe heute den besten U-Boot-Port für F1C100s auf der Welt, der teilweise ebenfalls auf der Arbeit von Icenowy basiert (unerwartet erwies es sich als ziemlich mühsam, U-Boot richtig zum Laufen zu bringen). Auf GitHub ist er ebenfalls verfügbar — .
Dokumentation für F1C100s
Ich habe eine recht spärliche Dokumentation für F1C100s gefunden und stelle sie hier zur Verfügung:
- – allgemeine Informationen und Pinbelegung.
- – Registerdefinitionen für den F1C600, der eigentlich derselbe wie der F1C100s ist, aber umbenannt wurde mit angekündigter Linux-Unterstützung (ha!).
- Ich habe aktiv Informationen aus dem Schaltplan von – dem Entwicklungsboard, das ich zur Softwarekonfiguration verwendet habe, übernommen.
Für Interessierte lade ich .

Fazit
Ich habe während der Entwicklung dieses Projekts viel gelernt – es ist mein erstes Projekt, bei dem ich einen Reflow-Ofen zum Löten verwendet habe. Außerdem habe ich gelernt, wie man Ressourcen für Komponenten mit schlechter Dokumentation findet.
Ich habe meine Erfahrungen mit Embedded Linux und der Entwicklung von Platinen genutzt. Das Projekt hat zwar seine Mängel, zeigt jedoch gut meine Fähigkeiten.
Für Interessierte an weiteren Details zur Arbeit mit Embedded Linux empfehle ich, meine Artikelserie darüber zu lesen: . Darin erkläre ich ausführlich, wie man Software und Hardware von Grund auf für winzige und kostengünstige Linux-Systeme entwickelt, ähnlich wie meine Visitenkarte.
Quelle: habr.com
