16 pontos por xguru 2021-05-31 | 2 comentários | Compartilhar no WhatsApp
  • 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

 
daumkakao 2023-04-12

Que incrível... fazer tudo isso sozinho...

 
xguru 2021-05-31

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.