[非推奨]ZephyrRTOSでSTM32マイコン再入門~WSLのUbuntuに環境構築~
追記(2025/09/22)
Zephyr公式の Getting Started のWindowsタブに思いっきりWSL上での環境構築は非推奨と書かれていた。
以下理由により、WSL上でのZephyr学習は中断し、Windows上に直接環境を構築することとする。
- west flashでバイナリをマイコンボードに書き込んだ後にUSBを抜き差ししないとプログラムが実行されず、非効率。
- 上記でUSBを抜き差しするたびにWSL USB ManagerでSTLinkをWSL側にアタッチする必要があり、非効率。
はじめに
以前、Zephyr RTOSに挑戦した痕跡はあったものの、Blinkyのサンプルコードをビルドしたところで止まっていた。
今回は改めて、WSL上でNucleoF103RBを使ってZephyrを動かす手順を整理しながら進める。
前提
- ホストOS: Windows11
- WSL上のOS: Ubuntu22.04
- 使用するボード: NucleoF103RB Rev.C-03
環境構築手順
1. Zephyrのセットアップ
Zephyr公式の Getting Started に従って環境を構築する。
手順通りにセットアップできたところで、まずはBlinkyサンプルのビルドができるか確認する。
cd ~/zephyrproject/zephyr
west build -b nucleo_f103rb samples/basic/blinky
ビルドが成功すれば、バイナリが生成される。
2. WSLから書き込むための準備
WSL上ではUSBデバイスがそのまま使用できないため、ビルドしたバイナリを直接ボードに書き込むことができない。
そこでWSL USB Managerを使用して、ST-LinkをWSLにアタッチする。
NucleoF103RBはデフォルトでは書き込み時にSTM32CubeProgrammerが使用されるが、手順1.でインストールするSDKに標準で含まれていない。そのためOpenOCDを利用して書き込むこととする。
OpenOCDでST-Linkにアクセスするために、udevルールをコピーする
sudo cp ~/zephyr-sdk-0.17.4/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
3. WSLからの書き込み
OpenOCDを指定して書き込み。
west flash --runner openocd
書き込み後にオンボードのLEDが点滅することを確認する。
※ 筆者環境ではプログラム書き込み後にプログラムが実行されず、USB抜き差しで実行される挙動となった。本事象の解明&解決にも取り組みたい。
おわりに
WSL上のUbuntuにZephyrの環境を構築し、NucleoF103RBにサンプルのBlinkyをビルドして書き込むための手順をまとめた。
今後本シリーズでは、環境構築にとどまらず各種ペリフェラルを使うところまで踏み込みたい。
参考
Discussion