はじめに
RaspberryPi Pico2で、Zephyr(ゼファー) OSを使う方法について解説します。
仕事がら長らくRTOSを使っているのですが、ZephyrOSは気になりつつもまださわっていませんでした。
RaspberryPi Pico2でも使えることがわかったので、今回は特に情報が少いWindows環境で、環境構築~Pico2に書き込み&実行するところまでを、公式の説明をベースで解説したいと思います。
「ZephyrOSってなに?」「Pico2(RP2350)に入れる方法を日本語で知りたい」という方は、ぜひご覧ください。
記事内の手順は、以下のZephyr OS公式の手順(英語)をベースに、Pico2で使うように一部コマンド等を変更や、補足などを入れています。
https://docs.zephyrproject.org/latest/develop/getting_started/index.html
~ この記事の内容 / Contents ~
環境
この記事で使用する環境は以下の通りです。
環境 | 内容 | バージョンなど |
開発用PCのOS | Windows11 | |
言語 | C++ | |
環境 | West | Ver.1.3.0 |
ボード | RaspberryPi Pico2 | |
デバッガ/ライタ | RaspberryPi Debug Probe | |
OpenOCD | 0.10.0 (20240916版) | |
OS | Zephyr OS |
Zephyr OSってなに?

※ Githubより画像を引用
Zephyr OSは、IoTデバイスや組み込みシステム向けに設計された、軽量かつなオープンソースのリアルタイムオペレーティングシステム(RTOS)です。
メモリや処理能力が限られた小さなデバイスや、より強力なプロセッサを搭載したシステムまで、幅広いデバイスに対応できます。
また、リアルタイムOSであるため、厳密なタイミングが要求される制御システムへの使用にも適しています。
公式HP | https://www.zephyrproject.org/ |
GitHubページ | https://github.com/zephyrproject-rtos |
安定バージョン | 4.0.0 (2024/11/16) |
ライセンス | Apache-2.0 license |
GitHub Star | 11.3k |
※ GitHub Starは、2025年1月現在の値です。
RaspberryPi Pico2との接続
Pico2とDebugProbeを以下のように接続します。
ピン番号 | 内容 | 接続先 | 備考 |
– | SWDIO | DebugProbe(黄) | ケーブルはDebugProbe同梱の物を使用しています。 |
– | GND | DebugProbe(黒) | |
– | SWCLK | DebugProbe(橙) |
Picoピンアサイン(Pin-Out)
※ Pico公式サイトより引用
使用する部品
RaspberryPi Pico 2
今からPicoを揃えるなら、RaspberryPi Pico2がおすすめです。Picoに比べて1.5倍高速で、値段はほぼ一緒です。

すぐに使えるキットもあります
ピンヘッダが半田付けされて、USBケーブルやピンのレイアウト表までついた、すぐに使えるセットもあります。

RaspberryPi Debug Probe(デバッグプローブ)
RaspberryPi 公式の低価格で高機能なデバッグプローブです
SWD(Serial Wire Debug)ラインを使って、プログラムの状態を監視したり、BOOTSELボタンを押さずに書き込みを行うことができます。
RaspberryPiのマークがついたUSBケーブルが同梱されているのもうれしいポイントです。

