主要内容

定点信号在遗留功能

这个例子向您展示了如何使用遗留代码工具集成遗留C函数通过使用不动点的信号输入和输出数据类型。

遗留代码工具允许您:

  • 提供遗留功能规范,

  • 生成一个C-MEX s函数在使用模拟调用遗留代码,和

  • 编译和构建模拟生成的功能。

提供遗留功能规范

遗留代码工具提供的功能需要一个特定的数据结构或数组的结构作为参数。数据结构是通过调用初始化函数legacy_code()使用“初始化”作为第一个输入。初始化结构之后,您必须指定其属性值对应的遗留代码整合。遗留的原型函数被称为在这个例子中是:

myFixpt timesS16 (const myFixpt in1, const myFixpt in2, const uint8_T fracLength)

myFixpt是逻辑上的定点数据类型是身体一个typedef 16位整数:

myFixpt = 金宝appSimulink.NumericType;myFixpt。DataTypeMode =“定点:二进制点缩放”;myFixpt。签署= true;myFixpt。字= 16;myFixpt。FractionLength = 10;myFixpt。IsAlias = true;myFixpt。HeaderFile =“timesFixpt.h”;

遗留源代码文件中找到timesFixpt.htimesS16.c

% sldemo_sfun_times_s16def = legacy_code (“初始化”);def.SFunctionName =“sldemo_sfun_times_s16”;def.OutputFcnSpec =' myFixpt y1 = timesS16 (myFixpt u1, u2乐队myFixpt uint8 p1)”;def.HeaderFiles = {“timesFixpt.h”};def.SourceFiles = {“timesS16.c”};def.IncPaths = {“sldemo_lct_src”};def.SrcPaths = {“sldemo_lct_src”};

生成和编译期间使用模拟的功能

函数legacy_code再次与第一个输入()设置为“generate_for_sim”为了自动生成和编译C-MEX s函数根据提供的描述输入参数“def”。此功能用于调用遗留功能模拟。s函数的源代码中找到该文件sldemo_sfun_times_s16.c

legacy_code (“generate_for_sim”def);
# # #开始编译sldemo_sfun_times_s16墨西哥人(“我/ tmp / Bdoc22b_2054784_2906472 / tp569808ff simulin金宝appk_features-ex15473442 / sldemo_lct_src ', ' i / tmp / Bdoc22b_2054784_2906472 / tp569808ff / simulink_features-ex15473442 ', ' c ', ' -outdir ', ' / tmp / Bdoc22b_2054784_2906472 / tp06e5044e_06df_4e49_b494_9e9730cadf8a ', ' / tmp / Bdoc22b_2054784_2906472 / tp569808ff simulink_features-ex15473442 / sldemo_lct_src timesS16.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“sldemo_sfun_times_s16。c ', ' - i / tmp / Bdoc22b_2054784_2906472 / tp金宝app569808ff / simulink_features-ex15473442 / sldemo_lct_src”、“我/ tmp / Bdoc22b_2054784_2906472 / tp569808ff simulink_features-ex15473442”、“/ tmp / Bdoc22b_2054784_2906472 / tp06e5044e_06df_4e49_b494_9e9730cadf8a timesS16.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译sldemo_sfun_times_s16 # # #退出

生成一个rtwmakecfg。m文件代码生成

TLC创建块文件后,函数legacy_code()又可被称为第一个输入设置为“rtwmakecfg_generate”以产生rtwmakecfg。m文件通过仿真软件支金宝app持代码生成®编码器™。金宝app生成rtwmakecfg。m文件如果所需的源和头文件S-functions S-functions不在同一个目录,和您想要添加这些依赖项的代码生成过程中产生的makefile。

注意:完成这一步只有如果你要模拟模型在加速模式。

legacy_code (“rtwmakecfg_generate”def);

生成一个蒙面的s函数调用生成的功能块

后C-MEX s函数源代码被编译,函数legacy_code()又可被称为第一个输入设置为“slblock_generate”为了生成一个蒙面的功能块,配置为称之为功能。块被放置在一个新的模型和可以复制到现有的模型。

% legacy_code (slblock_generate, def);

与遗留代码的集成

该模型sldemo_lct_fixpt_signals显示了遗留代码集成。的子系统TestFixpt作为利用遗留C函数通过调用生成的功能,和比较函数的输出范围的输出内置模型®产品块;金宝app结果是相同的。

open_system (“sldemo_lct_fixpt_signals”)open_system (“sldemo_lct_fixpt_signals / TestFixpt”)sim卡(“sldemo_lct_fixpt_signals”)
ans =仿金宝app真软件。SimulationOutput:你:[101 x2双]SimulationMetadata: [1 x1仿真软件。金宝appSimulationMetadata] ErrorMessage (0 x0 char):

另请参阅