メインコンテンツ

PIL を使用したコードの検証と妥当性確認

R2026b

この例では、PIL を使用したコードの検証と妥当性確認に Embedded Coder® Support Package for ARM® Cortex®-M Processors を使用する方法を示します。

はじめに

この例では、プロセッサインザループ (PIL) シミュレーションを実行するための Simulink® モデルの構成方法を学習します。PIL シミュレーションでは、生成されたコードは QEMU ARM Cortex-M3 エミュレーター上で実行されます。PIL シミュレーションの結果が Simulink に転送され、シミュレーションとコード生成の結果の数値的等価性が検証されます。PIL 検証プロセスは、設計サイクルの重要な部分であり、展開コードの動作が設計と一致することを確認します。

この例では、以下を行う方法を示して、Simulink のコード生成と検証のワークフローについて紹介します。

  • ARM Cortex-M3 (QEMU) エミュレーター ターゲット上で PIL シミュレーションを実行するように Simulink モデルを構成する

前提条件

Getting Started with Embedded Coder Support Package for ARM Cortex-M Processorsの例を完了することをお勧めします。

タスク 1 - PIL を使用して参照モデルのコードを検証する

この例では、PIL シミュレーションを実行して参照モデルの生成コードを検証する方法を示します。このアプローチを使用すると、次のことが可能になります。

  • 参照モデルの生成コードを検証できます。

  • テスト ベクトルまたはスティミュラスの入力を提供するためにテスト ハーネス モデルを提供する必要があります。

  • Model ブロックをノーマル モードと PIL シミュレーション モードの間で簡単に切り替えることができます。

1. arm_cortex_m_model_pil_block.slx モデルを開きます。このモデルは "ARM Cortex-M3 (QEMU)" ターゲット用に構成されています。モデルには、両方とも同じ参照モデルを指す 2 つのModelブロックが含まれています。一方の Model ブロックを PIL モードで実行するように構成し、もう一方はノーマル モードに設定します。

2. "CounterA" Model ブロックを構成して PIL モードで実行します。

a. "CounterA" ブロックを右クリックし、[ブロック パラメーター (ModelReference)] を選択します。

b. [シミュレーション モード]、[プロセッサインザループ (PIL)] を選択し、[OK] をクリックします。

3. モデルの実行が始まると、"Scope1" に QEMU エミュレーターで実行中の PIL シミュレーションの出力が表示され、"Scope2" にノーマル モード シミュレーションの出力が表示されます。

タスク 2 - PIL を使用して最上位モデルのコードを検証する

この例では、PIL シミュレーションを実行してモデルの生成コードを検証する方法を示します。このアプローチを使用すると、次のことが可能になります。

  • 最上位モデルの生成コードを検証できます。

  • MATLAB ワークスペースからテスト ベクトルまたはスティミュラスの入力を読み込むようにモデルを構成する必要があります。

  • モデル全体をノーマル モードと PIL シミュレーション モードの間で簡単に切り替えることができます。

1. arm_cortex_m_top_model_pil.slx モデルを開きます。このモデルは "ARM Cortex-M3 (QEMU)" ターゲット用に構成されています。

2. 最上位モデルの PIL シミュレーションを実行します。

a. [アプリ] タブを開き、[SIL/PIL マネージャー] を選択します。

b. [SIL/PIL] タブで [SIL/PIL モード]、[プロセッサインザループ (PIL)] オプションを選択し、[検証の実行] をクリックします。

3. PIL シミュレーションが終了すると、ベース ワークスペースに "logsOut" 変数が作成されます。"logsOut" のデータに PIL シミュレーションの結果が格納されます。以下のコマンドを使用して、信号 "count_a" と "count_b" についてログ記録されたデータにアクセスできます。

  • count_a = get(logsOut,'count_a');

  • count_a.Values.Data

  • count_b = get(logsOut,'count_b');

  • count_b.Values.Data

まとめ

この例では、PIL シミュレーションを使用したコード検証のワークフローを紹介しました。