Mon carte de visite utilise Linux

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

Mon carte de visite utilise Linux
Cliquable

Je suis ingénieur en systèmes embarqués. Pendant mon temps libre, je recherche souvent des éléments pouvant être utilisés pour concevoir des systèmes futurs ou des sujets dans le cadre de mes intérêts.

L'un de ces domaines est constitué par les ordinateurs peu coûteux capables de faire fonctionner Linux, et moins ils coûtent, mieux c'est. J'ai donc plongé dans un profond terrier de lapin de processeurs peu connus.

J'ai pensé : « Ces processeurs sont si bon marché qu'on pourrait presque les donner gratuitement ». Après un certain temps, l'idée m'est venue de créer une carte nue pour Linux au format d'une carte de visite.

Une fois que j'y ai pensé, j'ai décidé que ce serait vraiment génial à réaliser. J'avais déjà vu des cartes de visite , et elles avaient diverses fonctionnalités intéressantes, comme l'émulation de cartes flash, le clignotement de lumières ou même la transmission de données sans fil. Cependant, je n'avais jamais rencontré de cartes de visite prenant en charge Linux. à ce fichier) :Alors, j'en ai fabriqué une pour moi.

C'est la version finale du produit. Un ordinateur minimal complet basé sur ARM, sur lequel fonctionne ma version spéciale de Linux, créée avec Buildroot.

Dans un coin, il y a un port USB. Si on la branche à un ordinateur, elle démarre en environ 6 secondes et est visible en tant que carte flash et port série virtuel, permettant d'accéder au shell de la carte. Sur la clé se trouve un fichier README, une copie de mon CV et quelques-unes de mes photos. Dans le shell, il y a quelques jeux, des classiques d'Unix comme fortune et rogue, une petite version du jeu 2048 et un interpréteur MicroPython.

Mon carte de visite utilise Linux

Tout cela est fait avec une très petite puce flash de 8 Mo. Le chargeur occupe 256 Ko, le noyau 1,6 Mo et tout le système de fichiers racine 2,4 Mo. Il reste donc beaucoup d'espace pour la carte flash virtuelle. Il y a aussi un répertoire personnel accessible en écriture – si quelqu'un fait quelque chose qu'il souhaite sauvegarder. Tout cela est également stocké sur la puce flash.

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

Conception et assemblage

J'ai conçu et assemblé tout cela moi-même. C'est mon travail, je l'aime, et la plupart des difficultés résidaient dans la recherche de pièces suffisamment bon marché pour un tel hobby.

J'ai conçu et assemblé tout moi-même. C'est mon travail, et cela me plaît, et la plupart des difficultés résidaient dans la recherche de pièces suffisamment bon marché pour un tel hobby.

Le choix du processeur a été la décision la plus importante influençant le coût et la faisabilité du projet. Après de nombreuses recherches, j'ai choisi le F1C100s, un processeur relativement peu connu fabriqué par Allwinner, optimisé pour le coût (c'est-à-dire sacrément bon marché). La RAM et le CPU sont intégrés dans un même boîtier. J'ai acheté les processeurs sur Taobao. Tous les autres composants ont été acquis sur LCSC.

J'ai commandé les cartes chez JLC. Pour 8 $, j'ai obtenu 10 copies. Leur qualité est impressionnante, surtout à ce prix ; elles ne sont pas aussi soignées que celles d'OSHPark, mais elles ont quand même fière allure.

J'ai fait la première série en noir mat. Elles étaient esthétiques, mais très salissantes.

Mon carte de visite utilise Linux

Il y a eu quelques problèmes avec la première série. Premièrement, le connecteur USB n'était pas assez long pour bien se brancher dans tous les ports USB. Deuxièmement, les pistes pour la mémoire flash étaient mal réalisées, mais j'ai contourné cela en pliant les contacts.

Mon carte de visite utilise Linux

Après avoir tout vérifié en fonctionnement, j'ai commandé une nouvelle série de cartes ; vous pouvez voir une photo de l'une d'elles 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 [reflow solder] en utilisant un four bon marché. J'ai accès à une découpeuse laser, donc j'ai découpé un masque de soudure dans un film de lamination. Le masque est plutôt réussi. Les trous pour les contacts du processeur, de 0,2 mm de diamètre, nécessitaient une attention particulière pour une fabrication de qualité – il était crucial de bien focaliser le laser et de régler sa puissance.

Mon carte de visite utilise Linux
Pour maintenir la carte lors de l'application de la pâte, d'autres cartes conviennent très bien.

J'ai appliqué la pâte à souder et disposé les composants manuellement. Je me suis assuré qu'aucun plomb ne soit utilisé dans le processus – toutes les cartes, composants et pâtes respectent la norme RoHS – afin que ma conscience soit tranquille lorsque je les distribuerai aux gens.

