Legacy Code Tool はどのように使用しますか?

14 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 25 Oct 2013
既存のCコードをSimulinkモデルに取り込む方法として、Legacy Code Toolがあることを知りました。Legacy Code Tool の使用方法を教えてください。

Accepted Answer

MathWorks Support Team
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
本件に関するヘルプドキュメントは、以下 からご参照頂けます。

More Answers (0)

Categories

Find more on コード生成 in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!