ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

アプリケーション開発のご利用の前に

次の例では、Texas Instruments™ (TI) プロセッサの IDE Link コンポーネントを使用して、Simulink モデルからコードを生成する方法を説明します。ADI DSP に固有の作業プロジェクトを生成する方法を説明するために、モデルを使用します。この例では、IDE Link "オートメーション インターフェイス" および "Project Generator" コンポーネントの基本的な知識が必要です。

サポートされる IDE/ツール チェーン:

  • Texas Instruments™ Code Composer Studio™

サポートされているプロセッサ:

推奨するチュートリアル:

この例で使用するモデル:

はじめに

IDE Link には、シミュレーションの一部をハードウェアで実行し、実行コードをプロファイリングできるようにすることによって、開発中にコード検証を支援するツールがあります。オートメーション インターフェイスおよび Project Generator コンポーネントを使用して、プロセッサインザループ (PIL)、Real-Time Execution Profiler、コード置換ライブラリ (CRL) の最適化、スタック プロファイラーなどの検証ツールが利用できます。プロセッサインザループ シミュレーションは、プロセッサでのプロセス実行方法を評価するために役立ちます。Real-Time Execution Profiler では、プロセス内のタスクをプロセッサ上でどのようにリアルタイム実行されるかを確認できます。CRL の最適化により、生成コードでコンパイラ固有の組み込み関数を使用してアプリケーションのパフォーマンスを向上させることが可能です。スタック プロファイラーでは、アプリケーションのスタック使用状況を測定できます。

この例では、Simulink でのモデルの作成から、このプロセッサ用に検証およびプロファイリングされたコードの生成までの、コード生成ワークフローについて説明します。この例では、PIL、リアルタイム実行プロファイリングおよびスタック プロファイリングの使用手順を示すことで、検証とプロファイリングなどの中間段階について説明します。

タスクは推奨された順序で配置されていますが、それぞれのタスクは独立しているため、必要に応じてセクションをスキップすることもできます。

メモ: 続行する前に、Code Composer Studio™ (CCS) で少なくとも 1 つボードが設定済みであることを確認してください。まだ設定されていない場合は、Code Composer Studio Setup を起動して、サポートされる TI プロセッサに応じてボードを選択してください。

タスク 1 – アルゴリズムの設計およびシミュレーション

次の図は、2 つのランダム信号ベクトルの合計と差を計算するモデルを示しています。

アルゴリズムのシミュレーション

1. SumDiff ModelSumDiff Model を開いて、[実行] ボタンをクリックし、シミュレーションを実行します。

2. [View Scopes] をダブルクリックし、SUM と DIFF の出力を観察します。

3. [停止] ボタンをクリックして、シミュレーションを停止します。

タスク 2 – コードの生成および検証

アルゴリズムをシミュレーションし、シミュレーション結果の正確性を確認したら、次の手順では、生成されたコードが組み込みプロセッサで実行したときと同じように動作するかを確認します。PIL シミュレーションを使用して、アプリケーションの一部をハードウェアで実行し、残りを Simulink で実行することができます。

このタスクでは、Compute_Sum_and_Diff サブシステムに生成されたコードを検証するために、元のサブシステムの出力とそれを表す PIL ブロックの出力の間に差がないことを確認します。

次の図は、前の Simulink モデルにブロックを追加して、Compute_Sum_and_Diff アルゴリズムのシミュレーション結果とプロセッサ ベースの実装を比較する方法を示しています。

PIL は、PIL シミュレーション ブロックを実行するための MEX 関数をビルドして使用します。続行する前に、MATLAB が MEX 関数のビルドに使用するコンパイラを設定してください。mex -setup コマンドを実行し、コンパイラのコンフィギュレーションを選択します。詳細は、「MEX ファイルのビルドMEX ファイルのビルド」を参照してください。

Compute_Sum_and_Diff サブシステムを設定してコード生成を有効化する

1. PIL ModelPIL Model を開きます。

2. [モデル コンフィギュレーション パラメーター] ダイアログを開き、[コード生成] の下の [システム ターゲット ファイル] パラメーターを [idelink_ert.tlc] に設定し、[適用] をクリックします。

