プラットフォーム固有のコード生成

C コード エクスポートを使用する場合の Schematic Editor のプラットフォーム固有のコード生成機能の説明。

プラットフォーム固有のコード生成により、カスタムハードウェアプラットフォーム用のCコードを生成できます。プラットフォームは、適切なディレクトリにプラットフォーム記述ファイルを追加することで登録されます。

プラットフォーム固有のファイル形式

プラットフォーム記述ファイルは、次のキーを持つ JSON 辞書です。
  • id (必須) - 新しいプラットフォームの一意のID
  • 名前(必須) - プラットフォームの美しい名前
  • ベンダー (オプション) - ベンダー名、
  • 説明 (オプション) - 簡単な説明、
  • タイプマッピング (必須) - 次のキーを持つ型マッピングの辞書:
    • 整数 (必須) - 型マッピング 整数 台風の種類。 値はリストである必要があります.
    • ユニット (必須) - 型マッピング ユニット 台風の種類。 値はリストである必要があります.
    • 本物 (必須) - 型マッピング 本物 台風の種類。 値はリストである必要があります.

以下は、最小限かつ有効なプラットフォーム記述ファイルの例です。

{
    "id": "cst",
    "name": "Custom Platform A1",
    "type_mappings": {
        "int": ["short", "int", "long"],
        "real": ["float", "double"],
        "uint": ["unsigned int"]
    }
}
重要: プラットフォームID ヒル そして ヴィル は予約されており、これらの ID を持つプラットフォーム定義ファイルは読み込まれません。

プラットフォーム記述ファイルの場所

プラットフォームは、適切なディレクトリにプラットフォーム記述ファイルを追加することで登録されます。デフォルトでは、回路図エディタは以下の場所からすべてのファイルを収集します。

  • ウィンドウズ: %appdata%\typhoon\<sw_version>\user-platforms
  • リナックス: ~/.local/share/typhoon/<sw_version>/user-platforms

プラットフォーム記述ファイルは、図 1に示すように、 [ユーザー ライブラリ パス設定]ダイアログ ( [ファイル] > [ライブラリ パスの変更]) で定義された任意の場所に配置することもできます。

1プラットフォーム記述ファイルの配置
重要: Schematic Editor の実行中に新しいプラットフォーム記述ファイルが追加された場合は、新しいプラットフォーム定義ファイルをロードするために Schematic Editor を再起動する必要があります。

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

2プラットフォーム(ベータ)コンボボックス

プラットフォーム固有のコンポーネント

コンポーネントは、プラットフォーム非依存(汎用)またはプラットフォーム依存のいずれかになります。汎用コンポーネントはどのプラットフォームでも動作しますが、プラットフォーム依存コンポーネントは特定のプラットフォームでのみ動作します。

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

3プラットフォーム固有のコンポーネントマスク

ハンドラー内のプラットフォーム固有のコード

特定のコンポーネントにプラットフォーム固有の動作を実装するには、 プラットフォーム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関数

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;
回路図エディタ コンソールにも同様の警告が表示されます。