アプリケーション展開機能の有効化
Simulink® モデルから生成されたコードを実行するには、コードをコンパイル、リンクし、サポートされているハードウェア ボードにダウンロードする必要があります。このセクションでは、生成されたコードをコンパイルおよびリンクするためのツールを指定します。また、生成されたコードをハードウェア ボードにダウンロードして実行するためのツールも指定します。
ツールチェーンは、生成されたコードをコンパイルして他の組み込みソフトウェアとリンクし、ハードウェア ボード上で実行できる実行可能アプリケーションを生成します。ARM® Cortex®-M ハードウェア ボードの参照ターゲットは、GNU Tools for ARM Embedded Processors ツールチェーンのサポートを提供します。このツールチェーンが新しいターゲットおよびそこでサポートされているハードウェア ボード用のコードのコンパイルとリンクに適している場合は、別のツールチェーンを統合する必要はありません。代わりに、GNU Tools for ARM Embedded Processors ツールチェーンを再利用できます。異なるツールチェーンをサポートする必要がある場合は、カスタム ツールチェーンの登録に記載されている手順に従って新しいツールチェーンを統合します。
アプリケーション展開オプションの指定
新しいターゲットでサポートするハードウェア ボードごとに、アプリケーション展開オプションを指定します。具体的には、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 M Board Display Name My ARM Cortex M Board My New Deployer 0
デプロイヤー
'My New Deployer'がターゲットに追加されています。ただし、0は、ハードウェア ボード'My ARM Cortex M Board'にはデプロイヤーが使用されないことを示します。DeployerオブジェクトをHardwareオブジェクトhwにマッピングします。map(tgt,hw,dep);
ハードウェア ボード
'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'が使用されることを示しています。ツールチェーンの名前 (例:
'GNU Tools for ARM Embedded Processors') を指定してaddNewToolChainを呼び出すことで、Toolchainオブジェクトtoolchainを作成してDeployerオブジェクトに追加します。toolchain = dep.addNewToolchain('GNU Tools for ARM Embedded Processors');ビルド構成の名前 (例:
'My build configuration') を指定してaddNewBuildConfigurationを呼び出すことで、BuildConfigurationオブジェクトbuildConfigurationを作成してToolchainオブジェクトに追加します。buildConfiguration = toolchain.addNewBuildConfiguration('My Build Configuration');ハードウェア ボードで必要なように、
BuildConfigurationオブジェクトのプロパティを設定します。たとえば、CompilerFlagsプロパティを設定することで、コンパイラ フラグを設定できます。buildConfiguration.CompilerFlags = '-mcpu=cortex-m3 -mthumb -mlittle-endian -mthumb-interwork -fsingle-precision-constant';同様に、
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 ハードウェア ボードのターゲットのルート フォルダーを表すトークンであり、コード生成ソフトウェアによって解決されます。また、
LinkerFlags、AssemblerFlags、および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'}
メモ
上に示されているリンカー フラグ、アセンブラー フラグ、および定義はツールチェーン固有であるため、ご使用の特定のツールチェーン構成に合わせてこれらのフラグを変更する必要があります。
$(ARM_CORTEX_M_ROOT_DIR)トークンを登録します。dep.Tokens{1} = struct('Name', 'ARM_CORTEX_M_ROOT_DIR', 'Value', 'codertarget.arm_cortex_m.internal.getSpPkgRootDir');ローダーの名前 (例:
'My Loader') を指定してaddNewLoaderを呼び出すことで、Loaderオブジェクトloaderを作成してDeployerオブジェクトに追加します。loader = dep.addNewLoader('My Loader');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:を省略すると、コマンドはシステム コマンドになります。
ターゲット記述情報をフレームワークに保存します。
saveTarget(tgt);
アプリケーション展開が正しく機能することをテストします。
testTarget(tgt,'deployer');テストが完了すると、結果の概要が表示されます。テストが
PASSEDの場合、次の機能の追加に進むことができます。それ以外の場合、テストがFAILEDまたはINCOMPLETEであれば、テストの概要の下にテスト診断ログへのリンクが表示されます。
アプリケーション展開機能の動作の確認
testいう名前の空の Simulink モデルを作成します。[アプリ] タブで [ハードウェア ボードで実行] をクリックします。[ハードウェア ボードで実行] ダイアログ ボックスで、[ハードウェア ボード] を登録したハードウェアに設定します。
[ハードウェア] タブの [ハードウェア設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、
[ソルバー]を選択します。[タイプ] リストで
[固定ステップ]を選択します。[ソルバー] リストで[自動]を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで [コード生成] を選択し、[システム ターゲット ファイル] を
ert.tlcに設定します。[ビルド プロセス] ペインの [ツールチェーン設定] で、[ツールチェーン] をご使用のツールチェーンに設定します。[OK] をクリックします。
Simulink ライブラリ ブラウザーを開き、Sources ライブラリの Constant ブロックをモデルに追加します。
Sinks ライブラリの Outport ブロックをモデルに追加します。Constant と Outport ブロックを接続します。
[ハードウェア] タブで [ビルド、展開、起動] 、 [ビルド] をクリックします。ビルドが完了すると、
test.elfファイルが現在のフォルダーに追加されます。