メインコンテンツ

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

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

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

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

新しいターゲットでサポートするハードウェア ボードごとに、アプリケーション展開オプションを指定します。具体的には、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 A Board
    Display Name                   My ARM Cortex A Board
    My New Deployer                         0
    

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

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

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

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

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

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

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

    buildConfiguration = toolchain.addNewBuildConfiguration('My Build Configuration');
  7. ハードウェア ボードで必要なように、BuildConfiguration オブジェクトのプロパティを設定します。Defines プロパティを設定して、コンパイラ定義を 'ARM_PROJECT' に設定します。

    buildConfiguration.Defines = 'ARM_PROJECT';
  8. 同様に、IncludePaths プロパティを '$(ARM_CORTEX_A_ROOT_DIR)/include' に設定して、コンパイラのインクルード パスを設定します。

  9. $(ARM_CORTEX_A_ROOT_DIR) トークンを登録します。

    dep.Tokens{1} = struct('Name', 'ARM_CORTEX_A_ROOT_DIR', 'Value', 'codertarget.arm_cortex_a.internal.getSpPkgRootDir');

    メモ

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

  10. ローダーの名前 (例: 'My Loader') を指定して addNewLoader を呼び出すことで、Loader オブジェクト loader を作成して Deployer オブジェクトに追加します。

    loader = dep.addNewLoader('My Loader');

    ローダーは生成されたコードをハードウェア ボードにダウンロードします。

  11. Loader オブジェクトの LoadCommand プロパティを、たとえば MATLAB 関数 'codertarget.arm_cortex_a.internal.loadAndRun' に設定して、生成されたコードをハードウェア ボードにダウンロードして実行する読み込みコマンドを指定します。

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

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

    メモ

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

    • 参照ターゲット読み込みコマンドには、ハードウェア ボード上の Linux バージョンに基づく追加の動作上の依存関係がある場合があります。たとえば、一部の Linux バージョンでは、生成されたコードを実行するためにユーザーがルートレベルの権限 (sudo) を備えている必要があります。該当する場合は、参照ターゲット読み込みコマンドを開始点として使用して、独自の読み込みコマンドを開発して登録できます。

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

    saveTarget(tgt);
  13. ハードウェアの MATLAB 設定を行います。

    ARM Cortex-A の参照ターゲット用にローダー機能を使用することを選択した場合は、追加の MATLAB 設定を行うことが必要な場合があります。たとえば、読み込みコマンドを次のように設定できます。

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

    指定した読み込みコマンド 'codertarget.arm_cortex_a.internal.loadAndRun' は、ハードウェアが Linux® オペレーティング システムを実行し、SSH プロトコルをサポートしている場合にのみ機能します。さらに、読み込みコマンド 'codertarget.arm_cortex_a.internal.loadAndRun' では、ハードウェアについて次の情報を指定する必要があります。

    • IP アドレス

    • ユーザー名

    • パスワード

    • 既定のビルド フォルダー

    指定された MATLAB 設定どおりにこの情報を設定するには、次のようにします。

    1. 次のように MATLAB 設定の名前を選択します。

      Hardware_Connectivity_Installer_<hardware name-specific suffix>

      ここで、<hardware name-specific suffix> は、新しいターゲットでサポートされ、このローダー関数を使用するハードウェアの名前に対応します。名前に含まれているスペース文字は、アンダースコア文字に置き換える必要があります。

    2. setpref を呼び出して、ハードウェアの特性に応じて、MATLAB 設定の IP アドレス、ユーザー名、パスワード、および既定のビルド フォルダーを設定します。

      setpref('Hardware_Connectivity_Installer_My_ARM_Cortex_A_Board', 'DefaultIpAddress', '192.168.7.2');
      setpref('Hardware_Connectivity_Installer_My_ARM_Cortex_A_Board',  'DefaultUserName', 'root');
      setpref('Hardware_Connectivity_Installer_My_ARM_Cortex_A_Board', 'DefaultPasswordPref','root');
      setpref('Hardware_Connectivity_Installer_My_ARM_Cortex_A_Board', 'DefaultBuildDirPref','/tmp'); 
      
    3. (オプション) Embedded Coder® Support Package for ARM Cortex-A Processors の QEMU を使用する場合は、setpref を呼び出して SSH ポートを設定します。

      setpref('Hardware_Connectivity_Installer_My_ARM_Cortex_A_Board', 'DefaultsshportPref',getpref('Hardware_Connectivity_Installer_ARM_Cortex_A_QEMU', 'DefaultsshportPref'));
  14. アプリケーション展開が正しく機能することをテストします。

    testTarget(tgt,'deployer');

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

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

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

  2. [アプリ] タブで [ハードウェア ボードで実行] をクリックします。[ハードウェア ボードで実行] ダイアログ ボックスで、[ハードウェア ボード] を登録したハードウェア (たとえば、'My ARM Cortex A Board') に設定します。

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

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

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

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

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

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

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

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