Auf meiner Visitenkarte läuft Linux

Übersetzung eines Artikels aus Blog Ingenieur George Hilliard

Auf meiner Visitenkarte läuft Linux
Anklickbar

Ich bin Ingenieur für eingebettete Systeme. In meiner Freizeit suche ich oft nach etwas, das bei der Gestaltung zukünftiger Systeme verwendet werden kann, oder nach etwas, das meinen Interessen entspricht.

Ein solcher Bereich sind billige Computer, auf denen Linux ausgeführt werden kann, und je billiger, desto besser. Also habe ich ein tiefes Kaninchenloch mit obskuren Prozessoren ausgegraben.

Ich dachte: „Diese Prozessoren sind so günstig, dass man sie praktisch umsonst verschenken kann.“ Und nach einiger Zeit kam mir die Idee, eine reine Karte für Linux im Formfaktor einer Visitenkarte herzustellen.

Nachdem ich darüber nachgedacht hatte, kam ich zu dem Schluss, dass es eine wirklich coole Sache sein würde. Ich habe bereits sah elektronisch Visitenkarten auf sie, und sie verfügten über verschiedene interessante Funktionen, wie die Emulation von Flash-Karten, blinkende Glühbirnen oder sogar die drahtlose Datenübertragung. Allerdings habe ich keine Visitenkarten mit Linux-Unterstützung gesehen.

Also habe ich mir eins gemacht.

Dies ist die fertige Version des Produkts. Ein vollständiger Minimal-ARM-Computer, auf dem meine benutzerdefinierte Linux-Version ausgeführt wird, die mit Buildroot erstellt wurde.

Auf meiner Visitenkarte läuft Linux

In der Ecke befindet sich ein USB-Anschluss. Wenn Sie es an einen Computer anschließen, startet es in etwa 6 Sekunden und ist als Flash-Karte und virtueller serieller Port sichtbar, über den Sie sich in die Kartenhülle einloggen können. Auf dem Flash-Laufwerk befinden sich eine README-Datei, eine Kopie meines Lebenslaufs und mehrere Fotos von mir. Die Shell verfügt über mehrere Spiele, Unix-Klassiker wie Fortune und Rogue, eine kleine Version des Spiels 2048 und einen MicroPython-Interpreter.

All dies geschieht über einen sehr kleinen 8-MB-Flash-Chip. Der Bootloader passt in 256 KB, der Kernel nimmt 1,6 MB ein und das gesamte Root-Dateisystem nimmt 2,4 MB ein. Daher bleibt viel Platz für das virtuelle Flash-Laufwerk. Es gibt auch ein beschreibbares Home-Verzeichnis für den Fall, dass jemand etwas tut, was er speichern möchte. Dies alles wird ebenfalls auf einem Flash-Chip gespeichert.

Das gesamte Gerät kostet weniger als 3 US-Dollar. Es ist billig genug, um es zu verschenken. Wenn Sie ein solches Gerät von mir erhalten haben, bedeutet das höchstwahrscheinlich, dass ich versuche, Sie zu beeindrucken.

Designen und Bauen

Ich habe alles selbst entworfen und zusammengebaut. Es ist mein Job und ich liebe ihn, und die größte Herausforderung besteht darin, ausreichend günstige Teile für das Hobby zu finden.

Die Wahl des Prozessors war die wichtigste Entscheidung, die sich auf die Kosten und die Durchführbarkeit des Projekts auswirkte. Nach ausführlicher Recherche habe ich mich für den F1C100s entschieden, einen relativ wenig bekannten Prozessor von Allwinner, der kostenoptimiert (also verdammt günstig) ist. Sowohl RAM als auch CPU befinden sich im selben Paket. Ich habe Prozessoren auf Taobao gekauft. Alle anderen Komponenten wurden von LCSC gekauft.

Ich habe die Boards bei JLC bestellt. Sie haben für mich 8 Exemplare für 10 Dollar angefertigt. Ihre Qualität ist beeindruckend, vor allem für den Preis; nicht so ordentlich wie die von OSHPark, sehen aber trotzdem gut aus.

