主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

生成される組み込みコードの配布用のモデルの設計

嵌入式编码器®を使用して組み込みシステムアーキテクチャのコードを生成する場合,開始当初からコード生成による仿真金宝app软件®モデルの設計に留意することが重要です。検討が必要な設計要因と問題を以下に示します。

アプリケーションのアルゴリズムとランタイム環境

金宝app仿真软件を使用して,配布可能なコードの生成元となるアプリケーションのアルゴリズムとランタイム環境を表すモデルを設計します。アプリケーションに応じて,以下の組み合わせで構成される実行環境にコードを配布する場合があります。

実行環境のコンポーネント 選択肢
ハードウェア
  • 開発用コンピューター

  • ラピッド プロトタイピング ボード

  • マイクロプロセッサ

  • マイクロコントローラー

  • FPGA

  • 专用集成电路

コア数
  • 単一

  • 複数

オペレーティング システム
  • 汎用

  • リアルタイム

  • なし(ベアメタル)

スケジューリング
  • シングルタスク

  • マルチタスク

  • 割り込み駆動型

  • 同時実行

  • オペレーティング システムによって提供

  • モデルから生成

アプリケーション アルゴリズム コード
  • モデルから生成

  • 外部コード

ラピッドプロトタイピング用または量産配布用のCまたはC / c++コードを生成するモデルを設計する際には,実行環境に注意してください。実装要件を満たすコードを生成し,設計のやり直しを行う可能性を回避します。前述の表に反映されているとおり,生成するコードの実行環境は比較的単純なものから複雑なものまであります。たとえば,単純な例としては,シングルコアマルチプロセッサで実行する単一のシングルタスクモデルから生成するコードがあります。複雑な例としては,マルチコアマイクロプロセッサとFPGAで分散システムとして実行するように分割されたモデルから生成されるコードがあります。

生成されたコード用のソフトウェアの実行フレームワーク

アプリケーションの実行環境の一部は、生成されたコードのスケジューリングと実行を行うソフトウェアの実行フレームワークです。このソフトウェアは、オペレーティング システムやそのスケジューラの場合と同様に事前に配置することも、手動でコーディングすることもできます。複雑度のレベルは、適用される以下のモデル化のシナリオとコード生成のシナリオによって異なります。

  • 単一の最上位モデルから,実行環境での実行を目的としたアルゴリズムを表すコードを生成する。

  • アルゴリズム全体の一部を表すモデルからコードを生成する。生成されたコードは、他のソースまたは 迈斯沃克®製品のリリースから手動で生成されたコードと混在させることができます。

単一の最上位モデル

単一の最上位モデルの場合、ソフトウェアの実行フレームワークは 金宝app模拟でモデルのシミュレーションが実行されるのと同じ方法で、生成されたコードを実行します。模拟が依存関係を認識しているため、生成されたコード内の関数は高度に調整および最適化されます。フレームワークは最上位モデルのみに対して生成されるコードとインターフェイスを取ります。最上位モデルに対して生成されるコードは参照される 模型ブロックのコードとのインターフェイスを処理します。

単一の最上位モデルがシングルコアCPUで実行されるタスクにマッピングされる以下の例を考えます。

このシステムでは、モデルのクロック レートをハードウェアで実行するタスクにマッピングします。金宝app模拟でレートを暗黙的にマッピングするか、モデルで明示的にマッピングするか、選択できます。シングルタスクまたはマルチタスクの実行環境に、モデル内のレートをマッピングする方法から生じるレイテンシの影響をモデル化できます。模拟はモデル内のレートとタスク間のデータの依存関係に基づいてタスクを適切にスケジュールします。コード ジェネレーターは同じ依存関係を生成するコードに実装します。ソフトウェアの実行フレームワークは生成されたエントリポイント関数をシステム タイマーと割り込みに基づいたレートで呼び出します。生成されたコードは、模拟でモデルのシミュレーションを実行し、異なるレートで実行される関数間のデータ通信に特化したコードを格納します。

複数の最上位モデル

コードを複数の最上位モデルから個別に生成し、そのコードをその他の方法で取得したコードと混在させる場合、アプリケーションの実行環境ではソフトウェアの実行フレームワークの役割が大きくなります。このモデル化シナリオでは、スタンドアロンの再利用可能なアトミック コンポーネントのコードを生成します。

このシナリオでは,金宝app仿真软件はモデルの依存関係を認識しません。異なるモデルで生成されたコード内の関数は最小限に調整および最適化されます。たとえば,生成されるユーティリティ関数をモデルで共有する場合があります。モデルの境界を越える可能性のある最適化は実行できません。ソフトウェアの実行フレームワークを設計する際は,実行順序も含め,コードのユニット間の依存関係を考慮しなければなりません。複数のコア間での同時実行が必要なアプリケーションでは,コア間のデータレイテンシの影響を考慮しなければなりません。

コードジェネレーターは,グローバルデータを共有したり,識別子の競合を回避する場合など,ソフトウェアの実行フレームワークの課題に対処するのに役立ちます。各モデルに生成されるコードは,参照される模型ブロックのインターフェイスを処理します。