Zephyr OSを使うまでの流れ
以下の流れで説明していきます。
- Windowsへの開発環境のインストール
- ビルド関連ツールのインストール
- Python仮想環境の構築
- West/West SDKのインストール
- サンプルプログラムのビルド
- サンプルプログラムの書き込み・実行
Windowsへの開発環境のインストール
開発環境をセットアップします。PCの環境は以下の通りです。
ビルド関係のパッケージのインストールで数ギガレベル消費していくので、空き容量は多い方が安心です。
環境 | バージョンなど | 備考 |
OS | Windows11 | |
機種 | Lenovo ThinkPad T14s Gen2 | |
CPU | Intel Core i5 | |
メモリ | 16GB | |
ストレージ | 10GB以上の空きを推奨 |
Chocolateyのインストール
Windowsのパッケージ管理ソフトである「Chocolatey」をインストールします。
以下のリンク先のSTEP2の部分から、下記のコマンドをコピーして「管理者権限で起動したPowerShell」で実行してください。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- リンク先のSTEP1にメールアドレスを入れる欄がありますが、オプションなので入力しなくてもOKです。
- STEP2はデフォルトの「Individual」(個人)を選択してください。
インストールが完了したら、PowerShellを閉じます。
ビルド関連ツールのインストール
Chocolatyを使って、Zephyr自体やサンプルプログラムのビルド環境を構築に必要な、CMakeやninja、Pythonなどのツールをインストールします。
この項目のコマンドは「管理者権限で開いたコマンドプロンプト」で実行してください。WSL・PowerShellは推奨されていません。
確認メッセージの無効化
インストールの確認を無効化するために、以下のコマンドを実行します。
choco feature enable -n allowGlobalConfirmation
Cmakeのインストール
以下のコマンドで、CMakeをインストールします。
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
その他の関連ツールのインストール
以下のコマンドで、Pythonなどビルド環境に必要なツールをインストールします。
choco install ninja gperf python311 git dtc-msys2 wget 7zip
関連ツールのインストールが終了したら、管理者権限で開いたコマンドプロンプトを終了してください。
Python仮想環境構築とZephyrのソースコード取得
以下の手順で、Pythonの仮想環境構築と、Zephyr OSのソースコードを取得します。
以降のコマンドは「通常ユーザで開いたコマンドプロンプト」で実行してください。WSL・PowerShellは推奨されていません。
「管理者権限のコマンドプロンプト」を使うと失敗してしまいます。
Python仮想環境の構築
ディレクトリを移動します。
cd %HOMEPATH%
Pythonの仮想環境を作成します。
python -m venv zephyrproject\.venv
★ 仮想環境をアクティブ化 ★
以下のコマンドで、Pythonの仮想環境をアクティブ化します。
zephyrproject\.venv\Scripts\activate.bat
Westのインストール
以下のコマンドで、Zephyr OS用のビルド・フラッシュなどの操作を一元管理するツールである「West」をインストールします。
移行のコマンドはコマンドプロンプトの先頭に(.venv)が付いた状態(Pythonの仮想環境下)で実行してください。
.venvはついていない場合は「★」マークを付けたアクティブ化のコマンドを再度実行して仮想環境を有効にしてください。
pip install west
Zephyrのインストール
以下のコマンドでZephyr OSのソースコードを取得します。
west init ~/zephyrproject
cd ~/zephyrproject
west update
以下のコマンドでビルドに必要な構成や設定などをエクスポートします
west zephyr-export
以下のコマンドで、Zephyrに必要なpipパッケージをインストールします。
west packages pip --install
Zephyr SDKのインストール
Zephryアプリケーション用のビルドに必要なツールチェーン(コンパイラ・リンカなど)が含まれたZephyrのソフトウェア開発キット(SDK)をインストールします。
この項目も、前に手順に引き続き、以下の状態で実行してください。
- 「通常ユーザで開いたコマンドプロンプト」
- 「コマンドプロンプトの先頭に(.venv)が付いた状態」
cd %HOMEPATH%\zephyrproject\zephyr
west sdk install
OpenOCDのインストール
RaspberryPi Debug Probeで書き込みやデバッグを行うための「OpenOCD」をインストールします。
OpenOCDの公式サイトはソースコードの配布のみで、自身でビルドするのは大変なので、Zephyr OSの公式にも記載のある「sysprog社(デバッグツールの開発・販売などの会社)」のページからダウンロードを行います。
ダウンロードが完了したらファイルを解凍します。
解凍してできた「OpenOCD」フォルダを「C:\Program Files」にコピーし、コピーが終わったら、ウインドウズの「システムの環境変数」の中の「Path」最後に「C:\Program Files\OpenOCD\bin」を追加してください。
Lチカ サンプルプログラムのビルド
環境の構築が完了したら、Pico2本体のLEDを点灯させる(Lチカ)サンプルプログラムをビルドします。
以下のコマンドを実行してください。
cd %HOMEPATH%\zephyrproject\zephyr
west build -p always -b rpi_pico2/rp2350a/m33 samples/basic/blinky
※「rpi_pico2/rp2350a/m33」の部分はPico2専用の設定です。
Pico2へのFlash
以下のコマンドで、Pico2へプログラムを書き込みます。
west flash --openocd openocd-rp2350
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner openocd
-- runners.openocd: Flashing file: C:/Users/*******/zephyrproject/zephyr/build/zephyr/zephyr.hex
Open On-Chip Debugger 0.10.0 (2024-09-16)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
set_adapter_speed_if_not_set
Info : Hardware thread awareness created
Info : Hardware thread awareness created
ocd_process_reset_inner
checking adapter speed...
Error: BUG: unknown adapter clock mode
adapter speed: 5000 kHz
Info : Using CMSIS-DAPv2 interface with VID:PID=0x2e8a:0x000c, serial=E66258881785842B
Info : CMSIS-DAP: SWD supported
Info : CMSIS-DAP: Atomic commands supported
Info : CMSIS-DAP: Test domain timer supported
Info : CMSIS-DAP: FW Version = 2.0.0
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 0 SWDIO/TMS = 0 TDI = 0 TDO = 0 nTRST = 0 nRESET = 0
Info : CMSIS-DAP: Interface ready
Info : clock speed 5000 kHz
Info : SWD DPIDR 0x4c013477
Info : [rp2350.cm0] Cortex-M33 r1p0 processor detected
Info : [rp2350.cm0] target has 8 breakpoints, 4 watchpoints
Info : [rp2350.cm0] Examination succeed
Info : [rp2350.cm1] Cortex-M33 r1p0 processor detected
Info : [rp2350.cm1] target has 8 breakpoints, 4 watchpoints
Info : [rp2350.cm1] Examination succeed
Info : starting gdb server for rp2350.cm0 on 3333
Info : Listening on port 3333 for gdb connections
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
0* rp2350.cm0 cortex_m little rp2350.cpu unknown
1 rp2350.cm1 cortex_m little rp2350.cpu unknown
[rp2350.cm0] halted due to breakpoint, current mode: Thread
xPSR: 0xf9000000 pc: 0x00000088 msp: 0xf0000000
[rp2350.cm1] halted due to debug-request, current mode: Thread
xPSR: 0xf9000000 pc: 0x00000088 msp: 0xf0000000
Error executing event reset-init on target rp2350.cm0:
C:\Program Files/OpenOCD/share/openocd/scripts/target/rp2350.cfg:78: Error: invalid command name "rp2xxx"
in procedure 'ocd_process_reset'
in procedure 'ocd_process_reset_inner' called at file "embedded:startup.tcl", line 1225
at file "C:\Program Files/OpenOCD/share/openocd/scripts/target/rp2350.cfg", line 78
Info : RP2040 Flash Probe: 33554432 bytes @0x10000000, in 8192 sectors
Info : Padding image section 0 at 0x1000001c with 228 bytes
Info : Padding image section 1 at 0x10003ec0 with 64 bytes (bank write end alignment)
Warn : Adding extra erase range, 0x10003f00 .. 0x10003fff
auto erase enabled
wrote 16128 bytes from file C:/Users/******/zephyrproject/zephyr/build/zephyr/zephyr.hex in 0.425238s (37.038 KiB/s)
shutdown command invoked
openocd-rp2350について
2025年2月現在、公式の「openocd.exe」ではPico2への書き込みに対応していないので、「–openocd」オプションで、Pico2への書き込みができる「openocd-rp2350.exe」を指定する必要があります。
詳しくは別記事にまとめていますので、気になる方は以下をご覧ください。
実行結果
Flashが完了すると、以下の矢印の部分にある、Pico2本体のLEDが点滅します。
まとめ
RaspberryPi Pico2で、Zephyr(ゼファー) OSを使う方法について解説しました。
公式の手順はしっかり作られていますが、あくまで汎用的な内容なのでPico2に限定した手順を解説してみました。
OpenOCDでおおいにハマりましたが、その分、Pico2でZephyr OSを使いたい方の参考になればうれしいです。
Zephyr OSをもっと知りたい!
「Zephyr OSのことがもっと知りたい!」という方には、2024年9月に発売されたZephyr OSの本があるようです。完全英語版で私は読めないのですが、チャレンジしたい方は以下からどうぞ。

質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。