独自のカスタムターゲ​ットのプラグマコンパ​イラディレクトリを実​装するにはどうすれば​よいですか?

5 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 3 月 12 日
自作のカスタムターゲットアプリケーションは自分では制御できない設定がされているプラグマを使用する必要があります。Real-Time Workshop Embedded Coder 4.0 (R14) 以上を利用して、このようなコンパイラのディレクトリを実装することが可能かを教えて下さい。

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 3 月 12 日
Real-Time Workshop Embedded Coder の カスタムストレージクラスを使用することでプラグマコンパイラを直接 ERT ターゲットに実装し、添付のcalibdemo.mdl に実装することができます。
下記の手順によって、 ERT ターゲットに直接プラグマコンパイラーを作成することができます。
1. 新しいパッケージ(MyPragma)を作成するために、"sldataclassdesigner" を使用します。下記の手順を行います。
1.1 Simulink Data Class Designer を開きます。MATLAB コマンドプロンプトで下記のコマンドを実行します。
sldataclassdesigner
データクラスデザイナは、MATLAB パスに存在するすべてのパッケージをロードします。
1.2 新しいパッケージを作成します。パッケージ名にて'新規' ボタンを押します。パッケージ名を編集(MyPragmaと記入)し、OKボタンを押します。
1.3 親ディレクトリの項目にて、新しいパッケージを保管する場所を指定します。
1.4 ”クラス”タブをクリック
1.5 新しいクラスを作成します。クラス名の項目の隣りにある’新規’ ボタンを押し、パッケージ名を編集 (MyPragmaClass と記入) し、’OK’ ボタンを押します。
1.6 ’次から派生’ の項目で、SimulinkとParameterを選択します。
1.7 ”このクラスに対する独自のカスタム ストレージ クラスを作成”のチェックのON/OFFが有効になるので、このチェックをONに設定します。この設定は、Custom Storage Class (CSC) を作成するために選択する必要があります。選択しない場合は、親クラスの CSC を継承します。
1.8 ”変更を確認” ボタンを押します。開いたウィンドウにて、作成したパッケージを選択します。必要があれば、親ディレクトリを MATLAB パスに追加します。そして、”選択を書き込み”ボタンを押します。
1.9 CSCレジストレーションファイルを含むパッケージディレクトリとファイルは親ディレクトリに書き込まれます。
1.10 ”閉じる” ボタンを押します。
上記の設定により、Custom Storage Class Designer にて作成したパッケージ(MyPragma) の閲覧・編集が可能になります。
2. Custom Storage Class Designer をアドバンスモードで開きます。MATLAB コマンドプロンプトで下記のコマンドを実行します。
cscdesigner -advanced
3. MyPragma パッケージにメモリセクションとカスタムストレージクラスを作成します。最初に開いた時は、cscdesigner はCSCレジストレーションファイルを持つすべてのデータクラスパッケージを読み込みます。読み込み中は、メッセージウィンドウが表示されます。
4. cscdesigner の一番上にあるプルダウンメニュー”パッケージの選択”にて、MyPragma パッケージを選択し、”メモリ セクション”タブを選択します。
5. ”メモリセクションの定義”の項目で’新規’ボタンを押すことで、メモリセクションの定義をします。
6. 下記の項目について、それぞれ編集します。
・ 名前:CALIBDATA
・ プリメモリ セクションのプラグマ: #pragma section CALIBDATA ".calibdata"
7. カスタムストレージクラス タブをクリックします。”カスタムストレージクラスの定義”の横にある’新規’ボタンを押し、新しいカスタムストレージクラスを作成します。
8. 下記の項目に関して、編集を行い、最後に’保存’ボタンを押して保存します。
・名前: CALIBDATA
・種類: Other
・メモリ セクション: CALIBDATA
・データの初期化: なし
・ヘッダー ファイル: 指定
・パラメータのチェックを’ON'
・信号のチェックを’OFF'
・データスコープ: Exported
9. @MyPragma ディレクトリの下に新規フォルダを作成し、tlcという名前にします。@MyPragma ディレクトリの下に下記のフォルダがあります。
@CustomRTWInfo_Parameter
@CustomRTWInfo_Signal
@MyPragmaClass
tlc
csc_registration.m
packagedefn.mat
schema.p
10. 下記にあるファイル
$MATLABROOT/toolbox/simulink/simulink/@Simulink/tlc/Unstructured.tlc
(ここで $MATLABROOT は使用しているMATLABがインストールされているディレクトリ) をコピーし、9で作成したtlcフォルダの下に、 CALIBDATA.tlc という名前で保存します。
11. CALIBDATA.tlc を編集し、DataAccess function 下のコードを下記のように置き換えます。
[編集前]
%case "define"
%return GetDefnUnstructured(cscDefn, msDefn, record)
%break
[編集後]
%case "define"
%openfile tmpBuf
#pragma use_section CALIBDATA
%<GetDefnUnstructured(cscDefn, msDefn, record)>
%closefile tmpBuf
%return tmpBuf
%break
12. CALIBDATA.tlc を保存し、@MyPragma クラスフォルダがあるディレクトリに移動します。
13. アドバンスモードで cscdesigner を開き、"パッケージ"にてMyPragmaを選択、カスタム ストレージ クラス タブを選択し、CALIBDATAをハイライトさせ、’他の属性’タブを選択します。
14. TLC ファイル名の項目に’CALIBDATA.tlc’を入力します。
15. '保存'ボタンを押し、’OK’ボタンを押してcscdesignerを閉じます。
16. 下記”関連ドキュメント”からダウンロードできる calibdemo.mdl を開きます。
17. MATLAB コマンドプロンプトで下記を実行します。
P=MyPragma.Parameter
P1=MyPragma.Parameter
18. モデルエディタのアイコンからモデルエクスプローラを開きます。
19. ウィンドウの左側のベースワークスペースを選択します。
20. パラメータ P を選択し、値を1に設定し、ストレージクラスに CALIBDATA(Custom) を選択します。
21. P1 も20と同様の手順を行います。
22. calibdemo.mdl モデルコンフィギュレーションパラメーター を開き、[Real-Time Workshop] の項目より’コード生成'ボタンを押し、Cコードを生成します。生成されたプラグマコンパイラがcalibdemo.c にて指定されていることが確認できます。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSimulink Coder についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!