3. 次に、[コード生成] の下で [Coder Target] を選択します。[Target Hardware Resources] をクリックし、ターゲット ハードウェアと一致するようにパラメーターを設定します。[OK] をクリックします。

ターゲット ハードウェアのモデルの構成についての詳細は、IDE Link ドキュメンテーションのこの節この節を参照してください。

PIL を実行するようにモデルを構成する

Compute_Sum_and_Diff サブシステムのコードを生成したときに、ビルド プロセスで次のアクションが実行されるように、以下の手順でモデルを構成します。

  • 新しいモデルに PIL ブロックを作成する

  • CCS ウィンドウで、PIL アルゴリズムのコードとプロジェクトを生成する

  • 生成されたプロジェクトをビルドする

  • プログラムをプロセッサに読み込む

1. モデルで、[シミュレーション]、[コンフィギュレーション パラメーター] を選択します。

2. [コード生成] の下で [Coder Target] を選択し、[Tool Chain Automation] タブをクリックして [Build action] を [Create_Processor_In_the_Loop_project] に設定します。

3. [OK] をクリックします。

Compute_Sum_and_Diff サブシステムに PIL ブロックを作成する

次の手順で、PIL アルゴリズムのオブジェクト コードと対応する PIL ブロックを新しいモデルに作成します。

1. Compute_Sum_and_Diff サブシステムを右クリックし、コンテキスト メニューから [C/C++ コード]、[このサブシステムをビルド] を選択します。

2. 開いているダイアログ ボックスで [ビルド] をクリックします。MATLAB コマンド ウィンドウでビルド プロセスの進行状況を観察します。

モデルへの PIL ブロックのコピー

1. PIL ブロックを、sumdiff_pil モデルの "Place PIL block here" と書かれている場所にコピーします。

2. 信号線を PIL ブロックの対応する入力端子と出力端子に接続します。

PIL シミュレーションの実行

1. ツール バーの [実行] ボタンをクリックします。

2. [View Scopes] をダブルクリックし、シミュレーションとプロセッサ実装結果を観察、比較します。差はゼロになるはずです。

3. シミュレーションを停止します。

メモ: このモデルを保存するには、モデル名を変更してから書き込み可能な場所に保存します。

タスク 3 - コードの生成とプロファイル

プロセッサへの実装結果を検証した後、次の手順では、生成コードをプロファイリングし、ランタイム パフォーマンスが改善したかを確認します。

このタスクでは、Real-Time Execution Profiler を使用するためのモデルの構成方法について説明します。プロファイラーはタスクが有効にされた時、割り込まれた時、再開時および完了時にグラフィカルな表示を生成します。さらに、プロファイラーは同期のタスクごとの統計情報を含む HTML 形式のレポートも生成します。

メモ: Real-Time Execution Profiler はオンチップ汎用タイマーを使用します。一部のプロセッサ チップ シミュレーターでこのタイマーが使用できないことがあるため、その場合にはこの機能は使用できません。シミュレーターが使用できる場合、有効なプロファイリング結果を確認するのに十分な回数だけ、モデルを実行する必要があります。

次の図は、生成コードのリアルタイム実行を簡単にプロファイリングできるように、ブロックを追加した Simulink モデルを示しています。

リアルタイム タスク実行のプロファイリングを実行するモデルの構成

以下の手順では、リアルタイムのタスク プロファイリング統計を保存するための実装コードを生成するモデルを構成し、後で解析できるようにします。

1. Profiling ModelProfiling Model を開きます。

2. [モデル コンフィギュレーション パラメーター] ダイアログを開き、[コード生成] の下の [システム ターゲット パラメーター] を [idelink_ert.tlc] または [idelink_grt.tlc] に設定し、[適用] をクリックします。

3. 次に、[コード生成] の下で [Coder Target] を選択します。[Target Hardware Resources] をクリックし、ターゲット ハードウェアと一致するようにパラメーターを設定します。[OK] をクリックします。

