
組込みシステムの開発現場では、プロジェクトの複雑化と大規模化に伴い、開発効率と品質保証の重要性がますます高まっています。継続的インテグレーション(CI)と継続的デリバリー(CD)は、この課題を解決するための強力なアプローチです。特に、実機での単体テストをCI/CDワークフローに組み込むことで、開発プロセス全体の信頼性と効率性を飛躍的に向上させることができます。
組込み開発におけるCI/CD構築の重要性
CI/CDを組込み開発に導入することで、ルーチンワークを自動化し、開発者が本来の開発業務に専念できる環境を構築できます。これにより、余計なミスやストレスが軽減され、レビュアーの工数も削減されます。
具体的には、以下のようなメリットが挙げられます。
- 開発効率の大幅な向上
素早いビルドとフィードバックサイクル、リソース効率の改善を実現します。
- 品質の向上
自動ビルドとテストのパイプラインによる品質ゲートを設けることで、常に一定の品質を確保し、手戻りを大幅に削減します。
- 管理・更新の容易化
Gitなどのソースコードマネジメントツール、JenkinsやAzure DevOpsなどのCI/CDワークフローツール、Dockerなどの仮想コンテナを活用することで、管理しやすい環境を構築できます。
なぜ実機テストが最適なのか?シミュレータとの比較
自動化されたテストにおいて、シミュレータを使用するケースも多くありますが、組込み開発においては実機テストが最適な選択となることが多いです。
シミュレータを使用した場合の課題
- 膨大な工数
実動作に合わせた実装変更、スタブやマクロの用意が必要となり、テスト構築にかかる工数が非常に大きくなります。
- 意図しない結果
実機とシミュレータでは、時間的な概念や動作原理が異なるため、意図しないテスト結果になることがあります。
- 外部通信の複雑性
外部とのデータ連携がある場合、通信相手のシミュレータも必要となり、さらに工数が増大します 。
これらの課題に対し、実機でのテスト環境を構築することで、より手軽に、そして信頼性の高いテスト自動化を実現できます
CI/CDにおけるビルドとテストの自動化フロー
CI/CD環境における組込み開発の自動化フローは以下のようになります
1.ローカル開発環境開発者はIAR Embedded Workbench®で開発を行い、コードが問題なければGitなどのバージョン管理システムにコミット・プッシュします。
2.CI/CD自動化環境プッシュをトリガーとして、JenkinsなどのCI/CDツールがパイプラインを実行します。このパイプラインでは、ビルドと静的解析(C-STATなど)が行われます。
3.実機単体テストテスト実行ホスト(例: Raspberry Pi)に出力イメージが転送され、そこからターゲットボードにファームウェアが書き込まれます。その後、C-SPY®デバッガ実行ユーティリティ(cspybat)などを使用して単体テストが実行されます。
4.成果物の格納テストが成功すれば、成果物リポジトリに最終的なファームウェアやレポートが格納されます。
IAR Build Tools for Arm (BXARM)を活用したCI/CD
IARシステムズは、CI/CD環境での利用に特化したコマンドラインツール「IAR Build Tools」を提供しています。Arm®コア向けには「IAR Build Tools for Arm (BXARM)」が利用可能です 。
IAR Build Toolsの主な機能
- コマンドライン実行
コンパイラ(iccarm)、アセンブラ(iasmarm)、リンカ(ilinkarm)などのIAR独自のビルドツール群をコマンドラインから実行できます。
- IARbuildユーティリティ
IAR Embedded Workbenchで作成したプロジェクトファイル(.ewp)をベースに、ビルド、クリーン、静的解析(-cstat_analyze)、C-SPYデバッガ実行用コマンドの生成(-cspybat_cmds)などが可能です。
- マルチプラットフォーム対応
Ubuntu、Red Hat (v9.20以降)、Windows (v9.20以降) など、複数のOSで利用できます。
- 単一ライセンス
どのプラットフォームでも一つのライセンスで利用可能です。
Unityフレームワークを用いた実機単体テストの構築
単体テストフレームワーク「Unity」は、100%C言語で書かれた非常にシンプルなテストフレームワークで、組込みソフトウェアの単体テストに最適です。
Unityの主な特徴
- シンプル
基本動作に必要なソースファイルはUnity.cのみで、オプション機能の追加も容易です。
- アサート機能
期待値と結果を比較する豊富なASSERTマクロが用意されており、テスト結果を効率的に集計できます。
- 移植性
マイクロコントローラから64ビットプロセッサまで、幅広い環境で動作します。
IARプロジェクトでのUnity導入ステップ
1.UnityのダウンロードUnityの公式サイトからZIPファイルをダウンロードし、srcフォルダ内のファイルをIARプロジェクトのフォルダ(例: Unityフォルダ)にコピーします。
2.プロジェクトへの追加IAR Embedded WorkbenchのワークスペースでUnityグループを作成し、そこにunity.cなどのソースファイルを追加します。
3.テスト用ビルド構成の作成製品用とテスト用でビルド構成を分けます。これにより、テスト用コードをテストビルドでのみ使用し、プロジェクトオプションの設定を柔軟に切り替えられるようになります。
4.テストコードの作成テストグループを作成し、そこにTest.cやTest_Runner.cといったテストコードファイルを作成し、実装します。
※詳細な導入ステップは、こちらのオンデマンド動画で確認することができます。ぜひご覧ください。
実機単体テストと組み合わせて品質向上へ
組込み開発におけるCI/CDは、実機単体テストとの組み合わせにより、開発の効率化と品質の向上に不可欠なアプローチです。IARシステムズは、IAR Embedded WorkbenchやコマンドラインベースのIAR Build Tools (BXARM)、そしてUnityのような単体テストフレームワークとの連携を通じて、これらの自動化された開発フローの構築を強力にサポートします。これらのツールを活用することで、開発者はより高品質な組込みソフトウェアを、迅速かつ効率的に市場に投入することが可能となります。