コラム

Column

ご挨拶

STM32® N6570-DK上でZephyrをデバッグする

Wind River セキュリティ認証 コラム 特集

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には以下のソフトウェアをインストールしておく必要があります。

開発環境の構築

開発環境の構築はコマンドラインからできます。
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に興味を抱くきっかけになりましたら幸いです。

また弊社ではZepher開発・運用支援サービスを提供しておりますので、こちらも参考にしてください。

ウインドリバーのZephyr RTOS 開発・運用支援サービス

詳細資料をご希望の方には送付させていただきますので、以下フォームよりメールアドレスをご登録ください。

    メールアドレス(必須)

    <個人情報の取り扱い>

    ※上記内容は、弊社の掲げる個人情報保護方針に沿って管理し、本件に関するお問い合わせ、
    お申込み等いただいた内容への対応のために利用する場合がございます。
    お客様の同意なく目的外の利用や第三者への開示、提供することはございません。
    詳細につきましては、当サイトの「個人情報保護方針」をご参照ください。

    「個人情報保護方針」に同意し、送信する
    (必須)


    • STM32® は STMicroelectronics International N.V. またはその関連会社の登録商標です。
    • Arm および Cortex は、米国およびその他の国における Arm Limited(またはその子会社)の登録商標です。

    [2025年08月22日 時点]

    POPULAR COLUMN
    人気コラム



    メールマガジン

    「ご登録いただいた内容は、弊社の掲げる「個人情報保護方針」に沿って管理し、本件に関するお問い合わせ、お申込み等いただいた内容への対応のために利用する場合がございます。なお、お客様の同意なく目的外の利用や第三者への開示、提供を行うことはございません。」

    CONTACT

    まずはお気軽に
    お問い合わせください!

    PAGE TOP