Auf meiner Visitenkarte lÀuft Linux

Übersetzung des Artikels von Blogs Ingenieur George Hilliard

Auf meiner Visitenkarte lÀuft Linux
Klickbar

Ich bin Ingenieur fĂŒr eingebettete Systeme. In meiner Freizeit suche ich oft nach Dingen, die ich fĂŒr das Design zukĂŒnftiger Systeme verwenden kann, oder nach etwas aus meinen Interessengebieten.

Ein solches Gebiet sind gĂŒnstige Computer, die Linux unterstĂŒtzen können, und je gĂŒnstiger, desto besser. Deshalb habe ich mich in ein tiefes Kaninchenloch von wenig bekannten Prozessoren eingegraben.

Ich dachte: „Diese Prozessoren sind so billig, dass man sie praktisch verschenken könnte“. Nach einiger Zeit kam mir die Idee, eine nackte Karte fĂŒr Linux im Visitenkartenformat zu erstellen.

Sobald ich darĂŒber nachdachte, entschloss ich mich, dass es sehr cool wĂ€re, das zu machen. Ich hatte bereits gesehen elektronische Visitenkarten bis dieses, und sie hatten verschiedene interessante FĂ€higkeiten, wie das Emulieren von Flash-Karten, das Blinken von Lichtern oder sogar die drahtlose DatenĂŒbertragung. Visitenkarten mit Linux-UnterstĂŒtzung hatte ich jedoch noch nie gesehen.

Also habe ich mir so eine gemacht.

Dies ist die fertige Version des Produkts. Ein vollwertiger Minimalcomputer auf ARM, auf dem meine spezielle Version von Linux lÀuft, erstellt mit Buildroot.

Auf meiner Visitenkarte lÀuft Linux

In der Ecke befindet sich ein USB-Port. Wenn man sie an einen Computer anschließt, bootet sie in etwa 6 Sekunden und wird wie ein Flash-Laufwerk und ein virtueller serielle Port erkannt, ĂŒber den man auf die Shell der Karte zugreifen kann. Auf dem Flash-Laufwerk liegt eine README-Datei, eine Kopie meines Lebenslaufs und einige meiner Fotos. In der Shell gibt es einige Spiele, Klassiker aus Unix wie fortune und rogue, eine kleine Version des Spiels 2048 und einen MicroPython-Interpreter.

Das Ganze wurde mit einem sehr kleinen 8 MB Flash-Chip realisiert. Der Bootloader passt in 256 KB, der Kernel benötigt 1,6 MB und das gesamte Root-Dateisystem – 2,4 MB. Daher bleibt viel Platz fĂŒr das virtuelle Flash-Laufwerk. Es gibt auch ein Home-Verzeichnis, das schreibbar ist – falls jemand etwas tut, das er speichern möchte. Das wird ebenfalls auf den Flash-Chip gespeichert.

Das gesamte GerÀt kostet weniger als 3 $. Es ist so billig, dass man es verschenken könnte. Wenn Sie so ein GerÀt von mir erhalten haben, bedeutet das, dass ich wahrscheinlich versuche, einen Eindruck bei Ihnen zu hinterlassen.

Design und Zusammenbau

Ich habe alles selbst entworfen und zusammengebaut. Es ist meine Arbeit, und ich liebe sie, und die grĂ¶ĂŸte Herausforderung bestand darin, genĂŒgend gĂŒnstige Teile fĂŒr ein solches Hobby zu finden.

Die Wahl des Prozessors war die wichtigste Entscheidung, die die Kosten und Umsetzbarkeit des Projekts beeinflusste. Nach intensiven Recherchen entschied ich mich fĂŒr den F1C100s, einen relativ unbekannten Prozessor von Allwinner, der kostenoptimiert ist (d.h. verdammt billig). RAM und CPU sind in einem GehĂ€use untergebracht. Ich kaufte die Prozessoren auf Taobao. Alle anderen Komponenten wurden bei LCSC erworben.

Die Platinen habe ich bei JLC bestellt. FĂŒr 8 $ wurden 10 Kopien angefertigt. Die QualitĂ€t ist beeindruckend, besonders fĂŒr diesen Preis; sie sind zwar 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 Flecken.

Auf meiner Visitenkarte lÀuft Linux