Ich habe die erste Charge mattschwarz gemacht. Sie sahen wunderschön aus, waren aber sehr leicht verschmutzt.

Auf meiner Visitenkarte läuft Linux

Bei der ersten Charge gab es ein paar Probleme. Erstens war der USB-Stecker nicht lang genug, um sicher in alle USB-Anschlüsse zu passen. Zweitens waren die Blitzspuren falsch gemacht, aber ich habe das durch Biegen der Kontakte umgangen.

Auf meiner Visitenkarte läuft Linux

Nachdem ich überprüft hatte, dass alles funktionierte, bestellte ich eine neue Charge Platinen; Ein Foto von einem davon sehen Sie am Anfang des Artikels.

Aufgrund der geringen Größe all dieser kleinen Komponenten habe ich mich für das Reflow-Löten entschieden billiger Herd. Da ich Zugang zu einem Laserschneider habe, habe ich damit eine Lötschablone aus der Laminierfolie ausgeschnitten. Die Schablone ist ganz gut geworden. Die Löcher mit einem Durchmesser von 0,2 mm für die Prozessorkontakte erforderten besondere Sorgfalt, um eine qualitativ hochwertige Fertigung zu gewährleisten – es war entscheidend, den Laser richtig zu fokussieren und seine Leistung auszuwählen.

Auf meiner Visitenkarte läuft Linux
Andere Bretter eignen sich gut, um das Brett beim Auftragen von Kleister zu halten.

Ich habe Lotpaste aufgetragen und die Bauteile per Hand positioniert. Ich habe darauf geachtet, dass bei dem Prozess nirgends Blei verwendet wurde – alle Platinen, Komponenten und Paste entsprechen dem Standard RoHS - damit mich mein Gewissen nicht quält, wenn ich sie an die Menschen verteile.

Auf meiner Visitenkarte läuft Linux
Ich habe bei dieser Charge einen kleinen Fehler gemacht, aber die Lotpaste verzeiht Fehler und alles hat gut geklappt

Die Positionierung jeder Komponente dauerte etwa 10 Sekunden, daher habe ich versucht, die Anzahl der Komponenten auf ein Minimum zu beschränken. Weitere Details zum Kartendesign können Sie in einem anderen lesen mein ausführlicher Artikel.

Material- und Kostenliste

Ich habe mich an ein strenges Budget gehalten. Und die Visitenkarte ist wie vorgesehen geworden – ich habe kein Problem damit, sie wegzugeben! Natürlich werde ich es nicht an alle weitergeben, da die Erstellung jeder Kopie Zeit kostet und meine Zeit bei den Kosten für die Visitenkarte nicht berücksichtigt wird (sie ist quasi kostenlos).

Komponente
Preis

F1C100s
$1.42

PCB
$0.80

8 MB Flash
$0.17

Alle anderen Komponenten
$0.49

Insgesamt
$2.88

Natürlich gibt es auch schwer kalkulierbare Kosten, wie zum Beispiel die Lieferung (da diese auf Komponenten verteilt wird, die für mehrere Projekte bestimmt sind). Allerdings ist es für ein Board, das Linux unterstützt, auf jeden Fall 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 Unternehmen sogar weniger kostet als mich!

Capabilities

Was soll ich sagen? Die Karte bootet ein sehr stark abgespecktes Linux in 6 Sekunden. Aufgrund des Formfaktors und der Kosten verfügt die Karte nicht über E/A, Netzwerkunterstützung oder nennenswerten Speicher für die Ausführung umfangreicher Programme. Dennoch ist es mir gelungen, eine Menge interessanter Dinge in das Firmware-Image zu packen.

USB