ターゲット ハードウェアのモデルの構成についての詳細は、IDE Link ドキュメンテーションのこの節この節を参照してください。

3. [Tool Chain Automation] の下で、[Profile real-time execution] オプションをオンにします。[Profile by] を [Task] に設定します。

4. [OK] をクリックします。

プロファイリング統計の HTML レポートおよびグラフィカル表示の生成

1. モデルで [モデルのビルド] ボタンをクリックして、プロセッサでコードの生成、ビルド、読み込み、実行を行います。

2. アプリケーションを数秒間実行してから、モデルの [Halt Processor] ボタンをダブルクリックして、プロセッサを停止させます。

メモ: シミュレーターで実行する場合、プロファイリングに必要なサンプルを収集するために、さらに長く 10 分程度アプリケーションを実行してください。

3. モデル内で [View Profiling Results] ボタンをクリックしてプロファイリングの結果を表示します。

4. モデルの「平均実行時間」に注意します。

メモ: このモデルを保存するには、モデル名を変更してから書き込み可能な場所に保存します。

タスク 4 - コンパイラ オプションを使用したコードの最適化

生成コードをプロファイリングした後、次の手順では、コンパイラ固有の最適化を適用します。このタスクでは、コンパイラレベルの最適化を適用するために、関数レベルで最適化する呼び出しに対応するコンパイラ最適化スイッチを指定します。前のタスクでも使用したReal-Time Execution Profiler を再び使用して、生成コードのリアルタイム実行におけるパフォーマンスの変化を評価します。

次の図は、コンパイラ最適化をオンにした後にプロファイリングが実行されるよう設定した Simulink モデルを示しています。

コンパイラの最適化の有効化

1. Optimization ModelOptimization Model を開きます。

2. [モデル コンフィギュレーション パラメーター] ダイアログを開き、[コード生成] の下で [Coder Target] を選択します。[Target Hardware Resources] をクリックし、パラメーターの設定がプロセッサと一致していることを検証します。

3. モデルで、[シミュレーション]、[コンフィギュレーション パラメーター] を選択します。

4. [コード生成] の下で [Coder Target] を選択して [Tool Chain Automation] タブをクリックし、[Compiler options string] エディット ボックスに「-o2」と入力して、関数の最適化を適用します。

5. [OK] をクリックしてコンフィギュレーションを保存し、ダイアログ ボックスを閉じます。

プロファイリング統計の HTML レポートおよびグラフィカル表示の生成

1. モデルで [モデルのビルド] ボタンをクリックして、プロセッサでコードの生成、ビルド、読み込み、実行を行います。

2. しばらくしてから、モデルで [Halt Processor] ボタンをクリックして、プロセスを停止します。

3. モデル内で [View Profiling Results] ボタンをクリックしてプロファイリングの結果を表示します。

4. 「平均実行時間」に注意し、前のタスクで得た値と比較します。

メモ: このモデルを保存するには、モデル名を変更してから書き込み可能な場所に保存します。

タスク 5 - プロセッサ固有の組み込み関数を使用したコードの最適化

生成コードを検証してプロファイリングした後、次の手順では、生成コードのパフォーマンスをさらに向上させるために、コンパイラ固有の組み込み関数を使用する量産コードを生成します。これは、特定の数値演算では標準の C 構造体を、プロセッサとコンパイラに固有の命令を使用する構造体に自動的に置き換えることによって実現できます。コード置換ライブラリ機能を使用して、使用するプロセッサ ファミリに一致する置換スキームを指定します。

次の図は、CRL 最適化をオンにした後にプロファイリングが実行されるよう設定した Simulink モデルを示しています。

プロセッサ固有の組み込み関数を使用するモデルの構成とビルド

1. Processor-Specific ModelProcessor-Specific Model を開きます。

2. [モデル コンフィギュレーション パラメーター] ダイアログを開き、[コード生成] の下で [Coder Target] を選択します。[Target Hardware Resources] をクリックし、パラメーターの設定がプロセッサと一致していることを検証します。

3. [コード生成]、[インターフェイス] を選択し、プロセッサ ファミリに一致する [コード置換ライブラリ] を選択します。

