プラットフォーム固有のコード生成
C コード エクスポートを使用する場合の Schematic Editor のプラットフォーム固有のコード生成機能の説明。
プラットフォーム固有のコード生成により、カスタムハードウェアプラットフォーム用のCコードを生成できます。プラットフォームは、適切なディレクトリにプラットフォーム記述ファイルを追加することで登録されます。
プラットフォーム固有のファイル形式
-
id
(必須) - 新しいプラットフォームの一意のID 名前
(必須) - プラットフォームの美しい名前ベンダー
(オプション) - ベンダー名、説明
(オプション) - 簡単な説明、タイプマッピング
(必須) - 次のキーを持つ型マッピングの辞書:整数
(必須) - 型マッピング整数
台風の種類。 値はリストである必要があります.ユニット
(必須) - 型マッピングユニット
台風の種類。 値はリストである必要があります.本物
(必須) - 型マッピング本物
台風の種類。 値はリストである必要があります.
以下は、最小限かつ有効なプラットフォーム記述ファイルの例です。
{
"id": "cst",
"name": "Custom Platform A1",
"type_mappings": {
"int": ["short", "int", "long"],
"real": ["float", "double"],
"uint": ["unsigned int"]
}
}
ヒル
そして
ヴィル
は予約されており、これらの ID を持つプラットフォーム定義ファイルは読み込まれません。プラットフォーム記述ファイルの場所
プラットフォームは、適切なディレクトリにプラットフォーム記述ファイルを追加することで登録されます。デフォルトでは、回路図エディタは以下の場所からすべてのファイルを収集します。
- ウィンドウズ:
%appdata%\typhoon\<sw_version>\user-platforms
- リナックス:
~/.local/share/typhoon/<sw_version>/user-platforms
プラットフォーム記述ファイルは、図 1に示すように、 [ユーザー ライブラリ パス設定]ダイアログ ( [ファイル] > [ライブラリ パスの変更]) で定義された任意の場所に配置することもできます。

プラットフォーム定義ファイルが正しく読み込まれているかどうかを確認するには、 「モデル設定」ダイアログを開き、 「Cコードエクスポート」タブに移動します。 「プラットフォーム(ベータ版)」コンボボックスでプラットフォームを選択できます(図2 )。

プラットフォーム固有のコンポーネント
コンポーネントは、プラットフォーム非依存(汎用)またはプラットフォーム依存のいずれかになります。汎用コンポーネントはどのプラットフォームでも動作しますが、プラットフォーム依存コンポーネントは特定のプラットフォームでのみ動作します。
プラットフォーム依存のコンポーネントを定義するには、
サポートされているプラットフォーム
コンポーネントのマスクのプロパティ(図参照) 図3図では、サポートされるプラットフォームは、プロパティのデフォルト値をプラットフォームIDのリストとして設定することで指定されていることに注意してください(この場合は、「カスタムプラットフォームA1」の「cst」は、 プラットフォーム記述ファイルの場所 セクション。

ハンドラー内のプラットフォーム固有のコード
特定のコンポーネントにプラットフォーム固有の動作を実装するには、
プラットフォームID
ハンドラーに提供される変数。
プラットフォームID
コンパイル/エクスポートの始めに名前空間に挿入されます。例えば:
platform_id == "cst"の場合: mdl.set_property_value(mdl.prop(container_handle, "value"), 1)、そうでない場合: mdl.set_property_value(mdl.prop(container_handle, "value"), 2)
プラットフォーム固有のC関数
プラットフォームID
名前のパラメータとして定義する プラットフォームID
と入力 str
C関数コンポーネント内の一般タブのパラメータタブで、
プラットフォームID
文字列リテラルを含むパラメータは、例えば 出力関数
以下のように表示されます。// output_fnc // Always use strcmp for string comparisons // Here it is okay to compare using == because platform_id is a C Function parameter // and it will be replaced with a string literal during transformation if (platform_id == "cst") { if (param1 > 5) { out = 5; } else { if (in - param1 > 0){ out = in; } else { out = 10; } } } else { out = 0; }
これ プラットフォームID
パラメータは
プリコンパイル
ハンドラーは文字列リテラルに置き換えられ、生成されたコードにそのまま含まれます。
コンポーネントがプラットフォームでサポートされていない場合はどうなりますか?
// Generated from the component: Subsystem1.Gain1
// Component not supported for this platform. Outputs are zeroed.
_subsystem1_gain1__out = 0;
