16 puntos por xguru 2021-05-31 | 2 comentarios | Compartir por WhatsApp
  • 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

 
daumkakao 2023-04-12

Qué genial... que haya hecho eso ella sola...

 
xguru 2021-05-31

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.