このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
嵌入式编码器®を使用して組み込みシステムアーキテクチャのコードを生成する場合,開始当初からコード生成による仿真金宝app软件®モデルの設計に留意することが重要です。検討が必要な設計要因と問題を以下に示します。
金宝app仿真软件を使用して,配布可能なコードの生成元となるアプリケーションのアルゴリズムとランタイム環境を表すモデルを設計します。アプリケーションに応じて,以下の組み合わせで構成される実行環境にコードを配布する場合があります。
実行環境のコンポーネント | 選択肢 |
---|---|
ハードウェア |
|
コア数 |
|
オペレーティング システム |
|
スケジューリング |
|
アプリケーション アルゴリズム コード |
|
ラピッドプロトタイピング用または量産配布用のCまたはC / c++コードを生成するモデルを設計する際には,実行環境に注意してください。実装要件を満たすコードを生成し,設計のやり直しを行う可能性を回避します。前述の表に反映されているとおり,生成するコードの実行環境は比較的単純なものから複雑なものまであります。たとえば,単純な例としては,シングルコアマルチプロセッサで実行する単一のシングルタスクモデルから生成するコードがあります。複雑な例としては,マルチコアマイクロプロセッサとFPGAで分散システムとして実行するように分割されたモデルから生成されるコードがあります。
アプリケーションの実行環境の一部は、生成されたコードのスケジューリングと実行を行うソフトウェアの実行フレームワークです。このソフトウェアは、オペレーティング システムやそのスケジューラの場合と同様に事前に配置することも、手動でコーディングすることもできます。複雑度のレベルは、適用される以下のモデル化のシナリオとコード生成のシナリオによって異なります。
単一の最上位モデルから,実行環境での実行を目的としたアルゴリズムを表すコードを生成する。
アルゴリズム全体の一部を表すモデルからコードを生成する。生成されたコードは、他のソースまたは 迈斯沃克®製品のリリースから手動で生成されたコードと混在させることができます。
単一の最上位モデルの場合、ソフトウェアの実行フレームワークは 金宝app模拟でモデルのシミュレーションが実行されるのと同じ方法で、生成されたコードを実行します。模拟が依存関係を認識しているため、生成されたコード内の関数は高度に調整および最適化されます。フレームワークは最上位モデルのみに対して生成されるコードとインターフェイスを取ります。最上位モデルに対して生成されるコードは参照される 模型ブロックのコードとのインターフェイスを処理します。
単一の最上位モデルがシングルコアCPUで実行されるタスクにマッピングされる以下の例を考えます。
このシステムでは、モデルのクロック レートをハードウェアで実行するタスクにマッピングします。金宝app模拟でレートを暗黙的にマッピングするか、モデルで明示的にマッピングするか、選択できます。シングルタスクまたはマルチタスクの実行環境に、モデル内のレートをマッピングする方法から生じるレイテンシの影響をモデル化できます。模拟はモデル内のレートとタスク間のデータの依存関係に基づいてタスクを適切にスケジュールします。コード ジェネレーターは同じ依存関係を生成するコードに実装します。ソフトウェアの実行フレームワークは生成されたエントリポイント関数をシステム タイマーと割り込みに基づいたレートで呼び出します。生成されたコードは、模拟でモデルのシミュレーションを実行し、異なるレートで実行される関数間のデータ通信に特化したコードを格納します。
コードを複数の最上位モデルから個別に生成し、そのコードをその他の方法で取得したコードと混在させる場合、アプリケーションの実行環境ではソフトウェアの実行フレームワークの役割が大きくなります。このモデル化シナリオでは、スタンドアロンの再利用可能なアトミック コンポーネントのコードを生成します。
このシナリオでは,金宝app仿真软件はモデルの依存関係を認識しません。異なるモデルで生成されたコード内の関数は最小限に調整および最適化されます。たとえば,生成されるユーティリティ関数をモデルで共有する場合があります。モデルの境界を越える可能性のある最適化は実行できません。ソフトウェアの実行フレームワークを設計する際は,実行順序も含め,コードのユニット間の依存関係を考慮しなければなりません。複数のコア間での同時実行が必要なアプリケーションでは,コア間のデータレイテンシの影響を考慮しなければなりません。
コードジェネレーターは,グローバルデータを共有したり,識別子の競合を回避する場合など,ソフトウェアの実行フレームワークの課題に対処するのに役立ちます。各モデルに生成されるコードは,参照される模型ブロックのインターフェイスを処理します。
組み込みシステム アーキテクチャを 金宝app模拟モデリング環境にマッピングするときは、モデルの設計を考慮します。
アルゴリズムのモデル化 | 必要とする結果を効率的に生み出すための、特定の初期状態と入力、一連のタスクまたは命令。 |
インターフェイスのモデル化 | アルゴリズムコンポーネントがコンポーネントの境界を越えて情報を通信および交換できるようにするメカニズム。 |
システムのモデル化 | 高度なドメイン固有の目的または結果を達成するアルゴリズムコンポーネントのコレクション。コンポーネントは多くの場合リソースを共有します。 |
ランタイム環境のモデル化 | システムのアルゴリズムリソースと実行のスケジューリングを処理するフレームワーク。 |
検討が必要な組み込みシステム アーキテクチャに関する考慮事項について、対応するモデル化機能と関連情報のリンクを以下に示します。アーキテクチャの詳細を 金宝app模拟モデリング環境にマッピングするガイドとして使用してください。特定の組み込みシステム アーキテクチャを考慮してモデルのアーキテクチャを設計すると、やり直しや将来の変換および保守コストを回避できます。
アーキテクチャにおける考慮事項 | モデル化における考慮事項 | 関連情報 |
---|---|---|
システムのドメインは? | 製品の必要条件(コンポーネントのドメインに基づく) | |
システムは機械ドメイン,電気ドメイン,油圧ドメインなどの物理ドメインに関連していますか吗? | 物理システム |
|
MathWorks製品で提供されるブロックで表現できるアルゴリズムの特性は?作成しなければならないブロックは吗? | ブロックの使用方法、作成、カスタマイズ | |
アーキテクチャにステートマシンコンポーネントは含まれますか吗? | イベントドリブンシステム | |
コードジェネレーターで複数のモデルから生成されるコードを標準化する必要はありますか吗? | データと関数のカスタム コード定義 |
アーキテクチャにおける考慮事項 | モデル化における考慮事項 | 関連情報 |
---|---|---|
|
データの表現 | |
データはシステムのどこでどのように取得されてシステム内部に入力されますか? | 入力 | |
|
出力 | |
|
関数および関数呼び出し | |
データや関数のカテゴリに対して既定のコード生成構成を設定することに利点はありますか? | データと関数の構成 | |
モデルの外側のロジックを制御することによって呼び出される関数をエクスポートする必要はありますか吗? | 関数のエクスポート | |
システムは信号またはログデータを(たとえば,キャリブレーションを行うために)監視しますか吗? | C APIおよび ASAP2データ交換インターフェイス | |
たとえば、特定のハードウェアのコードを最適化するために、生成されたコードで関数または演算子を置換する必要はありますか? | コード置換 | |
メモリにおけるデータや関数の配置を制御する必要はありますか吗? | メモリセクション | |
詳細化の要件および今後の考慮事項はありますか吗? | 詳細化および今後の考慮事項 |
アーキテクチャにおける考慮事項 | モデル化における考慮事項 | 関連情報 |
---|---|---|
|
コンポーネント化 | |
|
モデル参照 | |
クライアント/サーバーアーキテクチャをモデル化していますか吗? | 金宝appSimulink函数と 呼叫者ブロック | |
関連するレガシまたはカスタムのコードは使用可能ですか? | 外部コードの統合 | 外部コードの統合 |
参照アーキテクチャまたは参照コンポーネントを適用できますか吗? | モデルおよびプロジェクト テンプレート | |
モデルの外側のロジックを制御することによって呼び出される関数をエクスポートする必要はありますか吗? | エクスポート関数モデル | エクスポート関数モデルの概要 |
コンポーネントのソースコードを簡単に配布または共有できるように共有オブジェクトライブラリとしてパッケージ化する必要はありますか吗? | 共有オブジェクトライブラリ(ダイナミックリンクライブラリ) | 生成コードを共有ライブラリとしてパッケージ化 |
関数は再利用できますか? | 関数の再利用 | |
|
共有データ | |
メモリにおけるデータや関数の配置を制御する必要はありますか吗? | メモリセクション | |
AUTOSAR規格を適用する必要はありますか吗?必要な場合,アーキテクチャのどの部分がAUTOSARに関係しますか吗? | AUTOSAR | AUTOSAR区块集 |
それ以外にシステムが満たす必要がある標準やガイドラインはありますか? | 標準およびガイドライン | 金宝app对标准和准则的支持 |
アーキテクチャにおける考慮事項 | モデル化における考慮事項 | 関連情報 |
---|---|---|
|
ランタイム インターフェイス |
|
パラレル化を最大化するためにシステムは同時実行コンポーネントに分割されますか吗?どのコンポーネントですか吗? | 同時実行 | |
|
クロックおよびクロックレート | |
|
時間ベースのスケジューリング | |
|
イベントベースのスケジューリング | |
システムが初期化イベント,リセットイベント,終了イベントを処理する必要はありますか吗? | 初期化,リセット,終了 | |
|
タスクの実行 | |
|
処理プラットフォーム | マルチコア プロセッサ ターゲット |
|
カーネル,オペレーティングシステム |
嵌入式编码器には、一般的なアプリケーションの設計用にモデルを作成する開始点として使用する一連の組み込みのテンプレートが用意されています。テンプレートを使用して、組み込みシステム アプリケーション向けのコード生成を事前に構成するモデルを作成します。
テンプレート | 説明 |
---|---|
コード生成システム | 输入ブロックと 输出ブロックで構成される基本モデル。 |
エクスポートする関数 | 函数调用子系统からコードを生成するためのモデル。各函数调用子系统は,サブシステムを右クリックして[C/C++コード]、[関数のエクスポート]を選択し,[ビルド]をクリックして個別にエクスポートできます。 |
固定ステップ、マルチレート | 複数のレートを使用し 输入ブロック、输出ブロック、总和ブロックで構成される固定ステップ モデル。モデルは固定ステップ離散ソルバーを使用して、モデル コンフィギュレーション パラメーター[周期的なサンプル時間の制約]を(制約なし] に設定し,パラメーター[各離散レートを個別のタスクとして扱う]を選択した状態で2つのレートを使用するように構成されます。金宝app仿真软件は率过渡ブロックを挿入して2つのサンプルレートを処理します。 |
固定ステップ、シングル レート | シングル レートを使用し 输入ブロック、输出ブロック、总和ブロックで構成される固定ステップ モデル。モデルは固定ステップ離散ソルバーを使用するように構成されます。 |
テンプレートからモデルを作成するには
MATLAB®の[ホーム]タブで(金宝app模型)をクリックします。
金宝app仿真软件のスタートページで[嵌入式编码器]を展開します。
テンプレートにカーソルを合わせて[モデルを作成]をクリックします。テンプレートのコンテンツと設定を使用する新規モデルが 金宝app模拟エディター ウィンドウで開きます。
たとえば、テンプレートをリファレンス設計として作成して使用する方法の詳細については、モデルからのテンプレートの作成を参照してください。