Linux fonctionne sur ma carte de visite

Traduction d'un article du blog de l' ingénieur George Hilliard


Cliquable

Je suis ingénieur en systèmes embarqués. Dans mon temps libre, je cherche souvent ce qui peut être utilisé dans la conception de futurs systèmes, ou quelque chose de la catégorie de mes intérêts.

Un de ces domaines est celui des ordinateurs bon marché qui peuvent prendre en charge Linux, et moins cher sera le mieux. Par conséquent, je me suis enterré dans un trou de lapin profond de processeurs peu connus.

J'ai pensé: "Ces processeurs sont si bon marché qu'ils peuvent pratiquement être distribués gratuitement." Et après un certain temps, l'idée m'est venue de créer une carte nue pour Linux sous forme de carte de visite.

Dès que j'y ai pensé, j'ai décidé que ce serait très cool à faire. J'ai déjà vu des cartes de visite électroniques auparavant, et elles avaient diverses fonctionnalités intéressantes, telles que l'émulation de cartes flash, des voyants clignotants ou même le transfert de données sans fil. Cependant, je n'ai pas vu de cartes de visite avec support Linux.

Je m'en suis donc fait un.

Ceci est une version complète du produit. Un ordinateur minimum à part entière sur ARM, qui exécute ma version spéciale de Linux, créée à l'aide de Buildroot.



Dans le coin, elle a un port USB. Si vous le connectez à un ordinateur, il se charge en environ 6 secondes et il peut être vu comme une carte flash et un port série virtuel, à travers lequel vous pouvez entrer dans le shell de la carte. Sur le lecteur flash se trouve un fichier README, une copie de mon CV et certaines de mes photos. Il y a plusieurs jeux dans le shell, des classiques d'Unix comme fortune et rogue, une petite version du jeu 2048 et l'interpréteur MicroPython.

Tout cela se fait avec une toute petite puce flash de 8 Mo. Le chargeur de démarrage tient dans 256 Ko, le noyau prend 1,6 Mo et l'ensemble du système de fichiers racine - 2,4 Mo. Par conséquent, il reste beaucoup d'espace pour un lecteur flash virtuel. Il a également un répertoire personnel accessible en écriture - si quelqu'un fait quelque chose qu'il veut enregistrer. Ceci est également stocké sur une puce flash.

L'ensemble de l'appareil coûte moins de 3 $. C'est assez bon marché pour être distribué. Si vous avez reçu un tel appareil de ma part, cela signifie que j'essaie très probablement de vous impressionner.

Conception et assemblage


J'ai tout conçu et assemblé moi-même. C'est mon travail, et j'aime ça, et la plupart des difficultés ont consisté à trouver suffisamment de pièces bon marché pour un tel passe-temps.