Es gab ein paar Probleme mit der ersten Charge. Erstens war der USB-Anschluss nicht lang genug, um sicher in jedem USB-Port zu sitzen. Zweitens waren die Leiterbahnen fĂŒr den Flash-Speicher falsch gemacht, aber ich habe das umschifft, indem ich die Kontakte umgebogen habe.

Auf meiner Visitenkarte lÀuft Linux

Nachdem ich alles in Betrieb geprĂŒft hatte, bestellte ich eine neue Charge von Platinen; ein Foto davon können Sie zu Beginn des Artikels sehen.

Aufgrund der kleinen GrĂ¶ĂŸe all dieser kleinen Komponenten entschied ich mich, das Löten mit Reflow-Soldering [reflow solder] zu verwenden, mit Hilfe einer billigen Heizung. Ich habe Zugang zu einem Laser-Cutter, also schnitt ich eine Lötmaske aus Laminierfolie aus. Die Maske wurde ziemlich gut. Die Löcher fĂŒr die Kontakte des Prozessors mit einem Durchmesser von 0,2 mm erforderten besondere Sorgfalt bei der Herstellung – es war entscheidend, den Laser richtig zu fokussieren und die Leistung einzustellen.

Auf meiner Visitenkarte lÀuft Linux
Um die Platine bei der Paste aufzutragen, eignen sich andere Platinen gut.

Ich habe die Lötpaste aufgetragen und die Komponenten manuell platziert. Ich sorgte dafĂŒr, dass an keiner Stelle im Prozess Blei verwendet wurde – alle Platinen, Komponenten und die Paste entsprechen dem Standard RoHS – damit ich ein reines Gewissen habe, wenn ich sie an Menschen verteile.

Auf meiner Visitenkarte lÀuft Linux
Mit dieser Charge habe ich ein wenig danebengegriffen, aber die Lötpaste verzeiht Fehler, und alles ließ sich gut zusammenbauen.

FĂŒr die Platzierung jeder Komponente brauchte ich etwa 10 Sekunden, also versuchte ich, ihre Anzahl so gering wie möglich zu halten. Mehr Details zur Gestaltung der Karte können in einem anderen meiner ausfĂŒhrlichen Artikel.

Materialliste und Kosten

Ich habe mich an ein strenges Budget gehalten. Die Visitenkarte ist genau so geworden, wie ich es mir vorgestellt habe – ich gebe sie gerne weiter! NatĂŒrlich werde ich sie nicht jedem und jedem weitergeben, da die Herstellung jedes Exemplars Zeit in Anspruch nimmt und meine Zeit nicht in den Kosten der Visitenkarte berĂŒcksichtigt ist (sie ist gewissermaßen kostenlos).

Komponente
Preis

F1C100s
$1.42

PCB
$0.80

8MB Flash
$0.17

Alle anderen Komponenten
$0.49

Insgesamt
$2.88

Es gibt natĂŒrlich noch Kosten, die schwer zu berechnen sind, wie zum Beispiel Versand (da sie sich auf die Komponenten verteilt, die fĂŒr mehrere Projekte bestimmt sind). Aber fĂŒr die Platine mit Linux-UnterstĂŒtzung ist das definitiv sehr gĂŒnstig. Diese AufschlĂŒsselung gibt auch einen guten Eindruck davon, wie viel es Unternehmen kostet, GerĂ€te im Niedrigpreissegment herzustellen: Sie können sicher sein, dass es fĂŒr die 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-AnschlĂŒsse, keine NetzwerkunterstĂŒtzung und keinen nennenswerten Speicherplatz, um schwere Programme auszufĂŒhren. Dennoch ist es mir gelungen, viele interessante Dinge in das Firmware-Image zu packen.

USB

