
Legacy Code Tool はどのように使用しますか?
14 views (last 30 days)
Show older comments
MathWorks Support Team
on 25 Oct 2013
Edited: MathWorks Support Team
on 20 Apr 2018
既存のCコードをSimulinkモデルに取り込む方法として、Legacy Code Toolがあることを知りました。Legacy Code Tool の使用方法を教えてください。
Accepted Answer
MathWorks Support Team
on 20 Apr 2018
Edited: MathWorks Support Team
on 20 Apr 2018
Legacy Code Tool を使用すると、Simulinkモデル上で使用できる既存のCコードを取り込んだ S-Function ブロックを生成できます。
また、Embedded Coder (Real-Time Workshop )によるコード生成に必要な TLC(Target Language Compilar) ファイルも自動生成できます。TLCファイルの存在により、C-MEX S-functionを使用するのに必要なラッパーコードがコード生成時に除外され、実行効率のよい組み込み向けCコードを生成できます。
今回は、入力値を3倍にして出力するCコードを取り込んでC-MEX S-FunctionとTLCファイルを生成する例を示します。
s = legacy_code('initialize');% 初期化
s.SFunctionName = 'timesThree';% S-Function名
s.OutputFcnSpec = 'int32 y1 = timesThree(int32 u1)';% 関数の入出力形式
s.HeaderFiles = {'legacy_timesThree.h'};% ヘッダファイル名
s.SourceFiles = {'legacy_timesThree.c'};% ソースファイル名
legacy_code('sfcn_cmex_generate', s);% S-Function用Cファイル
legacy_code('compile', s);% コンパイル
legacy_code('sfcn_tlc_generate', s);% TLCファイル作成
legacy_code('slblock_generate', s);% ブロック自動作成
以上の手順でC-MEX S-functionブロック用のMEX関数とMEX関数を指定したs-functionブロック、およびTLCファイルが生成されます。

サンプルモデルにはすでにs-functionブロックが配置されており、timesThreeという名前のMEX関数が指定されているので、この状態でサンプルモデルが実行可能となります。
さらに、サンプルモデル内に配置されているサブシステムをビルドして、改めてC-MEX s-functionを含むサブシステムからCコードを生成すると、legacy_timesTree.c中の関数(timesThree)を呼び出すCコードが生成されます。
※サブシステムのビルドには、MATLAB Coder、Simulink CoderとEmbedded Coderのライセンスが必要です。
回答欄上部から、以下の3つのサンプルプログラム、サンプルモデルをダウンロードできます。サンプルモデルはR2006b以降のバージョンで使用可能です。
legacy_timesThree.c
legacy_timesThree.h
timesThree_test.mdl
本件に関するヘルプドキュメントは、以下 からご参照頂けます。
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!