Linux läuft auf meiner Visitenkarte

Übersetzung eines Artikels aus dem Blog von Ingenieur George Hilliard


Anklickbar

Ich bin Ingenieur für eingebettete Systeme. In meiner Freizeit suche ich oft nach Möglichkeiten für den Entwurf zukünftiger Systeme oder nach Möglichkeiten aus der Kategorie meiner Interessen.

Ein solches Gebiet sind billige Computer, die Linux unterstützen können, und je billiger, desto besser. Deshalb habe ich mich in einem tiefen Kaninchenbau von wenig bekannten Prozessoren begraben.

Ich dachte: "Diese Prozessoren sind so billig, dass sie praktisch kostenlos ausgegeben werden können." Und nach einer Weile kam mir die Idee, eine nackte Karte für Linux in einem Visitenkarten-Formfaktor herzustellen.

Sobald ich darüber nachdachte, entschied ich, dass es sehr cool sein würde. Ich habe bereits elektronische Visitenkarten gesehen und sie hatten verschiedene interessante Funktionen, wie das Emulieren von Flash-Karten, das Blinken von Lichtern oder sogar die drahtlose Datenübertragung. Visitenkarten mit Linux-Unterstützung habe ich jedoch nicht gesehen.

Also habe ich mir eins gemacht.

Dies ist eine vollständige Version des Produkts. Ein vollwertiger Mindestcomputer unter ARM, auf dem meine mit Buildroot erstellte Spezialversion von Linux ausgeführt wird.



In der Ecke hat sie einen USB-Anschluss. Wenn Sie es an einen Computer anschließen, wird es in ca. 6 Sekunden geladen und kann als Flash-Karte und virtueller serieller Port betrachtet werden, über den Sie die Shell der Karte betreten können. Auf dem Flash-Laufwerk befindet sich eine README-Datei, eine Kopie meines Lebenslaufs und einige meiner Fotos. Es gibt verschiedene Spiele in der Shell, Klassiker von Unix wie Fortune und Rogue, eine kleine Version des 2048-Spiels und den MicroPython-Interpreter.

All dies geschieht mit einem sehr kleinen Flash-Chip von 8 MB. Der Bootloader passt auf 256 KB, der Kernel benötigt 1,6 MB und das gesamte Root-Dateisystem - 2,4 MB. Daher bleibt viel Platz für ein virtuelles Flash-Laufwerk. Es gibt auch ein beschreibbares Home-Verzeichnis - wenn jemand etwas tut, das er speichern möchte. Dies wird auch auf einem Flash-Chip gespeichert.

Das ganze Gerät kostet weniger als 3 US-Dollar. Es ist billig genug, um vertrieben zu werden. Wenn Sie ein solches Gerät von mir erhalten haben, ist es sehr wahrscheinlich, dass ich versuche, Sie zu beeindrucken.

Design und Montage


Ich habe alles selbst entworfen und zusammengebaut. Dies ist mein Job, und ich mag ihn, und die meisten Schwierigkeiten bestanden darin, genug billige Teile für ein solches Hobby zu finden.

Die Wahl eines Prozessors war die wichtigste Entscheidung, die sich auf die Kosten und die Durchführbarkeit des Projekts auswirkte. Nach aktiver Forschung entschied ich mich für den F1C100, einen relativ wenig bekannten Allwinner-Prozessor, der kostenoptimiert (d. H. Verdammt billig) ist. In einem Fall sind sowohl RAM als auch CPU. Ich habe Prozessoren auf Taobao gekauft. Alle anderen bei LCSC gekauften Komponenten.

Ich habe Boards bei JLC bestellt. Für $ 8 habe ich 10 Kopien gemacht. Ihre Qualität ist beeindruckend, vor allem für den Preis; Nicht so aufgeräumt wie der OSHPark, sieht aber trotzdem gut aus.

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



Bei der ersten Charge traten einige Probleme auf. Erstens war der USB-Anschluss nicht lang genug, um sicher in einen USB-Anschluss zu passen. Zweitens wurden die Blitzspuren nicht richtig gemacht, aber ich habe dies umgangen, indem ich die Kontakte gebogen habe.



Nachdem ich alles in Arbeit überprüft hatte, bestellte ich einen neuen Stapel Bretter; Sie können ein Foto von einem von ihnen am Anfang des Artikels sehen.

Aufgrund der geringen Größe all dieser kleinen Komponenten entschied ich mich, mit einem billigen Ofen auf Reflow-Lot zurückzugreifen. Ich habe Zugang zu einem Laserschneider, also schneide ich eine Lötschablone aus einer Folie für einen Laminator darauf. Die Schablone ist ziemlich gut geworden. Die Löcher für die Kontakte des Prozessors mit einem Durchmesser von 0,2 mm erforderten besondere Sorgfalt für eine qualitativ hochwertige Herstellung - es war von entscheidender Bedeutung, den Laser richtig zu fokussieren und seine Leistung auszuwählen.


Andere Platten eignen sich zum Halten der Platte beim Auftragen von Paste.

Ich habe Lötpaste aufgetragen und die Komponenten manuell angeordnet. Ich habe darauf geachtet, dass im gesamten Prozess kein Blei verwendet wird - alle Platinen, Komponenten und Paste sind RoHS-konform -, damit ich nicht vom Gewissen gequält werde, wenn ich sie an Menschen verteile.


Ich habe mit dieser Charge ein wenig gefehlt, aber die Lötpaste vergibt die Fehler und alles ist gut gelaufen

Die Positionierung jeder Komponente dauerte ungefähr 10 Sekunden, daher habe ich versucht, ihre Anzahl auf ein Minimum zu reduzieren. Weitere Details zum Entwerfen einer Karte finden Sie in meinem anderen ausführlichen Artikel .

