16 points par xguru 2021-05-31 | 2 commentaires | Partager sur WhatsApp
  • 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

 
daumkakao 2023-04-12

C’est impressionnant... faire tout ça toute seule...

 
xguru 2021-05-31

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.