商用コンパイラでZephyr RTOS
はじめに
2025年3月にリリースされたZephyr 4.1.0でIAR Arm Toolchainが実験的に使えるようになります。

本記事では、IAR Arm ToolchainでZephyrのサンプルプロブラムをビルドし、ボード上で動作させてみます。
使用したボード
NXP社のFRDM-MCXN947を使用します。
Zephyrはこのボードで動作します。

上記ページの手順でGNUツールチェインでビルドしてフラッシュメモリへ書き込み、Zephyrが動作していることを前提に、以下の説明を進めます。
開発環境構築
Windows上でビルドするための開発環境を構築します。
(Linuxでもビルドできるかもしれませんが、試していません。)
IAR Embedded Workbench for Armのインストール
IAR Embedded Workbench for Armを入手してインストールしてください。
商用ツールなので、ライセンスを購入するか無償評価版をお試しください。
詳細は専門家に相談してください。

注意!
v9.70以上のIAR Embedded Workbench for Armをインストールしてください。

Zephyrの開発環境のインストールと設定
Getting Started GuideのWindowsのタブを表示して、その手順通りにツールのインストールや設定を行ってください。
Getting Started Guide

Install the Zephyr SDKまで実行してください(サンプルのビルド以降は実行しないでください)。

Zephyrのビルド
ZephyrのサンプルプログラムをIARツールチェインでビルドします。
環境変数の設定
IARツールチェインでビルドするための環境変数を設定します。

IAR_LMS_BEARER_TOKENはライセンス内容に応じて設定してください。
当方で実行した手順はこちら

ビルド
west buildコマンドでサンプルhello_worldをビルドします。
(コマンドはGNUツールチェインでビルドするときと同じです。)

ビルドが完了すると次のような表示になります。


IARツールチェインでビルドされているかの確認
ビルドの手順でビルドしたバイナリzephyr.elfをLinuxにコピーしてreadelfコマンドで.commentセクションを確認します。

IAR ELF Linkerの文字があり、IARツールチェインでビルドされています。

ボードへの書き込み
PCとボードのJ17のUSB Type-Cを接続し、west flashコマンドでフラッシュメモリへ書き込みます。

実行結果

コードサイズ比較
以下は、サンプルプログラムhello_worldをIARツールチェインとGNUツールチェインでビルドしたときのコードサイズです。IARツールチェインでのビルドが現時点でexperimentalであること、また最適化のオプションがあるかもしれないので、参考情報としてください。
IARツールチェインでビルドしたサンプルプログラムのサイズ
ビルド後に生成されたzephyr.mapをテキストファイルで開きます。
次の記述がありました。

GNUツールチェインでビルドしたサンプルプログラムのサイズ
GUNUツールチェインで同じサンプルプログラムをビルドします。
ビルドコマンドを完了時にコードサイズが表示されていました。

まとめ
Zephyrのhello_worldサンプルプログラムをIARツールチェインでビルドして動作させました。
現時点で、Zephyr ProjectのアップストリームにおけるIARツールチェインでのビルドはexperimentalという扱いですが、IARシステムズはZephyr Projectのメンバーで活発に活動しています※。今後のZephyr Projectでの活躍が期待できます。
※海外だけでなく日本法人でも日本語でブログを掲載したり、ウェビナーを開催しています。
今後、他のサンプルプログラムや他のボードでの動作を確認してみたいと思います。
Discussion