メインコンテンツ

アプリケーション展開機能の有効化

Simulink® モデルから生成されたコードを実行するには、コードをコンパイル、リンクし、サポートされているハードウェア ボードにダウンロードする必要があります。このセクションでは、生成されたコードをコンパイルおよびリンクするためのツールを指定します。また、生成されたコードをハードウェア ボードにダウンロードして実行するためのツールも指定します。

ツールチェーンは、生成されたコードをコンパイルして他の組み込みソフトウェアとリンクし、ハードウェア ボード上で実行できる実行可能アプリケーションを生成します。ARM® Cortex®-M ハードウェア ボードの参照ターゲットは、GNU Tools for ARM Embedded Processors ツールチェーンのサポートを提供します。このツールチェーンが新しいターゲットおよびそこでサポートされているハードウェア ボード用のコードのコンパイルとリンクに適している場合は、別のツールチェーンを統合する必要はありません。代わりに、GNU Tools for ARM Embedded Processors ツールチェーンを再利用できます。異なるツールチェーンをサポートする必要がある場合は、カスタム ツールチェーンの登録に記載されている手順に従って新しいツールチェーンを統合します。

アプリケーション展開オプションの指定

新しいターゲットでサポートするハードウェア ボードごとに、アプリケーション展開オプションを指定します。具体的には、Deployer 機能オブジェクトをターゲットに追加し、Target オブジェクトの map メソッドを呼び出して Hardware オブジェクトにマッピングします。1 つの Deployer オブジェクトを複数の Hardware オブジェクトにマッピングできます。

  1. デプロイヤーの名前 (例: 'My New Deployer') を指定して addNewDeployer を呼び出すことで、Deployer オブジェクト dep を作成して Target オブジェクト tgt に追加します。

    dep = addNewDeployer(tgt,'My New Deployer');

    新しいターゲットを保存する前に、MATLAB® ワークスペースから Deployer オブジェクトを削除しないでください。

  2. デプロイヤーがターゲットに追加されたことを確認します。

    show(tgt);
                                   My ARM Cortex M Board
    Display Name                   My ARM Cortex M Board
    My New Deployer                         0
    

    デプロイヤー 'My New Deployer' がターゲットに追加されています。ただし、0 は、ハードウェア ボード 'My ARM Cortex M Board' にはデプロイヤーが使用されないことを示します。

  3. Deployer オブジェクトを Hardware オブジェクト hw にマッピングします。

    map(tgt,hw,dep);
  4. ハードウェア ボード 'My ARM Cortex M Board' でデプロイヤーが使用されることを確認します。

    show(tgt);
                                My ARM Cortex M Board
    Display Name                My ARM Cortex M Board
    My New Deployer                      1
    

    1 は、ハードウェア ボード 'My ARM Cortex M Board' でデプロイヤー 'My New Deployer' が使用されることを示しています。

  5. ツールチェーンの名前 (例: 'GNU Tools for ARM Embedded Processors') を指定して addNewToolChain を呼び出すことで、Toolchain オブジェクト toolchain を作成して Deployer オブジェクトに追加します。

    toolchain = dep.addNewToolchain('GNU Tools for ARM Embedded Processors');
  6. ビルド構成の名前 (例: 'My build configuration') を指定して addNewBuildConfiguration を呼び出すことで、BuildConfiguration オブジェクト buildConfiguration を作成して Toolchain オブジェクトに追加します。

    buildConfiguration = toolchain.addNewBuildConfiguration('My Build Configuration');
  7. ハードウェア ボードで必要なように、BuildConfiguration オブジェクトのプロパティを設定します。たとえば、CompilerFlags プロパティを設定することで、コンパイラ フラグを設定できます。

    buildConfiguration.CompilerFlags = '-mcpu=cortex-m3 -mthumb -mlittle-endian -mthumb-interwork -fsingle-precision-constant';
  8. 同様に、IncludePaths プロパティを '$(ARM_CORTEX_M_ROOT_DIR)/include' に設定して、コンパイラのインクルード パスを設定できます。

    buildConfiguration.IncludePaths = '$(ARM_CORTEX_M_ROOT_DIR)/include';

    ソース、ヘッダー、およびライブラリ ファイルが $(ARM_CORTEX_M_ROOT_DIR)/include フォルダー内にない場合は、必要なすべてのパスの cell 配列を IncludePaths に割り当てます。

    メモ

    $(ARM_CORTEX_M_ROOT_DIR) は、ARM Cortex-M ハードウェア ボードのターゲットのルート フォルダーを表すトークンであり、コード生成ソフトウェアによって解決されます。

  9. また、LinkerFlagsAssemblerFlags、および Defines の各プロパティをそれぞれ設定することもできます。

    buildConfiguration.LinkerFlags = '-mcpu=cortex-m3 -mthumb -mlittle-endian -mthumb-interwork -nostartfiles -T yourLinkerFile.ld'
    buildConfiguration.AssemblerFlags = '-mcpu=cortex-m3 -mthumb -mlittle-endian -mthumb-interwork -fsingle-precision-constant'
    buildConfiguration.Defines = {'ARM_MATH_CM3=1', 'NULL=0', 'EXIT_FAILURE=1'} 
    

    メモ

    上に示されているリンカー フラグ、アセンブラー フラグ、および定義はツールチェーン固有であるため、ご使用の特定のツールチェーン構成に合わせてこれらのフラグを変更する必要があります。

  10. $(ARM_CORTEX_M_ROOT_DIR) トークンを登録します。

    dep.Tokens{1} = struct('Name', 'ARM_CORTEX_M_ROOT_DIR', 'Value', 'codertarget.arm_cortex_m.internal.getSpPkgRootDir');
  11. ローダーの名前 (例: 'My Loader') を指定して addNewLoader を呼び出すことで、Loader オブジェクト loader を作成して Deployer オブジェクトに追加します。

    loader = dep.addNewLoader('My Loader');
  12. Loader オブジェクトの LoadCommand プロパティを設定して、生成されたコードをハードウェア ボードにダウンロードして実行する読み込みコマンドを指定します。たとえば、ARM Cortex-M ハードウェア QEMU のターゲットは、MATLAB 関数 'codertarget.arm_cortex_m.internal.loadAndRun' を使用します。

    loader.LoadCommand = 'matlab:codertarget.arm_cortex_m.internal.loadAndRun';

    必要に応じて、Loader オブジェクトの他のプロパティを設定します。たとえば、LoadCommandArguments プロパティを設定します。

    loader.LoadCommandArguments ='-f board/stm32f4discovery.cfg'; 

    メモ

    • ターゲットの読み込みコマンドは、選択したハードウェア ボードまたはファミリで動作するように設計されている必要があります。

    • 'codertarget.arm_cortex_m.internal.loadAndRun' 関数は、独自の読み込みコマンドの開発および登録を行う際に参照として使用できます。

    • 接頭辞 matlab: は MATLAB 関数を示します。接頭辞 matlab: を省略すると、コマンドはシステム コマンドになります。

  13. ターゲット記述情報をフレームワークに保存します。

    saveTarget(tgt);
  14. アプリケーション展開が正しく機能することをテストします。

    testTarget(tgt,'deployer');

    テストが完了すると、結果の概要が表示されます。テストが PASSED の場合、次の機能の追加に進むことができます。それ以外の場合、テストが FAILED または INCOMPLETE であれば、テストの概要の下にテスト診断ログへのリンクが表示されます。