Es hĂ€tte viele interessante Möglichkeiten mit USB gegeben, aber ich habe die einfachste Variante gewĂ€hlt, damit es fĂŒr die Leute mit hoher Wahrscheinlichkeit funktioniert, wenn sie versuchen, meine Visitenkarte zu verwenden. Linux ermöglicht der Karte, sich wie ein 'GerĂ€t' zu verhalten mit UnterstĂŒtzung von Gadget Framework. Einige Treiber habe ich aus frĂŒheren Projekten genommen, die diesen Prozessor einschlossen, so dass ich Zugang zu allen Funktionen des USB-Gadget-Frameworks habe. Ich habe beschlossen, 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 kann man folgende Programme an der seriellen Konsole starten:

  • rogue: ein klassisches Unix-Abenteuerspiel ĂŒber Verliese;
  • 2048: einfaches 2048-Spiel im Konsolenmodus;
  • fortune: gibt verschiedene bedeutungsschwangere Zitate aus. Ich habe beschlossen, nicht die gesamte Zitatsammlung hier reinzupacken, um Platz fĂŒr andere Funktionen zu lassen;
  • micropython: 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 einen der UBI-Partitionen hinzu. Die Linux-Gadget-Subsystem stellt den PC als ein Speichermedium dar.

Wenn Sie interessiert sind, was auf dem USB-Stick erscheint, ist es am einfachsten, dies durch die Einsichtnahme in den Quellcode. Dort befinden sich auch einige Fotos und mein Lebenslauf.

Ressourcen

Quelltexte

Mein Buildroot-Baum ist auf GitHub verfĂŒgbar — thirtythreeforty/businesscard-linux. Dort ist der Code zur Generierung des NOR-Flash-Images zu finden, das ĂŒber den USB-Bootmodus des Prozessors installiert wird. Es gibt auch alle Paketdefinitionen fĂŒr Spiele und andere Programme, die ich in Buildroot eingefĂŒgt habe, nachdem alles funktioniert hat. Wenn Sie F1C100s in Ihrem Projekt verwenden möchten, ist dies ein hervorragender Ausgangspunkt (zögern Sie nicht, mir Fragen zu stellen).
Ich habe ein hervorragend ausgefĂŒhrtes Projekt Linux v4.9 fĂŒr F1C100s von Icenowy, etwas modifiziert. Auf meiner Karte lĂ€uft fast das Standard v5.2. Es ist auf GitHub verfĂŒgbar — thirtythreeforty/linux.
Ich denke, ich habe heute den besten U-Boot-Port fĂŒr F1C100s weltweit, der teilweise auch auf der Arbeit von Icenowy basiert (ĂŒberraschend, es stellte sich als ziemlich unangenehme Aufgabe heraus, U-Boot richtig zum Laufen zu bringen). Es kann ebenfalls auf GitHub heruntergeladen werden — thirtythreeforty/u-boot.

Dokumentation zu F1C100s

Ich habe ziemlich spĂ€rliche Dokumentation zu F1C100s gefunden und stelle sie hier zur VerfĂŒgung:

  • Allwinner F1C100s Datenblatt – allgemeine Informationen und Pinbelegung.
  • Allwinner F1C600 Handbuch – Registerdefinitionen fĂŒr F1C600, der in Wirklichkeit dasselbe wie F1C100s ist, aber umbenannt mit der angegebenen UnterstĂŒtzung fĂŒr Linux (ha!).
  • Ich habe aktiv Informationen aus dem Schaltplan von Sipeed’s Lichee Nano – dem Entwicklungsboard, das ich zur Softwareeinrichtung verwendet habe, bezogen.

FĂŒr Interessierte lade ich das Schema meines Projekts hoch.

Auf meiner Visitenkarte lÀuft Linux

Fazit

Ich habe viel gelernt wĂ€hrend der Entwicklung dieses Projekts – es ist mein erstes Projekt, bei dem ich einen Reflowofen verwendet habe. Außerdem habe ich gelernt, Ressourcen fĂŒr Komponenten mit schlechter Dokumentation zu finden.

Ich habe auf meinen Erfahrungen mit Embedded Linux und PCB-Entwicklung zurĂŒckgegriffen. Das Projekt hat seine MĂ€ngel, zeigt jedoch gut alle meine FĂ€higkeiten.

Interessierte an Details zur Arbeit mit Embedded Linux lade ich ein, meine Artikelreihe darĂŒber zu lesen: Mastering Embedded Linux. Dort erklĂ€re ich ausfĂŒhrlich, wie man Software und Hardware von Grund auf fĂŒr kleine und kostengĂŒnstige Linux-Systeme erstellt, Ă€hnlich dieser Visitenkarte.

Quelle: habr.com

60GB SSD 8Gb DDR4