Liste der Materialien und Kosten


Ich habe mich an ein strenges Budget gehalten. Und die Visitenkarte stellte sich als beabsichtigt heraus - es macht mir nichts aus, sie wegzugeben! Natürlich werde ich es niemandem und jedem geben, da Zeit für die Herstellung jeder Kopie aufgewendet wird und meine Zeit nicht in den Kosten einer Visitenkarte berücksichtigt wird (es ist sozusagen kostenlos).

KomponentePreis
F1C100s1,42 US-Dollar
PCB0,80 €
8 MB Flash0,17 US-Dollar
Alle anderen Komponenten0,49 US-Dollar
Total2,88 US-Dollar


Natürlich gibt es immer noch Kosten, die schwer zu berechnen sind, wie zum Beispiel die Lieferung (da sie auf Komponenten verteilt wurde, die für mehrere Projekte vorgesehen sind). Für ein Board mit Linux-Unterstützung ist dies jedoch definitiv recht günstig. Diese Aufschlüsselung gibt auch eine gute Vorstellung davon, wie viel es Unternehmen kostet, Geräte des niedrigsten Preissegments herzustellen: Sie können sicher sein, dass es Unternehmen kostet, die noch billiger sind als ich!

Die Möglichkeiten


Was soll ich sagen? Die Karte lädt sehr stark zugeschnittenes Linux in 6 Sekunden. Aufgrund des Formfaktors und der Kosten verfügt die Karte nicht über E / A, Netzwerkunterstützung oder Speicherplatz, um umfangreiche Programme zu starten. Trotzdem habe ich es geschafft, ein paar interessante Dinge in das Firmware-Image zu schieben.

USB


Mit USB konnten Sie sich viele interessante Dinge einfallen lassen, aber ich entschied mich für die einfachste Option, damit die Leute mit hoher Wahrscheinlichkeit arbeiten würden, wenn sie meine Visitenkarte ausprobieren würden. Linux ermöglicht es der Karte, sich als „Gerät“ zu verhalten, das das Gadget Framework unterstützt . Ich habe einige Treiber aus früheren Projekten mit diesem Prozessor verwendet, um auf alle Funktionen des USB-Gadget-Frameworks zugreifen zu können. Ich beschloss, ein vorgeneriertes Flash-Laufwerk zu emulieren und über eine virtuelle serielle Schnittstelle auf die Shell zuzugreifen.

Shell


Nach der Anmeldung als Root können Sie die folgenden Programme auf der seriellen Konsole ausführen:
  • Rogue: ein klassisches Unix-Dungeon-Abenteuerspiel;
  • 2048: einfaches Spiel 2048 im Konsolenmodus;
  • Glück: der Abschluss verschiedener Pathos-Sprüche. Ich habe mich entschieden, nicht die gesamte Angebotsbasis hier einzubeziehen, um Platz für andere Funktionen zu lassen.
  • Micropython : Ein sehr kleiner Python-Interpreter.


Flash Drive Emulation


Zur Kompilierungszeit 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 wissen möchten, was auf dem Flash-Laufwerk angezeigt wird, machen Sie sich am einfachsten mit der Quelle vertraut. Es gibt auch einige Fotos und meinen Lebenslauf.

Ressourcen


Quellcode


Mein Buildroot-Baum wird auf GitHub hochgeladen - thirtythreeforty / businesscard-linux . Es gibt einen Code zum Erzeugen eines NOR-Flash-Image, der im USB-Download-Modus des Prozessors eingestellt wird. Es hat auch alle Paketdefinitionen für Spiele und andere Programme, die ich in Buildroot eingefügt habe, nachdem es funktioniert hat. Wenn Sie die F1C100 in Ihrem Projekt verwenden möchten, ist dies ein guter Ausgangspunkt (zögern Sie nicht , mir Fragen zu stellen ).
Ich habe das wunderschön ausgeführte Linux v4.9- Projekt für F1C100s von Icenowy verwendet und es ein wenig überarbeitet. Fast Standard v5.2 funktioniert auf meiner Karte. Sie liegt auf GitHub - dreißigjährigfest / Linux .
Ich denke, dass ich heute den besten U-Boot-Port für F1C100 der Welt habe, und er basiert teilweise auf Icenowys Arbeit (unerwartet war es eine sehr unangenehme Aufgabe, U-Boot zum Laufen zu bringen). Du kannst es auch mit GitHub aufnehmen - dreißig mal schnell / u-boot .

Dokumentation für F1C100s


Ich habe die ziemlich seltene Dokumentation der F1C100 gefunden und poste sie hier:


Für die Neugierigen lade ich den Umriss meines Projekts hoch .



Fazit


Während der Entwicklung dieses Projekts habe ich viel gelernt - dies ist mein erstes Projekt, bei dem ich einen Reflow-Lötofen verwendet habe. Ich habe auch gelernt, wie man Ressourcen für Komponenten mit schlechter Dokumentation findet.

Ich habe meine Erfahrung mit Embedded Linux und die Erfahrung in der Entwicklung von Boards genutzt. Das Projekt ist nicht ohne Mängel, aber es zeigt alle meine Fähigkeiten gut.

Für diejenigen, die sich für die Details der Arbeit mit Embedded Linux interessieren, empfehle ich, meine Artikelserie zu diesem Thema zu lesen: Mastering Embedded Linux . Dort spreche ich ausführlich darüber, wie man Software und Hardware für kleine und billige Linux-Systeme von Grund auf neu erstellt, ähnlich wie bei meiner Visitenkarte.

Source: https://habr.com/ru/post/de482110/


All Articles