Es gab viele coole Dinge, die man mit USB machen konnte, aber ich habe mich für die einfachste Option entschieden, damit die Leute es eher zum Laufen bringen, wenn sie sich entscheiden, meine Visitenkarte auszuprobieren. Unter Linux kann sich die Karte mit Unterstützung wie ein „Gerät“ verhalten Gadget-Framework. Ich habe einige Treiber aus früheren Projekten übernommen, in denen dieser Prozessor enthalten war, sodass ich Zugriff auf alle Funktionen des USB-Gadget-Frameworks habe. Ich habe beschlossen, ein vorgeneriertes Flash-Laufwerk zu emulieren und Shell-Zugriff über einen virtuellen seriellen Port zu gewähren.

Schale

Nachdem Sie sich als Root angemeldet haben, können Sie die folgenden Programme auf der seriellen Konsole ausführen:

  • Rogue: ein klassisches Unix-Dungeon-Crawler-Abenteuerspiel;
  • 2048: ein einfaches Spiel von 2048 im Konsolenmodus;
  • Vermögen: Ausgabe verschiedener prätentiöser Sprüche. Ich habe mich entschieden, nicht die gesamte Zitationsdatenbank hier aufzunehmen, um Platz für andere Funktionen zu lassen;
  • Mikropython: Ein sehr kleiner Python-Interpreter.

Flash-Laufwerk-Emulation

Während der Kompilierung generieren die Build-Tools ein kleines FAT32-Image und fügen es als eine der UBI-Partitionen hinzu. Das Linux-Gadget-Subsystem präsentiert seinen PC als Speichergerät.

Wenn Sie sehen möchten, was auf dem Flash-Laufwerk angezeigt wird, können Sie dies am einfachsten durch Lesen tun Quellen. Es gibt auch mehrere Fotos und meinen Lebenslauf.

Ressourcen

Quellen

Mein Buildroot-Baum ist auf GitHub veröffentlicht - dreißigdreiundvierzig/businesscard-linux. Es gibt Code zum Generieren eines NOR-Flash-Images, das über den USB-Download-Modus des Prozessors installiert wird. Es enthält auch alle Paketdefinitionen für Spiele und andere Programme, die ich in Buildroot verschoben habe, nachdem ich alles zum Laufen gebracht habe. Wenn Sie daran interessiert sind, die F1C100 in Ihrem Projekt zu verwenden, wäre dies ein guter Ausgangspunkt (zögern Sie nicht). stell mir Fragen).
ich benutzte wunderschön umgesetztes Projekt Linux v4.9 für F1C100s von Icenowy, leicht überarbeitet. Auf meiner Karte läuft fast die Standardversion 5.2. Es ist auf GitHub - dreißigdreiundvierzig/linux.
Ich glaube, ich habe heute die beste U-Boot-Portierung für F1C100 auf der Welt, und sie basiert teilweise auch auf Icenowys Arbeit (überraschenderweise war es eine ziemlich frustrierende Aufgabe, U-Boot richtig zum Laufen zu bringen). Sie können es auch auf GitHub herunterladen - dreißigdreivierzig/U-Boot.

Dokumentation für F1C100

Ich habe eine eher spärliche Dokumentation für F1C100 gefunden und veröffentliche sie hier:

Ich lade es für die Neugierigen hoch. mein Projektdiagramm.

Auf meiner Visitenkarte läuft Linux

Abschluss

Ich habe bei der Entwicklung dieses Projekts viel gelernt – es war mein erstes Projekt mit einem Reflow-Lötofen. Außerdem habe ich gelernt, wie man Ressourcen für Komponenten mit schlechter Dokumentation findet.

Ich habe meine vorhandenen Erfahrungen mit Embedded Linux und Board-Entwicklung genutzt. Das Projekt ist nicht ohne Mängel, aber es bringt alle meine Fähigkeiten gut zum Ausdruck.

Für diejenigen, die sich für die Details der Arbeit mit eingebettetem Linux interessieren, empfehle ich die Lektüre meiner Artikelserie zu diesem Thema: Embedded Linux beherrschen. Dort spreche ich ausführlich darüber, wie man, ähnlich wie bei meiner Visitenkarte, Software und Hardware für kleine und günstige Linux-Systeme von Grund auf erstellen kann.

Source: habr.com

Kommentar hinzufügen