✨

商用コンパイラでZephyr RTOS

に公開

はじめに

2025年3月にリリースされたZephyr 4.1.0でIAR Arm Toolchainが実験的に使えるようになります。

https://docs.zephyrproject.org/latest/releases/release-notes-4.1.html

本記事では、IAR Arm ToolchainでZephyrのサンプルプロブラムをビルドし、ボード上で動作させてみます。

使用したボード

NXP社のFRDM-MCXN947を使用します。

https://www.nxp.jp/design/design-center/development-boards-and-designs/FRDM-MCXN947

Zephyrはこのボードで動作します。

https://docs.zephyrproject.org/latest/boards/nxp/frdm_mcxn947/doc/index.html

上記ページの手順でGNUツールチェインでビルドしてフラッシュメモリへ書き込み、Zephyrが動作していることを前提に、以下の説明を進めます。

開発環境構築

Windows上でビルドするための開発環境を構築します。
(Linuxでもビルドできるかもしれませんが、試していません。)

IAR Embedded Workbench for Armのインストール

IAR Embedded Workbench for Armを入手してインストールしてください。
商用ツールなので、ライセンスを購入するか無償評価版をお試しください。
詳細は専門家に相談してください。

https://www.iar.com/ja/embedded-development-tools/iar-embedded-workbench

注意!
v9.70以上のIAR Embedded Workbench for Armをインストールしてください。
https://docs.zephyrproject.org/latest/develop/toolchains/iar_arm_toolchain.html#toolchain-iar-arm

Zephyrの開発環境のインストールと設定

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

Getting Started Guide
https://docs.zephyrproject.org/latest/develop/getting_started/index.html

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

Zephyrのビルド

ZephyrのサンプルプログラムをIARツールチェインでビルドします。

環境変数の設定

IARツールチェインでビルドするための環境変数を設定します。

https://docs.zephyrproject.org/latest/develop/toolchains/iar_arm_toolchain.html#toolchain-iar-arm

IAR_LMS_BEARER_TOKENはライセンス内容に応じて設定してください。

当方で実行した手順はこちら

ビルド

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

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

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