144Labの入江田です。
TinyGoでRaspberryPi-Picoの実装を作れるらしいので試してみました。
現状、rp2040チップサポートはjeffmhastings氏によって試験的に作られたばかり。ソースコードからのビルドが必要ですのでclangかgccおよびmake、git、cmake、 ninjaコマンドなどが必要です。あと最新のGo(現時点で1.16.2)も必要です。
TinyGoのビルド
git clone --recursive https://github.com/jeffmhastings/tinygo.git cd tinygo git switch rp2040 make gen-device-rp2040 make llvm-build make cp build/tinygo $(go env GOPATH)/bin/tinygo-rp2040
make llvm-build
はマシンによって2時間〜数時間コースなので注意してください。
サンプルコード
package main import ( "machine" "time" ) func main() { machine.LED.Configure(machine.PinConfig{Mode: machine.PinOutput}) for { machine.LED.High() time.Sleep(100 * time.Millisecond) machine.LED.Low() time.Sleep(200 * time.Millisecond) } }
ビルドと書き込み
tinygo-rp2040 build -target raspberrypi-pico -o sample.uf2 .
以上でビルドできることがわかれば、以下の手動操作で書き込むことができます。
- リセットを押しながらPicoにUSB給電すると書きこみモードになります。
- sample.uf2ファイルを「RPI-RP2」ドライブにドラッグ&ドロップします。
- 正常に書き込みができると強制アンマウントされます。
以下の表示が出るのは無視しましょう。
Pico基板上の緑LEDがチカチカすれば成功です!
tinygo flash対応
現状のrp2040ブランチはflashサブコマンドサポートがまだ入っていません。 こういうとき、以下のconfig.jsonを書けば追加対応が可能です。
{ "inherits": ["raspberrypi-pico"], "flash-method": "msd", "msd-volume-name": "RPI-RP2", "msd-firmware-name": "firmware.uf2" }
tinygo-rp2040 flash -target config.json .