12 ポイント 投稿者 xguru 2022-06-13 | 4件のコメント | WhatsAppで共有
  • マイクロコントローラ、WebAssembly(WASM/WASI)、CLIツールなどで利用可能
  • 標準ライブラリの大半のパッケージをサポートし、修正なしでGoコードをコンパイル可能
  • 内部的にLLVMを利用して、小さく効率的なコードを生成
  • 優れたCGoサポート

4件のコメント

 
bus710 2022-06-13

TinyGo を Arduino Nano 33 ボード群(nrf52 ベースまたは Nano 33 IoT)で使ってみたところ、基本的な機能はかなりよく動きました(BLE ボンディングができない問題はありましたが……)。 個人的にも商用利用は厳しいと思いますが、それでも思ったより Go のチャネルがちゃんと動くので、遊びで何か作るには悪くありませんでした。 最近のファームウェア用途なら Zephyr RTOS(C/C++)がかなり良さそうです。まず Linux Foundation の支援を受けていますし、Nordic Semi の主要 RTOS として本格的に使われており、多様なプロトコル対応とツーリングが強みです。 Rust の場合は no_std でやらなければならないことが多くて簡単ではない、という話を聞いたことがありますが、実際に適用したことがないので私も気になります(笑)

 
jjpark78 2022-06-13

対応しているmcuがやや限定的で、広く使われている stm や nxp、ti 製品群への対応もいまひとつですね。
Esp32 は Wi-Fi と Bluetooth が使えず、まだプロダクションレディと言うには少し物足りないように思います。

個人的には、こうしたモダン言語の mcu 適用プロジェクトの中では rust in embedded にいちばん期待しています.

 
tequila 2022-06-13

こんにちは。通りすがりにおっしゃっていた点が興味深く、質問させてください。
以前、Cでfwを勉強して書いた経験があるのですが(stm、ti)、自分には合わずに諦めました。かなり時間がたった今、もう一度その分野をもう少しモダンに(?)学び直してみたいと思っています。
ファームウェアでは、Rustのほうがやはりもう少しトレンドに近いのでしょうか?

 
jjpark78 2022-06-15

ファームウェアにおけるRustの適用は、まだ production ready だとまでは確実には言えない、という話はできます。ですが、対応可能なデバイスのカバレッジは非常に速いペースで広がっています。

興味深いニュースとしては、最近 AutoSAR 標準のリストに Rust を載せるための事前作業のような会議があったらしい、という話もあります。

ファームウェア分野は特殊な動作環境のため、unmanaged memory 関連でバグが起きると致命的なんです。

ファームウェアの MCU 側では

software emulation in embedded,
perfect unit testing without boards

といったテーマがセミナーでよく発表されます。

advanced topic としては onnx in mcu あたりでしょうか ??