La stack technique d’une entreprise de hardware féminine portée par une seule personne
(blog.thea.codes)-
Présentation des technologies et outils utilisés par l’ingénieure qui dirige Winterbloom, une entreprise de synthétiseurs open source
-
Elle poursuit ses objectifs non pas en courant après les toutes dernières nouveautés, mais en utilisant des outils et des technologies qu’elle maîtrise bien
"Lateral thinking with withered technology"
→ une pensée latérale selon laquelle on peut créer quelque chose de totalement nouveau en exploitant des technologies fanées plutôt que nouvelles, et en se concentrant sur le plaisir
→ une formule de Gunpei Yokoi, qui a façonné la philosophie de développement technologique du Nintendo moderne : il a créé les consoles portables de Nintendo (Game Boy) ainsi que des jeux VR
- Microcontrôleurs : sélectionner 2 à 3 produits sur lesquels se concentrer
→ Microchip SAM D21, D51, D11
→ tous les trois prennent en charge l’USB, un SERCOM flexible, un ADC 12 bits multicanal, des timers avancés, etc.
→ envisage aussi le RP2040 (quand l’I/O analogique n’est pas nécessaire) et le STM32H7 (quand il faut générer du son dans le firmware)
- Conception matérielle : utilisation de KiCad, un outil open source d’automatisation de la conception électronique
→ partage sur GitHub des bibliothèques KiCad contenant symboles, footprints et modèles 3D communs pour les composants utilisés
→ publie aussi une liste de composants privilégiés sur une page Notion (description, référence, datasheet, fabricant, lien d’achat, cas d’usage)
-
Firmware : langage, bibliothèques, système de build, framework de test, etc. (un point chacun ci-dessous)
-
Langage C, GCC, CMSIS
→ utilise le C, ancien mais familier
→ bien qu’il existe aussi des compilateurs payants comme Keil/IAR, elle utilise l’outil open source GCC ARM Embedded Toolchain
→ le HAL fourni par Microchip étant trop difficile à manipuler, elle utilise directement la bibliothèque CMSIS et écrit une petite couche d’abstraction par-dessus
CMSIS est une couche d’abstraction matérielle indépendante des fournisseurs, fournie par ARM
- Bibliothèques firmware
→ TinyUSB : une excellente petite bibliothèque USB
→ Marco Paland's Printf : une implémentation de printf optimisée pour les microcontrôleurs
→ libfixmath : une petite bibliothèque pour le calcul en virgule fixe (utile sur les microcontrôleurs sans unité dédiée)
→ µnit : un framework de test minuscule et très utile
- Système de build
→ build avec Python et Ninja
→ a commencé avec un Makefile, mais c’est progressivement devenu difficile à maintenir, d’où le changement
- Tooling basé sur Python
→ géré de manière unifiée dans un dépôt nommé wintertools
→ un ensemble de scripts qui aident au build et aux tests liés au firmware et au hardware
- CircuitPython
→ pour certains produits, au lieu d’utiliser un firmware personnalisé, elle s’appuie sur CircuitPython, utilisé pour l’apprentissage des microcontrôleurs
→ cela facilite la personnalisation côté client
→ cela simplifie aussi le développement firmware/software
→ il existe une excellente communauté maintenue par Adafruit
- Documentation & guides utilisateur
→ rédigés en Markdown, puis buildés en pages web statiques avec MkDocs et hébergés sur GitHub Pages
→ utilisation du framework CSS Bulma
→ n’utilise pas Sass/LESS, etc., afin de rester simple
- JavaScript
→ l’écosystème Node.js, jugé trop complexe, a été volontairement évité
→ utilisation de JavaScript classique avec modules, classes, fonctions fléchées, Canvas, WebMIDI, TypedArray, etc.
→ attend Deno avec intérêt pour l’avenir
2 commentaires
C’est impressionnant... faire tout ça toute seule...
Le texte et le titre ci-dessus sont similaires, mais comme il s’agit d’une startup hardware, les sujets abordés sont totalement différents, ce qui a rendu la lecture intéressante.