Mon carte de visite utilise Linux
Avec cette série, j'ai eu un léger raté, mais la pâte à souder pardonne les erreurs, et tout s'est bien assemblé.

Il me fallait environ 10 secondes pour positionner chaque composant, alors j'ai essayé de minimiser leur nombre. Vous pouvez lire plus de détails sur la conception de la carte dans un autre de mes articles détaillés.

La liste des matériaux et les coûts

J'ai respecté un budget strict. Et ma carte de visite est comme je l'avais imaginé – je n'ai pas de mal à la donner ! Bien sûr, je ne vais pas la distribuer à tout le monde, car la production de chaque exemplaire prend du temps, et mon temps n'est pas pris en compte dans le coût de la carte (il est en quelque sorte gratuit).

Composant
Prix

F1C100s
$1.42

PCB
$0.80

8 Mo de flash
$0.17

Tous les autres composants
$0.49

Au total
$2.88

Bien sûr, il y a d'autres coûts difficiles à évaluer, comme la livraison (puisqu'elle est répartie entre les composants destinés à plusieurs projets). Cependant, pour une carte prenant en charge Linux, c'est vraiment très bon marché. De plus, cette répartition donne une bonne idée de ce que coûte aux entreprises la fabrication d'appareils dans le segment de prix le plus bas : vous pouvez être sûr que cela coûte encore moins cher aux entreprises qu'à moi !

Fonctionnalités

Que dire ? La carte charge un Linux très allégé en 6 secondes. En raison de son format et de son coût, la carte n'a pas d'I/O, de support réseau ni d'espace de stockage sérieux pour faire tourner des programmes lourds. Néanmoins, j'ai réussi à intégrer beaucoup de choses intéressantes dans l'image du firmware.

USB

On aurait pu imaginer beaucoup de choses intéressantes avec l'USB, mais j'ai choisi l'option la plus simple, afin que les gens aient un maximum de chances que tout fonctionne, s'ils décident d'essayer ma carte de visite. Linux permet à la carte de se comporter comme un « appareil » avec support. Gadget Framework. Certains pilotes que j'ai pris de projets antérieurs incluant ce processeur, donc j'ai accès à toute la fonctionnalité de la plate-forme USB gadget framework. J'ai décidé d'imiter une clé USB pré-générée et de donner accès à un shell via un port série virtuel.

Shell

Après connexion en tant qu'utilisateur root sur la console série, on peut lancer les programmes suivants :

  • rogue : un jeu d'aventure classique de type Unix sur les donjons ;
  • 2048 : un simple jeu de 2048 en mode console ;
  • fortune : affichage de diverses maximes pompeuses. J'ai décidé de ne pas inclure ici toute la base de citations pour laisser de la place à d'autres fonctionnalités ;
  • micropython: un interpréteur Python très léger.

Émulation de Flash Drive

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

Si vous êtes curieux de voir ce qui se trouve sur la clé USB, le moyen le plus simple est de consulter les sources. Vous y trouverez également quelques photos et mon CV.

Ressources

Les sources

Mon arbre Buildroot est disponible sur GitHub — thirtythreeforty/businesscard-linux. Il contient le code de génération de l'image flash NOR, qui s'installe via le mode de téléchargement USB du processeur. On y trouve aussi toutes les définitions des paquets pour les jeux et autres programmes que j'ai intégrés dans Buildroot après que tout ait fonctionné. Si vous souhaitez utiliser le F1C100s dans votre projet, cela vous servira de point de départ idéal (n'hésitez pas à me poser des questions).
J'ai utilisé projet bien réalisé Linux v4.9 pour F1C100s par Icenowy, légèrement adapté. Sur ma carte, une version presque standard v5.2 fonctionne. Elle est disponible sur GitHub — thirtythreeforty/linux.
Je pense avoir le meilleur port U-Boot pour F1C100s au monde aujourd'hui, et il est également partiellement basé sur le travail d'Icenowy (étonnamment, faire fonctionner U-Boot correctement s'est révélé être une tâche plutôt désagréable). Il est également disponible sur GitHub — thirtythreeforty/u-boot.

Documentation sur le F1C100s

J'ai trouvé une documentation assez limitée sur le F1C100s et je la partage ici :

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

Mon carte de visite utilise Linux

Conclusion

J'ai beaucoup appris pendant le développement de ce projet – c'est mon premier projet où j'ai utilisé un four à souder pour le soudage à réchauffement. J'ai également appris à trouver des ressources pour des composants avec une mauvaise documentation.

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

Pour ceux qui s'intéressent aux détails sur le travail avec Linux embarqué, je propose de lire ma série d'articles à ce sujet : Maîtriser Linux embarqué. J'y explique en détail comment 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 : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster