TinyGo - LLVM기반의 소형 Go 컴파일러
(github.com/tinygo-org)- 마이크로콘트롤러, WebAssembly(WASM/WASI) 및 CLI 도구 등에서 사용 가능
- 대부분의 표준 라이브러리 패키지를 지원하며 수정없이 Go 코드 컴파일 가능
- LLVM을 내부적으로 이용해서 작고 효율적인 코드를 만들어 냄
- 훌륭한 CGo 지원
TinyGo를 아두이노 nano 33 보드들 (nrf52기반 또는 nano 33 iot)에 사용 해봤을 때, 기본적인 기능들은 꽤 잘 작동 했습니다 (ble 본딩이 안 되는 문제가...).
제 생각에도 상업용으로 쓰기에는 힘들다고 봅니다만, 그래도 생각보다 go 채널이 돌긴 돌아서 재미로 뭐 하기엔 괜찮았습니다.
요즘 펌웨어라면 Zephyr RTOS (c/c++)가 좀 괜찮을 것 같은데, 일단 리눅스재단의 지원을 받고 있고, 노르딕세미의 주 RTOS로 본격적으로 쓰이고 있으며, 다양한 프로토콜 지원과 툴링이 강점 입니다.
러스트의 경우 no_std로 해야하는 경우가 많아 쉽지 않다는 얘기를 들은 적이 있는데, 실제로 적용해 본적이 없어서 저도 궁금하네요 ㅎㅎ
지원하는 mcu가 좀 제한적이고 많이 두루 쓰이는 stm이나 nxp, ti 제품군의 지원이 좀 그렇네요
Esp32는 와이파이 블루투스 안되고, 아직 프로덕션 레디라고 하기에는 좀 부족한듯 하네요.
개인적으로 이런 모던 랭귀지의 mcu 적용 프로젝트 중에는 rust in embedded가 제일 기대가 됩니다.
안녕하세요, 지나가다 말씀하신 부분이 흥미로워 질문 드립니다.
과거에 c로 fw를 공부하고 작성한 경험이 있는데(stm, ti), 적성에 맞지 않아 포기했습니다. 시간이 많이 흐른 현재 다시 해당 분야를 좀 더 모던하게(?) 공부해보고 싶습니다.
펌웨어에서는 rust가 그래도 좀 더 트렌드에 가까울까요?
펌웨어에서 러스트의 적용은 아직 production ready는 확실히 아니다~~~ 라고 이야기 할 수 있습니다. 하지만 매우 빠르게 지원 가능 디바이스의 커버리지를 넓히고 있어요..
재미있는 뉴스는 최근 AutoSAR 표준에서 Rust를 목록에 넣기 위한 사전 작업같은 회의가 있었다고 하는것 같기도 하고요..
펌웨어 쪽은 특수한 동작 환경 때문에 unmanaged memory관련 해서 버그 터지면 치명타라서요..
펌웨어 mcu쪽에서는
software emulation in embedded,
perfect unit testing without boards
쪽의 주제들이 세미나에서 많이 발표되요..
advanced topic으로는 onnx in mcu 정도 일까요 ??