組み込みシステム アーキテクチャの 金宝app模拟モデリング環境へのマッピング

組み込みシステム アーキテクチャを 金宝app模拟モデリング環境にマッピングするときは、モデルの設計を考慮します。

アルゴリズムのモデル化 必要とする結果を効率的に生み出すための、特定の初期状態と入力、一連のタスクまたは命令。
インターフェイスのモデル化 アルゴリズムコンポーネントがコンポーネントの境界を越えて情報を通信および交換できるようにするメカニズム。
システムのモデル化 高度なドメイン固有の目的または結果を達成するアルゴリズムコンポーネントのコレクション。コンポーネントは多くの場合リソースを共有します。
ランタイム環境のモデル化 システムのアルゴリズムリソースと実行のスケジューリングを処理するフレームワーク。

検討が必要な組み込みシステム アーキテクチャに関する考慮事項について、対応するモデル化機能と関連情報のリンクを以下に示します。アーキテクチャの詳細を 金宝app模拟モデリング環境にマッピングするガイドとして使用してください。特定の組み込みシステム アーキテクチャを考慮してモデルのアーキテクチャを設計すると、やり直しや将来の変換および保守コストを回避できます。

アルゴリズムのモデル化

アーキテクチャにおける考慮事項 モデル化における考慮事項 関連情報
システムのドメインは? 製品の必要条件(コンポーネントのドメインに基づく)
システムは機械ドメイン,電気ドメイン,油圧ドメインなどの物理ドメインに関連していますか吗? 物理システム
MathWorks製品で提供されるブロックで表現できるアルゴリズムの特性は?作成しなければならないブロックは吗? ブロックの使用方法、作成、カスタマイズ
アーキテクチャにステートマシンコンポーネントは含まれますか吗? イベントドリブンシステム

状态流でのリアクティブ システムのモデル化(状态流)

コードジェネレーターで複数のモデルから生成されるコードを標準化する必要はありますか吗? データと関数のカスタム コード定義

インターフェイスのモデル化

アーキテクチャにおける考慮事項 モデル化における考慮事項 関連情報
  • 生成されたコードで表さなければならないデータは吗?

  • 入力と出力をどのように表す必要がありますか吗?(データ型,次元,実数/複素数)

  • アルゴリズムで浮動小数点演算または固定小数点演算を使用しますか吗?

  • データはどのように変化しますか吗?

データの表現
データはシステムのどこでどのように取得されてシステム内部に入力されますか? 入力

信号読み込みの手法の比較

  • データはシステム内部のどこでどのようにプッシュされてシステム外に出力されますか?

  • 必要な外部トリガーは?

出力
  • 各コンポーネントに定義しなければならない関数は?

  • 各エントリポイント関数のプロトタイプは吗?

関数および関数呼び出し
データや関数のカテゴリに対して既定のコード生成構成を設定することに利点はありますか? データと関数の構成
モデルの外側のロジックを制御することによって呼び出される関数をエクスポートする必要はありますか吗? 関数のエクスポート
システムは信号またはログデータを(たとえば,キャリブレーションを行うために)監視しますか吗? C APIおよび ASAP2データ交換インターフェイス
たとえば、特定のハードウェアのコードを最適化するために、生成されたコードで関数または演算子を置換する必要はありますか? コード置換
メモリにおけるデータや関数の配置を制御する必要はありますか吗? メモリセクション

通过插入语控制数据和函数在内存中的位置

詳細化の要件および今後の考慮事項はありますか吗? 詳細化および今後の考慮事項

モデルコンポーネントのインターフェイスの定義

システムのモデル化

アーキテクチャにおける考慮事項 モデル化における考慮事項 関連情報
  • システムのスコープは? コントローラーは? 外部環境またはプラントは? テスト ハーネスは?

  • システムをアルゴリズムコンポーネントに分割する方法(ロジックのチャンク)は吗?

  • 金宝app仿真软件で表すことのできるコンポーネントは吗?

  • コンポーネントを再利用するために設計できますか? 再利用の目的は? (作業分担やプラグインプレイなど)

コンポーネント化
  • システムのさまざまな側面で単体テストは必要ですか?

  • 複数人のチームでプロジェクトの共同作業を行っていますか?

  • 知的所有権を保護する必要はありますか?

モデル参照
クライアント/サーバーアーキテクチャをモデル化していますか吗? 金宝appSimulink函数と 呼叫者ブロック
関連するレガシまたはカスタムのコードは使用可能ですか? 外部コードの統合 外部コードの統合
参照アーキテクチャまたは参照コンポーネントを適用できますか吗? モデルおよびプロジェクト テンプレート
モデルの外側のロジックを制御することによって呼び出される関数をエクスポートする必要はありますか吗? エクスポート関数モデル エクスポート関数モデルの概要
コンポーネントのソースコードを簡単に配布または共有できるように共有オブジェクトライブラリとしてパッケージ化する必要はありますか吗? 共有オブジェクトライブラリ(ダイナミックリンクライブラリ) 生成コードを共有ライブラリとしてパッケージ化
関数は再利用できますか? 関数の再利用
  • コンポーネントでグローバル データへのアクセスを共有する必要はありますか?

  • システム内で,状態の変化は発生しますか?それぞれの場合において,結果はどのように伝達されますか吗?

  • 考慮すべき識別子 (命名) の問題はありますか?

