アプリケーション展開機能の有効化
Simulink® モデルから生成されたコードを実行するには、コードをコンパイル、リンクし、ハードウェア ボードにダウンロードする必要があります。このセクションでは、生成されたコードをコンパイルおよびリンクするためのツールを指定します。また、生成されたコードをハードウェア ボードにダウンロードして実行するためのツールも指定します。
ツールチェーンは、生成されたコードをコンパイルして他の組み込みソフトウェアとリンクし、ハードウェア ボード上で実行できる実行可能アプリケーションを生成します。ARM® Cortex®-A ハードウェア ボードの参照ターゲットは、GNU ARM GCC ツールチェーンのバリアントである Linaro ツールチェーンのサポートを提供します。このツールチェーンが新しいターゲットおよびサポートされているハードウェア ボード用のコードのコンパイルとリンクに適している場合は、別のツールチェーンを統合する必要はありません。代わりに、Linaro ツールチェーンを再利用できます。異なるツールチェーンをサポートする必要がある場合は、カスタム ツールチェーンの登録に記載されている手順に従って新しいツールチェーンを統合します。
アプリケーション展開オプションの指定
新しいターゲットでサポートするハードウェア ボードごとに、アプリケーション展開オプションを指定します。具体的には、Deployer 機能オブジェクトをターゲットに追加し、Target オブジェクトの map メソッドを呼び出して Hardware オブジェクトにマッピングします。1 つの Deployer オブジェクトを複数の Hardware オブジェクトにマッピングできます。
デプロイヤーの名前 (例:
'My New Deployer') を指定してaddNewDeployerを呼び出すことで、Deployerオブジェクトdepを作成してTargetオブジェクトtgtに追加します。dep = addNewDeployer(tgt,'My New Deployer');新しいターゲットを保存する前に、MATLAB® ワークスペースから
Deployerオブジェクトを削除しないでください。デプロイヤーがターゲットに追加されたことを確認します。
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'にはデプロイヤーが使用されないことを示します。DeployerオブジェクトをHardwareオブジェクトにマッピングします。map(tgt,hw,dep);
ハードウェア ボード
'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'が使用されることを示しています。ツールチェーンの名前 (例:
'Linaro Toolchain v4.8') を指定してaddNewToolChainを呼び出すことで、Toolchainオブジェクトtoolchainを作成してDeployerオブジェクトに追加します。toolchain = dep.addNewToolchain('Linaro Toolchain v4.8');ビルド構成の名前 (例:
'My build configuration') を指定してaddNewBuildConfigurationを呼び出すことで、BuildConfigurationオブジェクトbuildConfigurationを作成してToolchainオブジェクトに追加します。buildConfiguration = toolchain.addNewBuildConfiguration('My Build Configuration');ハードウェア ボードで必要なように、
BuildConfigurationオブジェクトのプロパティを設定します。Definesプロパティを設定して、コンパイラ定義を'ARM_PROJECT'に設定します。buildConfiguration.Defines = 'ARM_PROJECT';同様に、
IncludePathsプロパティを'$(ARM_CORTEX_A_ROOT_DIR)/include'に設定して、コンパイラのインクルード パスを設定します。$(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 ハードウェア ボードのターゲットのルート フォルダーを表すトークンであり、コード生成ソフトウェアによって解決されます。ローダーの名前 (例:
'My Loader') を指定してaddNewLoaderを呼び出すことで、Loaderオブジェクトloaderを作成してDeployerオブジェクトに追加します。loader = dep.addNewLoader('My Loader');ローダーは生成されたコードをハードウェア ボードにダウンロードします。
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) を備えている必要があります。該当する場合は、参照ターゲット読み込みコマンドを開始点として使用して、独自の読み込みコマンドを開発して登録できます。
ターゲット記述情報をフレームワークに保存します。
saveTarget(tgt);
ハードウェアの 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 設定どおりにこの情報を設定するには、次のようにします。
次のように MATLAB 設定の名前を選択します。
Hardware_Connectivity_Installer_<hardware name-specific suffix>ここで、<hardware name-specific suffix> は、新しいターゲットでサポートされ、このローダー関数を使用するハードウェアの名前に対応します。名前に含まれているスペース文字は、アンダースコア文字に置き換える必要があります。
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');
(オプション) 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'));
アプリケーション展開が正しく機能することをテストします。
testTarget(tgt,'deployer');テストが完了すると、結果の概要が表示されます。テストが
PASSEDの場合、次の機能の追加に進むことができます。それ以外の場合、テストがFAILEDまたはINCOMPLETEであれば、テストの概要の下にテスト診断ログへのリンクが表示されます。
アプリケーション展開機能の動作の確認
testいう名前の空の Simulink モデルを作成します。[アプリ] タブで [ハードウェア ボードで実行] をクリックします。[ハードウェア ボードで実行] ダイアログ ボックスで、[ハードウェア ボード] を登録したハードウェア (たとえば、
'My ARM Cortex A Board') に設定します。[ハードウェア] タブの [ハードウェア設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、
[ソルバー]を選択します。[タイプ] リストで
[固定ステップ]を選択します。[ソルバー] リストで[自動]を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで [コード生成] を選択し、[システム ターゲット ファイル] を
ert.tlcに設定します。[ビルド プロセス] ペインの [ツールチェーン設定] で、[ツールチェーン] をご使用のツールチェーンに設定します。
Simulink ライブラリ ブラウザーを開き、Sources ライブラリの Constant ブロックをモデルに追加します。
Sinks ライブラリの Outport ブロックをモデルに追加します。Constant と Outport ブロックを接続します。
[ハードウェア] タブで [ビルド、展開、起動] 、 [ビルド] をクリックします。ビルドが完了すると、
test.elfファイルが現在のフォルダーに追加されます。