Ma carte de visite fonctionne sous Linux

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

Ma carte de visite fonctionne sous Linux
Cliquable

Je suis ingénieur systèmes embarqués. Pendant mon temps libre, je recherche souvent quelque chose qui puisse être utilisé dans la conception de futurs systèmes, ou quelque chose qui correspond à mes intérêts.

L’un de ces domaines est celui des ordinateurs bon marché capables d’exécuter Linux, et le moins cher sera le mieux. J’ai donc creusé un profond terrier de processeurs obscurs.

Je me suis dit : « Ces processeurs sont si bon marché qu’ils peuvent pratiquement être offerts gratuitement. » Et après un certain temps, l'idée m'est venue de créer une carte nue pour Linux sous la forme d'une carte de visite.

Après y avoir réfléchi, j’ai décidé que ce serait une chose vraiment cool à faire. j'ai déjà scie électronique cartes de visite à cela, et ils avaient diverses capacités intéressantes, telles que l'émulation de cartes flash, des ampoules clignotantes ou même la transmission de données sans fil. Cependant, je n'ai pas vu de cartes de visite prenant en charge Linux.

Alors je m'en suis fait un.

Il s'agit de la version finale du produit. Un ordinateur ARM minimal complet exécutant ma version personnalisée de Linux construite avec Buildroot.

Ma carte de visite fonctionne sous Linux

Il y a un port USB dans le coin. Si vous le connectez à un ordinateur, il démarre en 6 secondes environ et est visible comme une carte flash et un port série virtuel via lequel vous pouvez vous connecter au boîtier de la carte. Sur la clé USB se trouvent un fichier README, une copie de mon CV et plusieurs photos de moi. Le shell contient plusieurs jeux, des classiques Unix comme fortune et rogue, une petite version du jeu 2048 et un interpréteur MicroPython.

Tout cela est réalisé à l'aide d'une très petite puce flash de 8 Mo. Le chargeur de démarrage tient dans 256 Ko, le noyau occupe 1,6 Mo et l'ensemble du système de fichiers racine occupe 2,4 Mo. Par conséquent, il reste beaucoup d'espace pour le lecteur flash virtuel. Il existe également un répertoire personnel accessible en écriture au cas où quelqu'un ferait quelque chose qu'il voudrait enregistrer. Tout cela est également enregistré sur une puce flash.

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

Concevoir et construire

J'ai tout conçu et assemblé moi-même. C'est mon travail et j'adore ça, et une grande partie du défi a été de trouver des pièces suffisamment bon marché pour ce passe-temps.

Le choix du processeur était la décision la plus importante affectant le coût et la faisabilité du projet. Après des recherches approfondies, j'ai choisi le F1C100, un processeur Allwinner relativement peu connu et dont le coût est optimisé (c'est-à-dire sacrément bon marché). La RAM et le CPU sont situés dans le même package. J'ai acheté des processeurs sur Taobao. Tous les autres composants ont été achetés auprès de LCSC.

J'ai commandé les planches chez JLC. Ils m'en ont fait 8 copies pour 10 $. Leur qualité est impressionnante, surtout pour le prix ; pas aussi soigné que celui d'OSHPark, mais il a quand même l'air bien.

J'ai réalisé le premier lot en noir mat. Ils étaient beaux, mais se salissaient très facilement.

Ma carte de visite fonctionne sous Linux

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 solidement dans les ports USB. Deuxièmement, les pistes flash ont été mal réalisées, mais j'ai contourné ce problème en pliant les contacts.

Ma carte de visite fonctionne sous Linux

Après avoir vérifié que tout fonctionnait, 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 en utilisant poêle pas cher. J'ai accès à une découpeuse laser, je l'ai donc utilisée pour découper un pochoir à souder dans le film de la plastifieuse. Le pochoir s'est plutôt bien déroulé. Les trous de 0,2 mm de diamètre pour les contacts du processeur nécessitaient un soin particulier pour garantir une fabrication de haute qualité : il était essentiel de focaliser correctement le laser et de sélectionner sa puissance.

Ma carte de visite fonctionne sous Linux
D'autres planches fonctionnent bien pour maintenir la planche lors de l'application de la pâte.

J'ai appliqué de la pâte à souder et positionné les composants à la main. Je me suis assuré que du plomb n'était utilisé nulle part dans le processus - toutes les cartes, composants et pâtes répondent à la norme RoHS - pour que ma conscience ne me tourmente pas lorsque je les distribue aux gens.

