組込み制御ソフトウェアでのCIの課題と実現方法
CI(Continuous Integration:継続的インテグレーション)は開発における自動化プロセスであり、開発者がソースコードをコミットした後に静的解析、単体テスト、結合テストなどを行い、結果を確認するといった各種工程を自動化する、つまり「ソースコードをコミットするたびに継続して後工程を自動化する」ことで、開発を効率化することができます。
ソフトウェア開発では、CIを行うことが一般的になりつつあります。しかし、組込みソフトウェアでは実機で自動テストを行う必要があるため、CIの実現が難しいのが現状です。
より詳しい技術や関連製品について知りたい方へ
本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。
1. GSILによる組込みソフトウェアでのCI実現
GSILは、ユビキタスAIが開発、販売しているシミュレーションツールです。GSILを使用することで、組込みソフトウェアでもCIを実現することができます。
GSILによりCIが可能となる理由
- 組込みソフトでは実現が難しいテスト入力/出力確認が可能
- 実機(ハードウェア)によって異なるドライバなどの対応が不要
- Pythonを使用した自動テストが可能
シミュレーション向け環境のGSILでは、検証環境をPCで実行可能なgccなどのコンパイラを使ってテスト対象のソフトをビルドします。その際、入力・出力は、VBUSと呼ばれるBUS上にデータをリードライトできるようにしています。
GSILには、入出力用のGUIが備えられているので、そのGUI上でスライダーなどを使って入力を変化させ、プロッターで出力結果を確認できます。また、CSVファイルに入力を入れてテスト実行することも可能です。
GSILは、入出力をVBUSに直接リードライトします。BSWの部分はシミュレーション対象外となるので、実機ごとに異なるデバイスドライバ対応を行う必要はありません。
2. Pythonを使用した自動テスト
GSILは、Pythonを使用した自動テストが可能です。
Pythonによる自動テストスクリプト
Pythonを使用してはいますが、上記のようにテスト命令の引数のフォーマットを理解すれば、Python言語を知らなくてもテストスクリプトを記述できます。
3. 自動網羅テスト
GSILでは、人手では不可能な膨大な入力のテストを自動で生成、テストする、自動網羅テストを行うことができます。これにより、再現性が低く見つかりにくい、起きると機器がフリーズしてしまうようなゼロ除算、バッファオーバーランなどの実行時エラーを発見します。
4. まとめ
GSILを使用することで、組込みソフトウェア制御開発におけるCIの課題を克服します。ソフトウェア開発者がコードを書き、コミットするだけで自動テストが行われ、結果をすぐに確認し、もし問題があればGSILでデバッグ再テストを行う、といったことが可能になります。
このコラムの著者
株式会社ユビキタスAI
エンベデッド第3事業部 担当部長
植田 宏​(うえだ ひろし)
大学卒業後Tire1メーカーへ入社、ECUソフトウェア開発を行う。その後海外で組込みソフトウェア開発エンジニアの経験を経て、帰国。1998年より車載系ソフトウェアの技術営業に従事。自身の経験を活かし、課題解決に役立つ海外のソフトウェア商材を取扱い、国内のエンジニアへ届けている。
より詳しい技術や関連製品について知りたい方へ
本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。
ソフトウェアアプリケーションの実行速度高速化技術
2024.09.04
イベントチェーンを応用した車載ECUのタイミング検証
2024.08.30
車載制御ECUソフトウェア教育向けパッケージGTrainerとは
2024.08.08
システムテストのカバレッジ測定
2024.06.13
組込み制御ソフト開発へのシミュレーション応用による開発効率向上
2024.06.04
CANを使用したSILSテスト ―車両全体シミュレーション、テストケース再利用―
2024.05.27
GSILのMILS開発への適用
2023.12.20
GSILのCI(Continuous Integration)適用
2023.09.22
GSILの網羅的自動テストケース生成機能を使ったECUの信頼性向上
2023.09.13
OEM⇔サプライヤでのECU制御ソフトウェア環境共有による手戻り工数削減方法
2023.07.25
SILSを使用した車載制御ECUソフトウェア開発競争力強化
2023.07.20
車載ECUシミュレーションでテスト資産を活かすための技術とは?
2022.05.16
早期の車載ECUタイミング検証の実現
2021.08.27