WSL2にインストールしたtinygoでtinygo monitorを実行
どうしてもWSL2でtinygoを動かして、
rapberry pi pico相手に tinygo monitor
を実行したかった。
備忘録としてメモをまとめる。
実行環境
- Windows 11
- WSL2 Ubuntu 22.04LTS
- golang 1.22.5
- tinygo 0.32.0
手順
1. golang, tinygoをインストール
2. ソースコードを作成
今回は下記 sample.go
package main
import "time"
func main() {
for {
println("hello world!")
time.Sleep(time.Second)
}
}
3.モジュール解決
go mod init sample
go mod tidy
4. コンパイル
tinygo build -target=pico -o ./sample.uf2 ./sample.go
5. rapberry pi picoにsample.uf2を書き込み
- PCにraspberry pi picoをBOOTSELを押しながら、書き込みモードでUSB接続
- エクスプローラーから先ほどコンパイルした「sample.uf2」をコピペ
- エクスプローラーが自動でとじられる。
6. PC側にusbipdをインストール
7. WSL2にシリアルポートをアタッチ
- 管理者権限でpowershellを起動
- USBシリアルデバイスとなっているデバイスを下記要領で探して、WSL2にアタッチする。
PS C:\WINDOWS\system32> usbipd list
Connected:
BUSID VID:PID DEVICE STATE
4-2 2e8a:000a USB シリアル デバイス (COM3) Shared
PS C:\WINDOWS\system32> usbipd attach --wsl --busid 4-2
※BUSIDは読み替えること
8. WSL2側でシリアルデバイスを使えるようにする
※シリアルデバイスとして、扱われているか確認する。
ls -ltr /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 4 02:54 /dev/ttyACM0
sudo chmod 777 /dev/ttyACM0
9. tinygo monitor
うまくいけば「hello world!」を確認できる
$ tinygo monitor -target=pico -baudrate=9600
Connected to /dev/ttyACM0. Press Ctrl-C to exit.
hello world!
hello world!
hello world!
備考
終わるときはpowershellでデタッチ
usbipd unbind --busid 4-2
※BUSIDは読み替え(4-2の箇所)