TinyGo - compilador Go compacto baseado em LLVM
(github.com/tinygo-org)- Pode ser usado em microcontroladores, WebAssembly (WASM/WASI) e ferramentas de CLI
- Suporta a maior parte dos pacotes da biblioteca padrão e consegue compilar código Go sem modificações
- Usa LLVM internamente para gerar código pequeno e eficiente
- Excelente suporte a CGo
4 comentários
Quando usei o TinyGo nas placas Arduino Nano 33 (baseadas em nrf52 ou Nano 33 IoT), as funcionalidades básicas funcionaram bem até que bastante (tirando o problema de o bonding BLE não funcionar...).
Também acho que é difícil usar isso comercialmente, mas, ainda assim, foi divertido ver que os canais de Go realmente rodavam melhor do que eu esperava, então pareceu ok para brincar e fazer alguma coisa por diversão.
Para firmware hoje em dia, o Zephyr RTOS (C/C++) parece uma opção bem interessante; ele recebe suporte da Linux Foundation, está sendo adotado de forma séria como o principal RTOS da Nordic Semiconductor, e seus pontos fortes são o suporte a vários protocolos e o tooling.
No caso do Rust, já ouvi dizer que muitas vezes é preciso usar
no_std, então não é algo tão simples, mas como nunca apliquei isso na prática, eu também fico curioso hahaO suporte a MCUs é um pouco limitado, e o suporte para linhas de produtos bastante usadas como STM, NXP e TI deixa um pouco a desejar.
No ESP32, Wi‑Fi e Bluetooth não funcionam, e ainda parece faltar um pouco para dizer que está pronto para produção.
Pessoalmente, entre esses projetos de aplicar linguagens modernas a MCUs, o que mais me anima é o Rust em embarcados.
Olá, tenho uma pergunta porque achei interessante o ponto que você mencionou de passagem.
No passado, estudei e escrevi firmware em C (STM, TI), mas desisti porque não combinava muito comigo. Agora, depois de muito tempo, quero voltar a estudar essa área de uma forma um pouco mais moderna (?).
No contexto de firmware, o Rust ainda estaria mais próximo da tendência atual?
No firmware, dá para dizer que a aplicação de Rust ainda definitivamente não está pronta para produção~~~. Mas a cobertura de dispositivos com suporte está se ampliando muito rapidamente..
Uma notícia interessante é que parece que recentemente houve uma reunião, algo como um trabalho preliminar, para incluir Rust na lista do padrão AutoSAR..
Na área de firmware, por causa do ambiente operacional especial, se estourar algum bug relacionado a
unmanaged memory, o impacto é crítico..No lado de firmware/mcu,
software emulation in embedded, perfect unit testing without boards
são temas bastante apresentados em seminários..
Como tópico avançado, talvez algo como onnx in mcu ??