Ma carte de visite fonctionne sous Linux
J'ai fait une légère erreur avec ce lot, mais la pâte à braser pardonne les erreurs et tout s'est bien passé

Chaque composant a pris environ 10 secondes à positionner, j'ai donc essayé de réduire le nombre de composants au minimum. Plus de détails sur la conception de la carte peuvent être lus dans un autre mon article détaillé.

Liste des matériaux et coût

Je me suis tenu à un budget strict. Et la carte de visite s'est avérée comme prévu - cela ne me dérange pas de la donner ! Bien sûr, je ne la distribuerai pas à tout le monde, car la réalisation de chaque copie prend du temps, et mon temps n'est pas pris en compte dans le coût de la carte de visite (c'est plutôt gratuit).

composant
Prix

F1C100
$1.42

PCB
$0.80

Flash de 8 Mo
$0.17

Tous les autres composants
$0.49

En tout
$2.88

Bien entendu, il existe également des coûts difficiles à calculer, comme celui de la livraison (car réparti entre des composants destinés à plusieurs projets). Cependant, pour une carte prenant en charge Linux, c'est définitivement assez bon marché. Cette répartition donne également une bonne idée de ce qu'il en coûte aux entreprises pour fabriquer des appareils dans le segment de prix le plus bas : vous pouvez être sûr que cela coûte encore moins aux entreprises qu'à moi !

opportunités

Quoi dire? La carte démarre un Linux très fortement dépouillé en 6 secondes. En raison de son format et de son coût, la carte ne dispose pas d'E/S, de prise en charge réseau ou d'une quantité significative de stockage pour exécuter des programmes lourds. Néanmoins, j'ai réussi à intégrer un tas de choses intéressantes dans l'image du firmware.

USB

Il y avait beaucoup de choses intéressantes qui pouvaient être faites avec l'USB, mais j'ai choisi l'option la plus simple afin que les gens aient plus de chances de le faire fonctionner s'ils décidaient d'essayer ma carte de visite. Linux permet à la carte de se comporter comme un « appareil » avec support Cadre de gadgets. J'ai pris certains des pilotes de projets précédents incluant 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 un accès au shell via un port série virtuel.

coquille

Après vous être connecté en tant qu'utilisateur root, vous pouvez exécuter les programmes suivants sur la console série :

  • rogue : un jeu d'aventure classique d'exploration de donjons Unix ;
  • 2048 : un jeu simple de 2048 en mode console ;
  • fortune : sortie de divers dictons prétentieux. J'ai décidé de ne pas inclure ici l'intégralité de la base de données de citations pour laisser de la place à d'autres fonctionnalités ;
  • micropython: Un très petit interpréteur Python.

Émulation de clé USB

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

Si vous souhaitez voir ce qui apparaît sur la clé USB, le moyen le plus simple de le faire est de lire sources. Il y a aussi plusieurs photographies et mon CV.

Ressources

Les sources

Mon arbre Buildroot est publié sur GitHub - trentetroisforte/carte de visite-linux. Il existe un code pour générer une image flash NOR, qui est installé à 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 intégrés dans Buildroot après que tout fonctionne. Si vous souhaitez utiliser les F1C100 dans votre projet, ce serait un excellent point de départ (n'hésitez pas Pose moi des questions).
J'ai utilisé projet magnifiquement exécuté Linux v4.9 pour F1C100 par Icenowy, légèrement repensé. Ma carte fonctionne presque en standard v5.2. C'est sur GitHub - trentetroisquarante/linux.
Je pense que j'ai aujourd'hui le meilleur portage d'U-Boot pour les F1C100 au monde, et il est également en partie basé sur le travail d'Icenowy (étonnamment, faire fonctionner correctement U-Boot était une tâche assez frustrante). Vous pouvez également l'obtenir sur GitHub - trentetroisforte/u-boot.

Documentation pour les F1C100

J'ai trouvé une documentation plutôt clairsemée pour les F1C100, et je la poste ici :

Je le mets en ligne pour les curieux. mon schéma de projet.

Ma carte de visite fonctionne sous Linux

Conclusion

J'ai beaucoup appris au cours du développement de ce projet - c'était mon premier projet utilisant un four de soudage par refusion. J'ai également appris à trouver des ressources pour les composants avec une mauvaise documentation.

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

Pour ceux qui sont intéressés par les détails du travail avec Linux embarqué, je suggère 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

Ajouter un commentaire