ハードウェア・イン・ザ・ループ・プロジェクトの設定

Ari Mahpour
|  投稿日 2021/05/9, 日曜日  |  更新日 2024/07/1, 月曜日
ハードウェア・イン・ザ・ループ・プロジェクトの設定

「Hardware in the Loop Testing: An Introduction」では、ハードウェア・イン・ザ・ループ・テスト(HIL)とは何か、そのセットアップ方法、そしてプロジェクト設計においてこれを統合する理由について説明しました。この記事では、Altium Designerで設計されたボードの例を用いて、ファームウェアに対するハードウェア・イン・ザ・ループ・テストを使用したDevOpsフローを紹介します。

設計

ハードウェア・イン・ザ・ループ設定を行う前に、作業するボードが必要です。回路図作成やレイアウトの前にデザインを開始する良い方法は、評価ボードを使ってプロトタイプを作ることです。この記事で使用する評価ボードは、SAM4E XPlained Proで、Microchip(旧Atmel)製です。まず、この評価ボードとAtmel Studioをインストールする必要があります。ハードウェアとソフトウェアの準備が整ったら、Gitlabからサンプルプロジェクトをクローンできます。このサンプルプロジェクトには、ハードウェア・イン・ザ・ループテストのハードウェア機能を示すために最小限のコードが含まれています。また、このプロジェクトでは、Atmel Software Framework(現在は「Advanced Software Framework」に改名)からいくつかのライブラリが利用されています。ASFは、USBシリアル通信、遅延ルーチン、その他のライブラリを提供し、通常は他のマイクロプロセッサ用に記述される多くの低レベルのハードウェア実装を抽象化します。リポジトリを取得し、ファームウェアをコンパイルしてロードしたら、ハードウェア・イン・ザ・ループテストを設定して実行する準備が整います。

構成

バージョン管理と継続的インテグレーション/継続的デプロイメント(CI/CD)には、Gitlabがホストとして選ばれました。How to Create a CI/CD Pipeline for Your PCB Designで示されているように、バージョン管理とCI/CDはGitlabで一体化されています。このプロジェクトは、複数のCI/CDステージ(Gitlabでは「パイプライン」としても知られています)で構成されています:

図1:プロジェクトパイプライン
図1:プロジェクトパイプライン

最初のステージでは、マイクロプロセッサにプログラムファイルをロードするために必要なバイナリが作成されます。これが完了すると、ダウンストリームデバイス(評価ボード)が電源オンされます。その後、デバイスにプログラムが書き込まれ、ユニットがテストの準備が整います。

テスト

ハードウェア・イン・ザ・ループテストは、設計次第で非常にシンプルにも複雑にもなります。多くの複雑なHILシステムでは、実際の環境をエミュレートするために外部デバイスが必要ですが、この例では、外部刺激をエミュレートするために基本的なメカニズムとしてシリアル通信を使用します。AtmelのUSB Device CDCインターフェースは、USB経由でRS-232のUARTと同様に通信するための仮想COMポートを作成します。このテストスイートでは以下を行います:

  1. コマンドを送信してレジスタを設定する
  2. レジスタを読み取る(コマンドを検証するため)
  3. レジスタをクリアする
  4. 再度レジスタを読み取る

マイクロプロセッサのファームウェアはC言語で書かれていますが、コマンドを駆動し、テレメトリを読み取るテストソフトウェアはPytestフレームワークを使用してPythonで書かれています。Pythonでソフトウェアを書くことにより、通常はC++のようなコンパイル言語で開発するのに多くの時間と労力を要する高レベルのスクリプトやライブラリを利用することができます。さらに、これらのテストはオペレーティングシステムやチップアーキテクチャに関係なく、どの種類のマシンでも実行可能です。Windows PC(Windows、x86)で実行されるテストは、Raspberry Pi(Linux、ARM)でも同様に実行できます。マシン上での開発、コンパイル、テストを抽象化することは、DevOpsワークフローの重要な原則です。私たちは、指を鳴らすように新しい環境を再現できるようにしたいと考えています。さらに、「How to」や「Getting Started」ガイドを読み込む時間のかかる手順を避けたいと考えています。このプロセス(テストを含む)をスクリプト化することで、パイプライン定義ファイルに記述されているように、手間のかからない再現可能な環境が保証されます。同じテストをコマンドラインから手動で実行するには、パイプラインファイルを参照してください。

テストが完了すると、結果はJUnit XMLファイルに書き出され、Gitlabによって解析され、Webインターフェースに表示されます。

図2:単体テスト結果
図2:単体テスト結果

これで、Gitlabを用いたハードウェア・イン・ザ・ループ設定のフルエンドツーエンドソリューションを示しました。プロジェクトを自由に見て、セットアップや形式に慣れ親しんでください。

結論

この記事では、ハードウェア・イン・ザ・ループテスト用にプロジェクトを構成する方法を紹介しました。これには、Gitlab上にホストされているサンプルプロジェクトをクローンして、パイプライン設定ファイル(.gitlab-ci.ymlファイル)を使用して構成する方法が含まれていました。また、Pytestフレームワークを使用してPythonでテストを実行し、Webインターフェースにどのように表示されるかを説明しました。このガイドとGitlabにホストされているサンプルプロジェクトを使用して、独自のハードウェア・イン・ザ・ループ設定を作成できるようになりました。

次のPCB設計でAltiumがどのようにお手伝いできるか知りたいですか?Altiumの専門家に相談し、設計の意思決定を簡単かつ自信を持って行う方法について詳しく学んでください。

筆者について

筆者について

Ariは、設計、デバイスパッケージ、テスト、および電気、機械、およびソフトウェアシステムの統合において幅広い経験を持つエンジニアです。彼は、設計/デザイン、検証、テストのエンジニアをまとめて団結したグループとして機能させることに情熱を注いでいます。

関連リソース

関連する技術文書

ホームに戻る
Thank you, you are now subscribed to updates.