Le choix d'un processeur a été la décision la plus importante qui a affecté le coût et la faisabilité du projet. Après des recherches actives, j'ai choisi le F1C100s, un processeur Allwinner relativement peu connu, à coût optimisé (c'est-à-dire sacrément bon marché). Dans un cas, sont à la fois RAM et CPU. J'ai acheté des processeurs sur Taobao. Tous les autres composants achetés au LCSC.

J'ai commandé des planches à JLC. Pour 8 $, j'ai fait 10 copies. Leur qualité est impressionnante, surtout pour le prix; Pas aussi bien rangé que OSHPark, mais il a toujours l'air bien.

J'ai fait le premier lot noir mat. Ils étaient beaux, mais étaient très facilement souillés.



Il y a eu quelques problèmes avec le premier lot. Premièrement, le connecteur USB n'était pas assez long pour s'insérer correctement dans les ports USB. Deuxièmement, les traces de flash n'ont pas été faites correctement, mais j'ai contourné cela en pliant les contacts.



Après avoir tout vérifié au travail, j'ai commandé un nouveau lot de planches; Vous pouvez voir une photo de l'un d'eux au début de l'article.

En raison de la petite taille de tous ces petits composants, j'ai décidé de recourir à la soudure par refusion à l'aide d'un poêle bon marché . J'ai accès à un cutter laser, j'ai donc coupé un pochoir à souder à partir d'un film pour une plastifieuse dessus. Le pochoir s'est plutôt bien passé. Les trous pour les contacts du processeur d'un diamètre de 0,2 mm nécessitaient un soin particulier pour une fabrication de haute qualité - il était extrêmement important de bien focaliser le laser et de sélectionner sa puissance.


D'autres planches sont bonnes pour tenir la planche lors de l'application de la pâte.

J'ai appliqué de la pâte à souder et arrangé les composants manuellement. Je me suis assuré que le plomb n'était utilisé nulle part dans le processus - toutes les cartes, composants et pâtes sont conformes à RoHS - afin que je ne sois pas tourmenté par la conscience lorsque je les distribue aux gens.


J'ai manqué un peu avec ce lot, mais la pâte à souder pardonne les erreurs, et tout s'est bien passé

Chaque composant a pris environ 10 secondes pour se positionner, j'ai donc essayé de minimiser leur nombre. Plus de détails sur la conception d'une carte peuvent être trouvés dans mon autre article détaillé .

Liste des matériaux et coût


J'ai respecté un budget strict. Et la carte de visite s'est avérée comme elle était destinée - cela ne me dérange pas de la donner! Bien sûr, je ne le donnerai à personne et à tout le monde, car du temps est consacré à la production de chaque copie, et mon temps n'est pas pris en compte dans le coût d'une carte de visite (c'est un peu gratuit).

ComposantPrix
F1C100s1,42 $
PCB0,80 $
Flash de 8 Mo0,17 $
Tous les autres composants0,49 $
Total2,88 $


Naturellement, il y a encore des dépenses difficiles à calculer, comme la livraison (puisqu'elle a été répartie entre des composants destinés à plusieurs projets). Cependant, pour une carte avec prise en charge Linux, c'est certainement assez bon marché. De plus, cette ventilation donne une bonne idée du coût de fabrication des appareils du segment de prix le plus bas: vous pouvez être sûr que cela coûte encore moins cher aux entreprises que moi!

Les possibilités


Que dire? La carte charge Linux très fortement recadré en 6 secondes. En raison du facteur de forme et du coût, la carte ne dispose pas d'E / S, d'une prise en charge réseau ou d'une quantité importante de stockage pour lancer des programmes lourds. Néanmoins, j'ai réussi à insérer un tas de choses intéressantes dans l'image du firmware.

USB


Avec l'USB, vous pourriez trouver beaucoup de choses intéressantes, mais j'ai choisi l'option la plus simple, de sorte qu'avec une forte probabilité, les gens travailleraient s'ils décidaient d'essayer ma carte de visite. Linux permet à la carte de se comporter comme un «périphérique» avec prise en charge du Gadget Framework . J'ai pris quelques pilotes de projets précédents qui comprenaient ce processeur, j'ai donc accès à toutes les fonctionnalités du framework de gadget USB. J'ai décidé d'émuler un lecteur flash pré-généré et de donner accès au shell via un port série virtuel.

Coquille


Après vous être connecté en tant que root, vous pouvez exécuter les programmes suivants sur la console série:
  • voleur: un jeu d'aventure de donjon Unix classique;
  • 2048: jeu simple en 2048 en mode console;
  • fortune: la conclusion de divers dictons pathétiques. J'ai décidé de ne pas inclure ici toute la base de devis pour laisser de la place à d'autres fonctions;
  • micropython : un très petit interpréteur Python.


Émulation de lecteur flash


Au moment de la compilation, les outils de génération génèrent une petite image FAT32 et l'ajoutent comme l'une des partitions UBI. Le sous-système de gadget Linux présente son PC comme un périphérique de stockage.

Si vous souhaitez voir ce qui apparaît sur le lecteur flash, la façon la plus simple de le faire est de vous familiariser avec la source . Il y a aussi quelques photos et mon CV.

Les ressources


Code source


Mon arborescence Buildroot est téléchargée sur GitHub - trentethreeforty / businesscard-linux . Il existe un code pour générer une image flash NOR, qui est défini à l'aide du mode de téléchargement USB du processeur. Il contient également toutes les définitions de packages pour les jeux et autres programmes que j'ai insérés dans Buildroot après leur fonctionnement. Si vous souhaitez utiliser les F1C100 dans votre projet, ce sera un excellent point de départ (n'hésitez pas à me poser des questions ).
J'ai utilisé le projet Linux v4.9 magnifiquement exécuté pour F1C100s par Icenowy, en le refaisant un peu. La v5.2 presque standard fonctionne sur ma carte. Elle se trouve sur GitHub - trente - troisforty / linux .
Je pense qu'aujourd'hui j'ai le meilleur port U-Boot pour F1C100 au monde, et il est partiellement basé sur le travail d'Icenowy (de manière inattendue, faire fonctionner U-Boot comme il se doit s'est avéré être une tâche très désagréable). Vous pouvez également prendre GitHub - trente - troisforty / u-boot .

Documentation pour F1C100s


J'ai trouvé la documentation plutôt rare des F1C100, et je la poste ici:


Pour les curieux, je télécharge le plan de mon projet .



Conclusion


J'ai appris beaucoup de choses pendant le développement de ce projet - c'est mon premier projet, où j'ai utilisé un four de brasage par refusion. J'ai également appris à trouver des ressources pour des composants avec une documentation médiocre.

J'ai utilisé mon expérience avec Linux embarqué et mon expérience dans le développement de cartes. Le projet n'est pas sans défauts, mais il montre bien toutes mes compétences.

Pour ceux qui s'intéressent aux détails du travail avec Linux embarqué, je suggère de lire ma série d'articles à ce sujet: Maîtriser Linux embarqué . Là, je parle en détail de la façon de créer des logiciels et du matériel à partir de zéro pour des systèmes Linux minuscules et bon marché, similaires à ma carte de visite.

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


All Articles