4. [OK] をクリックします。

前の手順でも同じモデルを使用しているため、このモデルは既にリアルタイム タスクのプロファイリング統計を保存するように構成されています。

プロファイリング統計の HTML レポートおよびグラフィカル表示の生成

1. モデルで [モデルのビルド] ボタンをクリックして、プロセッサでコードの生成、ビルド、読み込み、実行を行います。

2. しばらくしてから、モデルで [Halt Processor] ボタンをクリックして、プロセスを停止します。

3. モデル内で [View Profiling Results] ボタンをクリックしてプロファイリングの結果を表示します。

4. 「平均実行時間」に注意し、前のタスクで得た値と比較します。

メモ: このモデルを保存するには、モデル名を変更してから書き込み可能な場所に保存します。

タスク 6 - プロファイル スタックの使用量

生成コードをさらに最適化するには、スタック プロファイラーを実行して、アプリケーションのスタック使用量を調べます。これは、アプリケーションが必要とする最適なスタック サイズを判断するのに役に立ちます。

このタスクでは、ベース MATLAB ワークスペースに保存されているハンドル CCS_Obj と、前のタスクで作成した CCS プログラムを使用します。

1. 前のタスクで、プロセッサで生成した CCS プログラムを読み込みます。

2. MATLAB プロンプトで以下のコマンドを入力して、スタック プロファイラーを設定します。

profile(CCS_Obj,'stack','setup')

これで、プロセッサのスタックが既知の繰り返しの値で埋められ、初期状態のスタック使用量が 0% と表示されます。

3. アプリケーションを実行します。アプリケーションが終了するまで待機します。無期限に実行する場合は、ある程度の時間が経過した時点で終了させます。

4. MATLAB プロンプトで以下のコマンドを入力して、スタックの使用量のプロファイルを取得します。

profile(CCS_Obj,'stack','report')

結果に応じて、スタックに割り当てられたサイズを増減します。[シミュレーション]、[モデル コンフィギュレーション パラメーター]、[コード生成] の下で [Coder Target] を選択し、[Tool Chain Automation] を選択することにより、スタック サイズを更新できます。System stack size (MAUs) に書き込まれた値を調整します。

タスク 7 - 量産コードの生成

生成コードを検証およびプロファイリングした後、次の手順では、検証およびプロファイリングの対象となるインストルメント化されたコードを含まない量産コードを生成します。

モデルの構成とビルド

1. CodeGen ModelCodeGen Model を開きます。

2. [モデル コンフィギュレーション パラメーター] ダイアログを開き、[コード生成] の下で [Coder Target] を選択します。[Target Hardware Resources] をクリックし、パラメーターの設定がプロセッサと一致していることを検証します。

3. [コード生成]、[インターフェイス] を選択し、プロセッサ ファミリに一致する [コード置換ライブラリ] を選択します。[OK] をクリックします。

4. モデルで [モデルのビルド] ボタンをクリックして、モデルをビルドします。

メモ: このモデルを保存するには、モデル名を変更してから書き込み可能な場所に保存します。

タスク 8 - 最終的な実装のテスト

量産コードを生成した後、"オートメーション インターフェイス" デバッグ メソッドを使用して、最終実装をテストするためのテスト ベンチを作成します。

テストベンチ スクリプトの実行

1. モデルの [Test Final Implementation] ボタンをクリックして、スクリプトを実行します。

2. MATLAB プロンプトに結果が出力されます。このメッセージで、シミュレーションと最終実装が同じかどうかがわかります。

メモ: スクリプトを表示するには、モデルの [View Script] ボタンをクリックします。

まとめ

この例では、量産コードを生成、検証、プロファイリングおよび最適化するワークフローを説明しました。これらのタスクを完了させるために、IDE Link コンポーネントのプロセッサインザループ、Real-Time Execution Profiler、コード置換ライブラリおよびスタック プロファイラーの各機能を使用しました。必要な結果と求めるパフォーマンスのレベルが達成されるまで、このワークフローを繰り返します。

この情報は役に立ちましたか?