アプリケーション展開機能の動作の確認

  1. test いう名前の空の Simulink モデルを作成します。

  2. [アプリ] タブで [ハードウェア ボードで実行] をクリックします。[ハードウェア ボードで実行] ダイアログ ボックスで、[ハードウェア ボード] を登録したハードウェアに設定します。

  3. [ハードウェア] タブの [ハードウェア設定] をクリックします。

  4. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[ソルバー] を選択します。

  5. [タイプ] リストで [固定ステップ] を選択します。[ソルバー] リストで [自動] を選択します。

  6. [コンフィギュレーション パラメーター] ダイアログ ボックスで [コード生成] を選択し、[システム ターゲット ファイル]ert.tlc に設定します。

  7. [ビルド プロセス] ペインの [ツールチェーン設定] で、[ツールチェーン] をご使用のツールチェーンに設定します。[OK] をクリックします。

  8. Simulink ライブラリ ブラウザーを開き、Sources ライブラリの Constant ブロックをモデルに追加します。

  9. Sinks ライブラリの Outport ブロックをモデルに追加します。ConstantOutport ブロックを接続します。

  10. [ハードウェア] タブで [ビルド、展開、起動][ビルド] をクリックします。ビルドが完了すると、test.elf ファイルが現在のフォルダーに追加されます。