Der Tech-Stack einer Ein-Frau-Hardwarefirma
(blog.thea.codes)-
Eine Ingenieurin, die das Open-Source-Synthesizer-Unternehmen Winterbloom betreibt, erklärt die von ihr verwendeten Technologien und Tools
-
Sie jagt nicht dem neuesten Stand der Technik hinterher, sondern erreicht ihre Ziele mit Tools und Technologien, die sie gut versteht
"Lateral thinking with withered technology"
→ Querdenken mit veralteter Technologie: die Idee, dass man mit nicht neuer, sondern „verwelkter“ Technologie den Spaß in den Mittelpunkt stellen und dadurch etwas völlig Neues erschaffen kann
→ Ein Ausspruch von Gunpei Yokoi, der die Philosophie der Technologieentwicklung des modernen Nintendo geprägt hat: der Mann hinter Nintendos Handheld-Spielgeräten (Game Boy) und VR-Spielen
- Mikrocontroller: Auswahl von 2–3 Produkten, auf die man sich konzentriert
→ Microchip SAM D21, D51, D11
→ Alle drei unterstützen USB, flexibles SERCOM, mehrkanalige 12-Bit-ADC, fortgeschrittene Timer usw.
→ Zusätzlich werden RP2040 (wenn kein analoges I/O benötigt wird) und STM32H7 (wenn Sound direkt in der Firmware erzeugt werden muss) in Betracht gezogen
- Hardware-Design: Verwendung des Open-Source-EDA-Tools KiCad
→ Eine KiCad-Bibliothek mit gemeinsamen Symbolen, Footprints und 3D-Modellen für die verwendeten Bauteile wird auf GitHub geteilt
→ Eine bevorzugte Liste wichtiger Bauteile wird als Notion-Seite veröffentlicht (Beschreibung, Teilenummer, Datenblatt, Hersteller, Kauflink, Verwendungszweck)
-
Firmware: Sprache, Bibliotheken, Build-System, Testing-Framework usw. (jeweils einzeln unten)
-
C, GCC, CMSIS
→ Verwendet wird C: alt, aber vertraut
→ Es gibt auch kostenpflichtige Compiler wie Keil/IAR, genutzt wird aber die Open-Source-GCC ARM Embedded Toolchain
→ Das von Microchip bereitgestellte HAL ist zu schwer handhabbar, daher werden die CMSIS-Bibliotheken direkt verwendet und darüber eine kleine Abstraktion geschrieben
CMSIS ist eine von ARM bereitgestellte herstellerunabhängige Hardware-Abstraktionsschicht
- Firmware-Bibliotheken
→ TinyUSB: eine hervorragende, kleine USB-Bibliothek
→ Marco Paland's Printf: eine für Mikrocontroller optimierte printf-Implementierung
→ libfixmath: eine kleine Bibliothek für Festkomma-Arithmetik (nützlich für Mikrocontroller ohne Festkomma-Einheit)
→ µnit: ein sehr kleines und nützliches Testing-Framework
- Build-System
→ Builds mit Python und Ninja
→ Begann mit einem Makefile, wurde aber mit der Zeit zu schwer zu pflegen, daher der Wechsel
- Python-basiertes Tooling
→ Zentral verwaltet im Repository wintertools
→ Eine Sammlung von Skripten, die Builds und Tests rund um Firmware und Hardware unterstützen
- CircuitPython
→ Einige Produkte verwenden keine Custom-Firmware, sondern das für die Ausbildung mit Mikrocontrollern genutzte CircuitPython
→ Für Kundinnen und Kunden leicht anzupassen
→ Erleichtert Firmware- und Software-Entwicklung
→ Es gibt eine hervorragende Community unter der Betreuung von Adafruit
- Dokumentation & Benutzerhandbücher
→ Geschrieben in Markdown. Mit MkDocs zu statischen Webseiten gebaut und auf GitHub Pages gehostet
→ Nutzung des Bulma-CSS-Frameworks
→ Um es einfach zu halten, werden Sass/LESS usw. nicht verwendet
- JavaScript
→ Das zu komplexe Node.js-Ökosystem wurde bewusst vermieden
→ Verwendet werden normales JavaScript sowie Module, Klassen, Arrow Functions, Canvas, WebMIDI, TypedArray usw.
→ Für die Zukunft setzt man Hoffnungen auf Deno
2 Kommentare
Cool … dass sie das ganz allein macht …
Der obige Artikel und sein Titel sind ähnlich, aber da es sich um ein Hardware-Startup handelt, ist die Geschichte völlig anders, weshalb ich ihn mit großem Interesse gelesen habe.