-
Explicación de las tecnologías y herramientas que usa la ingeniera que opera Winterbloom, una empresa de sintetizadores de código abierto
-
En lugar de perseguir lo último, alcanza sus objetivos usando herramientas y tecnologías que entiende bien
"Lateral thinking with withered technology"
→ pensamiento lateral que propone que, al enfocarse en la diversión aprovechando tecnología marchita (en vez de tecnología nueva), se puede crear algo completamente nuevo
→ una frase de "Gunpei Yokoi", quien dio forma a la filosofía de desarrollo tecnológico del Nintendo moderno: la persona que creó las consolas portátiles de Nintendo (Game Boy) y juegos de VR
- Microcontroladores: elegir 2 o 3 productos en los que concentrarse
→ Microchip SAM D21, D51, D11
→ los tres soportan USB, SERCOM flexible, ADC multicanal de 12-bit, temporizadores avanzados, etc.
→ además, está considerando RP2040 (cuando no se necesita I/O analógica) y STM32H7 (cuando hay que generar sonido dentro del firmware)
- Diseño de hardware: uso de KiCAD, una herramienta de automatización de diseño electrónico de código abierto
→ comparte en GitHub bibliotecas para KiCad con símbolos comunes, footprints y modelos 3D de los componentes que usa
→ también publica una lista de componentes principales preferidos en una página de Notion (descripción, número de parte, datasheet, fabricante, enlace de compra, uso)
-
Firmware: lenguaje, bibliotecas, sistema de compilación, framework de pruebas, etc. (uno por apartado abajo)
-
Lenguaje C, GCC, CMSIS
→ usa el lenguaje C, antiguo pero familiar
→ aunque existen compiladores de pago como Keil/IAR, usa el GCC ARM Embedded Toolchain, que es de código abierto
→ como el HAL que ofrece Microchip es demasiado difícil de manejar, usa directamente la biblioteca CMSIS y escribe una pequeña abstracción encima
CMSIS es una capa de abstracción de hardware independiente del proveedor ofrecida por ARM
- Bibliotecas de firmware
→ TinyUSB: una biblioteca USB excelente y pequeña
→ Marco Paland's Printf: implementación de printf optimizada para microcontroladores
→ libfixmath: una pequeña biblioteca para operaciones de punto fijo (útil en microcontroladores sin unidad de punto fijo)
→ µnit: un framework de pruebas muy pequeño y útil
- Sistema de compilación
→ compila con Python y Ninja
→ comenzó con Makefile, pero gradualmente se volvió difícil de usar, así que lo cambió
- Tooling basado en Python
→ se gestiona de forma integrada en el repo llamado wintertools
→ conjunto de scripts que ayudan con compilación y pruebas relacionadas con firmware y hardware
- CircuitPython
→ algunos productos no usan firmware personalizado, sino CircuitPython, que se utiliza para la enseñanza de microcontroladores
→ facilita que los clientes personalicen el producto
→ hace más sencillo el desarrollo de firmware/software
→ tiene una excelente comunidad mantenida por Adafruit
- Documentación y guías de usuario
→ se escriben en Markdown. Se compilan como páginas web estáticas con MkDocs y se alojan en GitHub Pages
→ usa el framework CSS Bulma
→ para mantener la simplicidad, no usa Sass/LESS ni similares
- JavaScript
→ evitó deliberadamente el ecosistema demasiado complejo de Node.js
→ usa JavaScript común junto con módulos, clases, funciones flecha, Canvas, WebMIDI, TypedArray, etc.
→ espera con interés a Deno en el futuro
2 comentarios
Qué genial... que haya hecho eso ella sola...
El texto y el título de arriba son parecidos, pero como se trata de una startup de hardware, la historia es completamente distinta, así que me resultó una lectura interesante.