A stack tecnológica de uma empresa de hardware feminina de uma pessoa só
(blog.thea.codes)-
Explicação das tecnologias e ferramentas usadas por uma engenheira que opera a Winterbloom, uma empresa de sintetizadores open source
-
Em vez de correr atrás do estado da arte, ela alcança seus objetivos usando ferramentas e tecnologias que conhece bem
"Lateral thinking with withered technology"
→ um pensamento lateral que diz que, ao focar na diversão usando tecnologia “murcha” (e não tecnologia nova), é possível criar algo totalmente novo
→ frase de "Yokoi Gunpei", que moldou a filosofia de desenvolvimento tecnológico da Nintendo moderna: a pessoa que criou o console portátil da Nintendo (Game Boy) e jogos de VR
- Microcontroladores: selecionar 2 ou 3 produtos nos quais focar
→ Microchip SAM D21, D51, D11
→ os três oferecem USB, SERCOM flexível, ADC multicanal de 12-bit, temporizadores avançados etc.
→ além disso, considera RP2040 (quando não é necessário I/O analógico) e STM32H7 (quando é preciso gerar som dentro do firmware)
- Projeto de hardware: uso do KiCAD, uma ferramenta open source de automação de projeto eletrônico
→ compartilha no GitHub bibliotecas para KiCad com símbolos, footprints e modelos 3D comuns dos componentes que utiliza
→ também publica uma lista dos principais componentes preferidos em uma página do Notion (descrição, número da peça, datasheet, fabricante, link de compra, finalidade de uso)
-
Firmware: linguagem, bibliotecas, sistema de build, framework de testes etc. (um item por vez abaixo)
-
Linguagem C, GCC, CMSIS
→ usa a linguagem C por ser antiga, mas familiar
→ embora existam compiladores pagos como Keil/IAR, usa o open source GCC ARM Embedded Toolchain
→ como o HAL fornecido pela Microchip é difícil demais de lidar, usa diretamente a biblioteca CMSIS e escreve uma pequena abstração por cima
CMSIS é uma camada de abstração de hardware independente de fornecedor fornecida pela ARM
- Bibliotecas de firmware
→ TinyUSB: excelente biblioteca USB pequena
→ Marco Paland's Printf: implementação de printf otimizada para microcontroladores
→ libfixmath: pequena biblioteca para operações de ponto fixo (útil em microcontroladores sem unidade de ponto fixo)
→ µnit: framework de testes muito pequeno e útil
- Sistema de build
→ build com Python e Ninja
→ começou com Makefile, mas foi mudando porque ficou cada vez mais difícil de usar
- Tooling baseado em Python
→ gerenciamento integrado em um repositório chamado wintertools
→ coleção de scripts que ajudam com build/testes relacionados a firmware/hardware
- CircuitPython
→ alguns produtos usam CircuitPython, empregado na educação sobre microcontroladores, em vez de firmware customizado
→ facilita a customização pelo cliente
→ torna o desenvolvimento de firmware/software mais fácil
→ há uma excelente comunidade mantida pela Adafruit
- Documentação & guias do usuário
→ escritos em Markdown. O build gera páginas web estáticas com MkDocs, hospedadas no GitHub Pages
→ uso do framework CSS Bulma
→ para manter a simplicidade, não usa Sass/LESS etc.
- JavaScript
→ evitou deliberadamente o ecossistema Node.js, complexo demais
→ usa JavaScript comum com módulos, classes, arrow functions, Canvas, WebMIDI, TypedArray etc.
→ no futuro, está de olho no Deno
2 comentários
Que incrível... fazer tudo isso sozinho...
O texto e o título são parecidos com os do link acima, mas como se trata de uma startup de hardware, a conversa é totalmente diferente, então achei uma leitura bem interessante.