Pico PR

Raspberry Pi Pico2で Zephyr OSを使う方法 ~ 環境構築編 ~

記事内に商品プロモーションを含む場合があります

はじめに

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

環境

この記事で使用する環境は以下の通りです。

環境 内容 バージョンなど
開発用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を以下のように接続します。

pico2とPicoProbeの接続方法を説明する画像
pico2とDebugProbeの接続
ピン番号 内容 接続先 備考
SWDIO DebugProbe(黄) ケーブルはDebugProbe同梱の物を使用しています。
GND DebugProbe(黒)
SWCLK DebugProbe(橙)

Picoピンアサイン(Pin-Out)

RaspberryPi Picoのピンアサイン(pinout)の画像

Pico公式サイトより引用

使用する部品

RaspberryPi Pico 2

今からPicoを揃えるなら、RaspberryPi Pico2がおすすめです。Picoに比べて1.5倍高速で、値段はほぼ一緒です。

ノーブランド品
¥1,475 (2024/11/27 21:32時点 | Amazon調べ)

すぐに使えるキットもあります

ピンヘッダが半田付けされて、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」で実行してください。

Chocolateyのサイト: https://chocolatey.org/install

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社(デバッグツールの開発・販売などの会社)」のページからダウンロードを行います。

sysprog社 配布先URL:https://gnutoolchains.com/arm-eabi/openocd

ダウンロードが完了したらファイルを解凍します。

解凍してできた「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が点滅します。

Zephyr OSのサンプルプログラムを実行して、Pico2の本体LEDが点滅している画像
サンプルプログラムの実行結果

まとめ

RaspberryPi Pico2で、Zephyr(ゼファー) OSを使う方法について解説しました。

公式の手順はしっかり作られていますが、あくまで汎用的な内容なのでPico2に限定した手順を解説してみました。

OpenOCDでおおいにハマりましたが、その分、Pico2でZephyr OSを使いたい方の参考になればうれしいです。

Zephyr OSをもっと知りたい!

「Zephyr OSのことがもっと知りたい!」という方には、2024年9月に発売されたZephyr OSの本があるようです。完全英語版で私は読めないのですが、チャレンジしたい方は以下からどうぞ。

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index