STM32® N6570-DK上でZephyrをデバッグする
Zephyrとは
Zephyrは、Linux Foundationによってオープンソースで開発が進めらているIoT向けのRTOS(リアルタイムオペレーティングシステム)です。
軽量で、x86、arm、RISC-Vなどのさまざまなアーキテクチャに対応し、リアルタイム機能を持ち、さまざまなプロトコルスタックを実装し、セキュリティを重視していることなどを特長とします。
STM32N6570-DKとは
STM32N6570-DKは、2024年にSTMが販売を開始した評価用ボードです。
Arm® Cortex®-M55コアベースのマイクロコントローラ(STM32N657X0H3Q)が搭載されています。
本コラムでは、STM32N6570-DK上でZephyrを動かして、シリアルとLEDとデバッガーを動作させる手順を説明します。
Windows環境ではGUIによるデバッグは未サポートのようなので、コマンドラインでデバッグを行う方法も簡単に説明します。
開発環境
システム構成要素 | 詳細 |
ホストOS | Windows 11 |
ターゲットOS | Zephyr v4.2.0-rc2 |
ターゲットボード | STM32N6570-DK |
ホストマシンはUSB-Cポートがあるとよいです。
Type-Aだと供給電力の問題で、カメラやディスプレイを動かすときに特に動作が不安定になることがあります。
関連ソフトウェア
Windowsには以下のソフトウェアをインストールしておく必要があります。
ソフトウェア | URL |
Python | https://www.python.org/downloads/windows/ |
7-Zip | https://www.7-zip.org/download.html |
CMake | https://cmake.org/download/ |
STM32CubeIDE | https://www.st.com/en/development-tools/stm32cubeide.html |
STM32CubeProgrammer | https://www.st.com/en/development-tools/stm32cubeprog.html |
STM32CubeCLT | https://www.st.com/en/development-tools/stm32cubeclt.html |
TeraTerm | https://github.com/TeraTermProject/teraterm/releases |
開発環境の構築
開発環境の構築はコマンドラインからできます。
Windows PowerShellを開いて、以下のコマンドを実行すれば開発環境を構築できます。
> mkdir zephyr
> cd zephyr
> python -m venv zephyrproject\.venv
> Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
> zephyrproject\.venv\Scripts\Activate.ps1
> pip install west
> west init zephyrproject
> cd zephyrproject
> west update
> west zephyr-export
> west packages pip --install
> $env:PATH = "C:\zephyr;" + $env:PATH
> $env:PATH = "C:\Program Files\7-Zip;" + $env:PATH
> cd zephyr
> west sdk install
二回目以降
いちど「west sdk install」まで実行したらこれ以降は、
PowerShellを開くたびに以下のコマンドを実行してPythonの仮想環境を有効化することでZephyrのビルドができるようになります。
> cd C:\zephyr
> Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
> zephyrproject\.venv\Scripts\Activate.ps1
> cd zephyrproject\zephyr
samples/basic/blinkyアプリケーションのビルド
開発環境の構築とシェルの設定ができたら、以下のコマンドでsamples/basic/blinkyアプリケーションをビルドできます。
samples/basic/blinkyは、LEDをチカチカ点灯させる、いわゆるエルチカです。
> west build -b stm32n6570_dk//fsbl samples/basic/blinky
(–sysbuildオプションつきのMCUBootベースのアプリケーションだと、セキュアブートとなってしまい、デバッガーが接続できなくなってしまうようです。)
アプリケーションの書き込み
アプリケーションの書き込みを書き込むには、STM32N6570-DKのブートスイッチ「Development boot」にする必要があります。
以下が「Development boot」の設定です。
BOOT0: 0 (左)
BOOT1: 1 (右)
「STLINK V3EC」ポートをUSBケーブルでPCとつないだ状態で、以下のコマンドを実行すれば、ボードのフラッシュメモリにプログラムを書き込めます。
> west flash
シリアルとLED
プログラムを実行する前にTeraTermを起動して「STMicroelectronics STLink Virtual COM Port」を開いておきます。
また、シリアルポートの設定をしておきます。
パラメータ | 値 |
ボー・レート | 115200 |
データ | 8 bit |
パリティ | none |
ストップ | 1 bit |
フロー制御 | none |
ボードのブートスイッチを「Flash boot」にし、ボードのリセットスイッチを押すと、プログラムを実行できます。
以下が「Flash boot」の設定です。
BOOT0: 0 (左)
BOOT1: 0 (左)
シリアルの動作が確認できました。
LEDの動作も確認できました。
デバッグ設定
アプリケーションのデバッグのためには、コンパイル最適化を抑制する必要があります。
C:\zephyr\zephyrproject\zephyr\samples\basic\blinky の prj.conf で、デバッグ用のオプションの設定(CONFIG_DEBUG)を記述することで、コンパイル最適化を抑制できます。
prj.confの内容は、以下のようにすればよいです。
CONFIG_GPIO=y
CONFIG_DEBUG=y
「west build ~」で再ビルドして、「west flash」でアプリ再書き込みを行えば、デバッグができるようになります。
デバッガー
以下のコマンドでデバッガーを起動できます。
> west debug
デバッガーの動作が確認できました。
コマンドラインからのデバッグは、デバッガーへの命令をすべてコマンドで送る必要があります。
ブレークポイント
ブレークポイント(一時停止する箇所)の設定は「b 関数名」でできます。
その後、「c」でプログラムを実行できます。
ブレークポイントに到達すると、プログラムはブレーク(一時停止)します。
「l」で周辺のソースコードを表示できます。
z_cstart()はZephyrで最初の方に呼ばれる初期化の関数です。
ステップ実行
プログラムを一行ずつ実行するのは「s」でできます。
「s」は「ステップ・イン」で、関数があると関数の中に入ります。
「スペース」を押すと直前のコマンドを繰り返せます。
「ステップ・オーバー」は「n」で、関数があると関数の中に入らずに次の行に進みます。
バックトレース
「bt」はバックトレースを表示します。
これで関数の呼び出し関係がわかります。
変数の値の表示
ローカル変数の値の表示は「i lo」でできます。
main()関数の44行目まで飛んで、ローカル変数の値を見てみます。
変数の値の変更
変数の値の変更は「p 変数名=値」でできます。
ローカル変数led_stateの値を変更してみます。
その後コンソールでprintf()の表示をみると、値が変更されて結果も変わったたことがわかりました。
最後に
以上になります。
このコラムが、皆様がSTMボードやZephyrに興味を抱くきっかけになりましたら幸いです。
詳細資料をご希望の方には送付させていただきますので、以下フォームよりメールアドレスをご登録ください。
- STM32® は STMicroelectronics International N.V. またはその関連会社の登録商標です。
- Arm および Cortex は、米国およびその他の国における Arm Limited(またはその子会社)の登録商標です。
[2025年08月22日 時点]