共有データ
メモリにおけるデータや関数の配置を制御する必要はありますか吗? メモリセクション

通过插入语控制数据和函数在内存中的位置

AUTOSAR規格を適用する必要はありますか吗?必要な場合,アーキテクチャのどの部分がAUTOSARに関係しますか吗? AUTOSAR AUTOSAR区块集
それ以外にシステムが満たす必要がある標準やガイドラインはありますか? 標準およびガイドライン 金宝app对标准和准则的支持

ランタイム環境のモデル化

アーキテクチャにおける考慮事項 モデル化における考慮事項 関連情報
  • アプリケーションに必要なランタイムインターフェイスの制御レベルは吗?

  • システムのどの程度の部分をモデルで表すことができますか?

ランタイム インターフェイス
パラレル化を最大化するためにシステムは同時実行コンポーネントに分割されますか吗?どのコンポーネントですか吗? 同時実行

マルチコア プロセッサ ターゲット

  • コンポーネントは外部クロックで駆動されますか吗?

  • システムコンポーネントで使用するクロックレートは吗?

  • コンポーネントはシングル レートと複数のレートのどちらを使用しますか?

クロックおよびクロックレート

モデルコンポーネントのインターフェイスの定義

  • システム内のコンポーネントはクロックで駆動されますか?

  • システムコンポーネントで使用するクロックレートは吗?

  • コンポーネントはシングル レートと複数のレートのどちらを使用しますか?

  • システムタスクと関数の優先順位は吗?

時間ベースのスケジューリング
  • システム内のコンポーネントはイベント (割り込み) で駆動されますか?

  • システムタスクと関数の優先順位は吗?

イベントベースのスケジューリング
システムが初期化イベント,リセットイベント,終了イベントを処理する必要はありますか吗? 初期化,リセット,終了
  • システムはシングルタスクシステムとマルチタスクシステムのどちらですか吗?

  • コンポーネントをリアルタイムで実行する必要はありますか吗?

  • コンポーネント間の実行順序(シーケンス)の依存関係は吗?

  • タスクと関数実行の時間の制約は吗?

タスクの実行
  • 処理プラットフォームは? (わかっている場合)

  • システムはシングルコアプロセッサとマルチコアプロセッサのどちらで実行しますか吗?

  • システムは分散システムですか吗?

  • 処理プラットフォームはハイブリッドと異種混合のどちらですか?

  • アーキテクチャは対称型マルチプロセッシングと非対称型マルチプロセッシングのどちらを使用しますか? 非対称型の場合、プラットフォーム ソフトウェアは 中央处理器間でどのように分割されますか?

処理プラットフォーム マルチコア プロセッサ ターゲット
  • 外部のリアルタイム カーネルやリアルタイム オペレーティング システムを必要としないスタンドアロンの実行可能ファイルを生成して実行しますか?

  • リアルタイムオペレーティングシステム(RTOS)は必要ですか吗?必要な場合,どのようなRTOSですか吗?

カーネル,オペレーティングシステム

コード生成のモデルテンプレート

嵌入式编码器には、一般的なアプリケーションの設計用にモデルを作成する開始点として使用する一連の組み込みのテンプレートが用意されています。テンプレートを使用して、組み込みシステム アプリケーション向けのコード生成を事前に構成するモデルを作成します。

テンプレート 説明
コード生成システム 输入ブロックと 输出ブロックで構成される基本モデル。
エクスポートする関数 函数调用子系统からコードを生成するためのモデル。各函数调用子系统は,サブシステムを右クリックして[C/C++コード][関数のエクスポート]を選択し,[ビルド]をクリックして個別にエクスポートできます。
固定ステップ、マルチレート 複数のレートを使用し 输入ブロック、输出ブロック、总和ブロックで構成される固定ステップ モデル。モデルは固定ステップ離散ソルバーを使用して、モデル コンフィギュレーション パラメーター[周期的なサンプル時間の制約](制約なし]に設定し,パラメーター[各離散レートを個別のタスクとして扱う]を選択した状態で2つのレートを使用するように構成されます。金宝app仿真软件は率过渡ブロックを挿入して2つのサンプルレートを処理します。
固定ステップ、シングル レート シングル レートを使用し 输入ブロック、输出ブロック、总和ブロックで構成される固定ステップ モデル。モデルは固定ステップ離散ソルバーを使用するように構成されます。

テンプレートからモデルを作成するには

  1. MATLAB®の[ホーム]タブで(金宝app模型)をクリックします。

  2. 金宝app仿真软件のスタートページで[嵌入式编码器]を展開します。

  3. テンプレートにカーソルを合わせて[モデルを作成]をクリックします。テンプレートのコンテンツと設定を使用する新規モデルが 金宝app模拟エディター ウィンドウで開きます。

たとえば、テンプレートをリファレンス設計として作成して使用する方法の詳細については、モデルからのテンプレートの作成を参照してください。

関連するトピック