/note/tech

TinyGoで始める組み込みプログラミング

TinyGoは本家Go言語の組み込み向けのサブセット版。

本家Go言語はPOSIX-OSに対する機能依存が大きく、リッチなランタイムを持っています。その為、本来はOSを持たない組み込み用途には不向きでした。

TinyGoはPOSIX-OSに依存する機能を簡易的な実装で代用しつつLLVM(コンパイラを作る為のフレームワーク)を使って組み込み向けアーキテクチャをサポートするGo言語のコンパイラです。

つまりサポートするCPUアーキテクチャはLLVMがサポートするものを前提にしています。

興味深い

現状の主なサポートターゲット

  • Arduino Uno
  • BBC:Microbit
  • BLUEPILL
  • CIRCUIT PLAYGROUND EXPRESS
  • DIGISPARK
  • ITSYBITSY M0
  • PCA10031
  • PCA10040
  • PCA10056
  • NRF52840-MDK
  • REEL BOARD
  • WebAssembly

Nordic系チップへの対応が優先的に進んでいます。 WebAssembly出力はLLVMがサポートしていたこともあり副産物的にサポートされました。

本家のGo言語は最近WebAssembly出力が可能になったんですが、成果物のサイズがTinyGoの方が十分の一程度とコンパクトなのでWebへの利用が拡大しそうな兆候が現れてきています。