文档

调用外部代码导入生成的代码与遗留代码的工具

遗留代码和代码生成工具

您可以使用仿真软件金宝app®遗留代码的工具生成完全内联C墨西哥人S-functions遗留或自定义代码。S-functions嵌入式组件的优化,如设备驱动程序和查找表,调用现有的C或c++函数。

请注意

遗留代码工具可以用c++函数接口,而不是c++对象。为了解决这个问题,这样的工具可以用c++对象接口,明白了遗留代码工具的局限性(金宝app模型)。

您可以使用工具:

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

  • 生成一个蒙面的功能块配置调用现有的外部代码。

如果你想要包括这些类型的模型中S-functions你打算生成代码,使用该工具来生成一个薄块文件。TLC块文件指定如何生成的代码模型调用现有的C或c++函数。

如果功能取决于以外的文件在文件夹包含s函数动态可加载的可执行文件的文件夹,使用该工具来生成一个sFunction_makecfg.mrtwmakecfg.m文件功能。生成的文件维护这些依赖项当你构建一个模型,其中包括功能。例如,对于某些应用程序,如定制目标,您可能想要在有针对性的位置定位文件。构建过程寻找sFunction_makecfg.mrtwmakecfg.m在相同的文件夹功能动态可加载的可执行文件中调用函数。

有关更多信息,请参见C函数使用遗留代码工具集成(金宝app模型)。

生成内联函数文件代码生成

取决于您的应用程序的代码生成需求,来生成代码模型,利用s函数,做下面的:

  • 生成一个. cpp文件为内联函数。在遗留代码工具数据结构,设置的值Options.singleCPPMexFile字段真正的在生成s函数之前源文件从您现有的C函数。例如:

    def.Options.singleCPPMexFile= true; legacy_code('sfcn_cmex_generate', def);

  • 生成一个源文件和一个薄块文件为内联函数。例如:

    def.Options.singleCPPMexFile= false; legacy_code('sfcn_cmex_generate', def); legacy_code('sfcn_tlc_generate', def);

singleCPPMexFile局限性

你不能设置singleCPPMexFile字段真正的如果

  • Options.language =“c++”

  • 您使用以下模型对象之一金宝appIsAlias属性设置为真正的:

    • 金宝appSimulink.Bus

    • 金宝appSimulink.AliasType

    • 金宝appSimulink.NumericType

  • 遗留代码工具包括一个功能规范void *void * *代表标量数据工作状态参数

  • HeaderFiles遗留代码工具结构的字段指定多个头文件

代码风格设置适用于遗留功能

模型配置参数代码风格应用于遗留功能:

  1. 初始化遗留代码工具数据结构。例如:

    def = legacy_code(“初始化”);
  2. 在数据结构中,设置的值Options.singleCPPMexFile字段真正的。例如:

    def.Options.singleCPPMexFile= true;

检查设置,输入:

def.Options.singleCPPMexFile

singleCPPMexFile局限性

你不能设置singleCPPMexFile字段真正的如果

  • Options.language =“c++”

  • 您使用以下模型对象之一金宝appIsAlias属性设置为真正的:

    • 金宝appSimulink.Bus

    • 金宝appSimulink.AliasType

    • 金宝appSimulink.NumericType

  • 遗留代码工具包括一个功能规范void *void * *代表标量数据工作状态参数

  • HeaderFiles遗留代码工具结构的字段指定多个头文件

在不同的位置地址依赖文件

默认情况下,遗留代码工具假设文件的函数依赖驻留在相同的文件夹功能的动态可加载的可执行文件。如果你的s函数取决于文件驻留在其他地方,您使用的是模板makefile构建过程,生成一个sFunction_makecfg.mrtwmakecfg.m文件s函数。例如,你可能会生成这个文件如果你遗留代码工具数据结构定义编译资源路径名。

生成sFunction_makecfg.mrtwmakecfg.m文件时,调用legacy_code函数与“sfcn_makecfg_generate”“rtwmakecfg_generate”作为第一个参数,遗留代码的工具的名称作为第二个参数的数据结构。例如:

legacy_code (sfcn_makecfg_generate, lct_spec);

如果您使用多个注册文件在同一文件夹,并为每个文件生成一个函数调用legacy_code时,调用legacy_code指定“sfcn_makecfg_generate”“rtwmakecfg_generate”必须共同所有注册文件。有关更多信息,请参见处理多个注册文件(金宝app模型)模型文档。

例如,如果您定义的def作为数组的遗留代码工具结构,你的电话legacy_code“sfcn_makecfg_generate”一次。

def = [defs1 (:); defs2 (:); defs3 (:));legacy_code (sfcn_makecfg_generate, def);

有关更多信息,请参见支持S-Fu金宝appnctions

部署S-Functions模拟和代码生成

您可以部署S-functions与遗留代码生成工具,这样其他人可以使用它们。部署一个模拟和代码生成功能,分享以下文件:

  • 注册文件

  • 编译动态可加载可执行

  • TLC块文件

  • sFunction_makecfg.mrtwmakecfg.m文件

  • 头,来源,包括生成的s函数所依赖的文件

当你使用这些部署文件:

  • 在仿真软件模型,使用已部署的文件之前添加的文件夹,其中包含MATLAB的s金宝app函数文件®路径。

  • 如果遗留代码工具所需数据结构寄存器文件绝对路径和文件的位置发生变化时,重新生成sFunction_makecfg.mrtwmakecfg.m文件。

集成外部c++对象方法

集成遗留c++对象方法通过使用遗留代码的工具。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成c++墨西哥人s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成一块薄层色谱文件。m文件,调用遗留代码在代码生成。

提供遗留功能规范

遗留代码工具提供的功能需要一个特定的数据结构或数组的结构作为参数。数据结构是通过调用初始化函数legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的c++类的定义在这个例子中是:

类加法器{私有:int int_state;公众:加法器();int add_one (int增量);int get_val ();};

遗留的源代码文件adder_cpp.hadder_cpp.cpp

% rtwdemo_sfun_adder_cppdef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_adder_cpp”;def.StartFcnSpec =“createAdder ()”;def.OutputFcnSpec =' int32 y1 = adderOutput (int32 u1) ';def.TerminateFcnSpec =“deleteAdder ()”;def.HeaderFiles = {“adder_cpp.h”};def.SourceFiles = {“adder_cpp.cpp”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def.Options。语言=“c++”;def.Options。useTlcWithAccel = false;

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_adder_cpp.cpp

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_adder_cpp墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples0 tp791fdb15 / ex06428671 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples0 / tp892c853c_1c76_4b6f_9f7a_cf171270561d ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / adder_cpp.cpp”)建设与“g++”。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_adder_cpp。cpp”、“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples0 / tp791fdb15 / ex06428671”、“cxx”、“/ tmp / Bdoc17b_748982_13915 / publish_examples0 / tp892c853c_1c76_4b6f_9f7a_cf171270561d / adder_cpp.o”)建设与“g++”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_adder_cpp # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code ()。第一个输入设置为“sfcn_tlc_generate”生成TLC块文件,支持通过仿真软件代码生成®编码器™。金宝app金宝app如果TLC块文件不是你试图创建和生成代码的模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_adder_cpp.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code ()。第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件,支持通过仿真软件金宝app代码生成®编码器™。金宝app如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code ()。第一个输入设置为“slblock_generate”生成一个蒙面的功能块,配置为称之为功能。块地方的软件在一个新的模型。可以将块复制到现有的模型。

% legacy_code (slblock_generate, def);

显示生成的与遗留代码的集成

该模型rtwdemo_lct_cpp显示了遗留代码集成。

open_system (“rtwdemo_lct_cpp”)sim卡(“rtwdemo_lct_cpp”)

集成外部c++对象

遗留代码工具可以用c++函数接口,而不是c++对象。使用前面的示例作为起点,这是一个例子,如何解决这个限制。

  • 修改的类定义加法器在一个新文件adder_cpp.hpp。添加三个新宏,动态地分配一个新的加法器对象,调用该方法add_one (),自由分配的内存。每个宏需要一个指针加法器对象。因为每个函数调用遗留代码工具必须有一个c签名,缓存和传递的指针void *。然后您必须显式地投加法器*在宏。新的类定义加法器:

    的ifndef _ADDER_CPP_ #定义_ADDER_CPP_类加法器{私人:int int_state;公众:加法器():int_state (0) {};int add_one (int增量);int get_val(){返回int_state;};};/ /包装方法实现为宏# define createAdder (work1) \ * (work1) =新加法器# define deleteAdder (work1) \删除(static_cast(加法器*)(* (work1))) # define adderOutput (work1 u1) \ (static_cast(加法器*)((work1))) - > add_one (u1) # endif / * _ADDER_CPP_ * /
  • 更新adder_cpp.cpp。与类修改,而不是一个全局实例,每个生成的功能管理自己的加法器对象。

    # include“adder_cpp。进行“整数加法器::add_one (int增量){int_state + =增量;返回int_state;}
  • 更新rtwdemo_sfun_adder_cpp.cpp用以下变化:

    • StartFcnSpec调用宏,分配一个新的加法器对象和缓存指针。

      def.StartFcnSpec = ' createAdder (void * * work1)”;
    • OutputFcnSpec调用宏调用的方法add_one ()并提供特定功能加法器对象的指针。

      def.OutputFcnSpec = ' int32日元= adderOutput (void * work1, int32 u1)”;
    • TerminateFcnSpec调用宏,它释放的内存。

      def.TerminateFcnSpec = ' deleteAdder (void * * work1)”;

遗留代码工具示例

集成外部C函数,通过输入参数值与地址

这个例子展示了如何使用遗留代码工具集成遗留C函数传递他们的输入参数值与地址。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

  • 蒋春暄对于费马大定理蒋春暄对于费马大定理filterV1 (const信号,蒋春暄对于费马大定理const prevSignal, const蒋春暄对于费马大定理获得)

  • 蒋春暄对于费马大定理filterV2 (const外语教学*信号,蒋春暄对于费马大定理const prevSignal, const蒋春暄对于费马大定理获得)

外语教学是一个typedef浮动。遗留的源代码文件your_types.h,myfilter.h,filterV1.c,filterV2.c

注意的差异OutputFcnSpec中定义的两种结构;第一种情况指定第一个输入参数是通过价值,而第二种情况指定经过指针。

def = [];% rtwdemo_sfun_filterV1def = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_filterV1”;def.OutputFcnSpec ='单日元= filterV1(单一u1, u2,单p1)”;def.HeaderFiles = {“myfilter.h”};def.SourceFiles = {“filterV1.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def = [def;def);% rtwdemo_sfun_filterV2def = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_filterV2”;def.OutputFcnSpec ='单日元= filterV2(单一u1[1],单一u2,单p1)”;def.HeaderFiles = {“myfilter.h”};def.SourceFiles = {“filterV2.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def = [def;def);

为模拟生成S-Functions

生成C-MEX S-functions根据提供的描述输入参数“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。S-functions调用遗留功能模拟。的源代码S-functions文件rtwdemo_sfun_filterV1.crtwdemo_sfun_filterV2.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的S-Functions模拟

后生成C-MEX s函数源文件,为模拟与仿真软件编译S-functions®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_filterV1墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples7 tp307ca9da / ex19632214 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples7 / tpb4a23315_9ae5_4baf_96ce_eb9732344436 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / filterV1.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_filterV1。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples7 / tp307ca9da / ex19632214”、“/ tmp / Bdoc17b_748982_13915 / publish_examples7 / tpb4a23315_9ae5_4baf_96ce_eb9732344436 / filterV1.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_filterV1退出# # # # # #开始编译rtwdemo_sfun_filterV2墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples7 tp307ca9da / ex19632214 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples7 / tp4d5ed414_51db_40ab_8ed2_81528911416d ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / filterV2.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_filterV2。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples7 / tp307ca9da / ex19632214”、“/ tmp / Bdoc17b_748982_13915 / publish_examples7 / tp4d5ed414_51db_40ab_8ed2_81528911416d / filterV2.o”)建设与“gcc”。墨西哥人成功完成。 ### Finish Compiling rtwdemo_sfun_filterV2 ### Exit

生成TLC块文件的代码生成

后编译S-functions和在模拟中使用它们,您可以调用这个函数legacy_code()与第一输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定为一个模型所生成的代码如何调用遗留代码。如果你不生成TLC块文件,你试图生成代码模型,该模型包括S-functions、代码生成失败。TLC S-functions块文件rtwdemo_sfun_filterV1.tlcrtwdemo_sfun_filterV2.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code再次与第一个输入()将生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和头文件S-functions S-functions并不在同一个文件夹,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

为调用生成的S-Functions生成蒙面的功能块

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成调用S-functions蒙面的功能块。块地方的软件在一个新的模型。从那里你可以复制他们现有的模型。

legacy_code (“slblock_generate”def);

显示生成的与遗留代码的集成

该模型rtwdemo_lct_filter与遗留代码显示了模型的集成。的子系统TestFilter作为利用遗留C函数通过调用生成S-functions,与单位延迟服务存储以前的输出值。

open_system (“rtwdemo_lct_filter”)open_system (“rtwdemo_lct_filter / TestFilter”)sim卡(“rtwdemo_lct_filter”)

集成外部C函数通过输出参数作为一个返回的参数

这个例子展示了如何使用遗留代码工具集成遗留C函数传递他们的输出返回参数。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

蒋春暄对于费马大定理gainScalar (const蒋春暄对于费马大定理,const蒋春暄对于费马大定理获得)

外语教学是一个typedef浮动。遗留的源代码文件your_types.h,gain.h,gainScalar.c

% rtwdemo_sfun_gain_scalardef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_gain_scalar”;def.OutputFcnSpec ='单日元= gainScalar(单一u1,单一p1) ';def.HeaderFiles = {“gain.h”};def.SourceFiles = {“gainScalar.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_gain_scalar.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_gain_scalar墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples2 tpdda2196c / ex09148220 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples2 / tpdf8d0712_f4ec_4456_9f88_2736eaf8cfd1 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / gainScalar.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_gain_scalar。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples2 / tpdda2196c / ex09148220”、“/ tmp / Bdoc17b_748982_13915 / publish_examples2 / tpdf8d0712_f4ec_4456_9f88_2736eaf8cfd1 / gainScalar.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_gain_scalar # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code()再次与第一个输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定如何生成的代码调用遗留代码的模型。如果你不生成TLC块文件,你试图生成代码模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_gain_scalar.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code()再次与第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成一个蒙面的功能块,调用函数。块地方的软件在一个新的模型。从那里你可以将其复制到现有的模型。

legacy_code (“slblock_generate”def);

显示生成的与遗留代码的集成

该模型rtwdemo_lct_gain与遗留代码显示了模型的集成。的子系统TestGain作为利用遗留C函数通过调用生成功能。

open_system (“rtwdemo_lct_gain”)open_system (“rtwdemo_lct_gain / TestGain”)sim卡(“rtwdemo_lct_gain”)

集成外部C函数传递与定点信号作为输入和输出参数的数据类型

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

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

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

myFixpt逻辑上是一个定点数据类型,它是身体类型定义一个16位整数:

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

遗留的源代码文件timesFixpt.h,timesS16.c

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

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_times_s16.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_times_s16墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples5 tp3d7d748f / ex96454812 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples5 / tpbd6aaeb1_6ad7_4353_9a2c_6622f25443a5 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / timesS16.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_times_s16。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples5 / tp3d7d748f / ex96454812”、“/ tmp / Bdoc17b_748982_13915 / publish_examples5 / tpbd6aaeb1_6ad7_4353_9a2c_6622f25443a5 / timesS16.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_times_s16 # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code()再次与第一个输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定如何生成的代码调用遗留代码的模型。如果你不生成TLC块文件,你试图生成代码模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_times_s16.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code()再次与第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成一个蒙面的功能块,调用函数。块地方的软件在一个新的模型。从那里你可以将其复制到现有的模型。

legacy_code (“slblock_generate”def);

与遗留代码显示模型的集成

该模型rtwdemo_lct_fixpt_signals与遗留代码显示了模型的集成。的子系统TestFixpt作为利用遗留C函数通过调用生成的功能。

open_system (“rtwdemo_lct_fixpt_signals”)open_system (“rtwdemo_lct_fixpt_signals / TestFixpt”)sim卡(“rtwdemo_lct_fixpt_signals”)

集成外部C函数与特定于持久的记忆

集成遗留C函数使用特定于持久内存使用遗留代码的工具。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

空白memory_bus_init (COUNTERBUS * mem、int32_T upper_sat int32_T lower_sat);

空白memory_bus_step (COUNTERBUS *输入、COUNTERBUS * mem COUNTERBUS *输出);

mem是一个特定于持久内存申请延迟一个集成步骤。COUNTERBUS是一个结构体类型定义中定义counterbus.h和实现模型。金宝app总线对象基本工作空间。遗留的源代码文件memory_bus.h,memory_bus.c

evalin (“基地”,“负载rtwdemo_lct_data.mat”)% rtwdemo_sfun_workdef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_work”;def.InitializeConditionsFcnSpec =“空白memory_bus_init (COUNTERBUS work1 [1], int32 p1, int32 p2)”;def.OutputFcnSpec =“空白memory_bus_step (COUNTERBUS u1 [1], COUNTERBUS work1 [1], COUNTERBUS y1 [1])”;def.HeaderFiles = {“memory_bus.h”};def.SourceFiles = {“memory_bus.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_work.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_work墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples6 tp13f0417f / ex38707886 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples6 / tpa14a4760_019f_4a7d_9f03_8caaf6c3546a ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / memory_bus.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_work。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples6 / tp13f0417f / ex38707886”、“/ tmp / Bdoc17b_748982_13915 / publish_examples6 / tpa14a4760_019f_4a7d_9f03_8caaf6c3546a / memory_bus.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_work # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code()再次与第一个输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定如何生成的代码调用遗留代码的模型。如果你不生成TLC块文件,你试图生成代码模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_work.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code()再次与第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成一个蒙面的功能块,调用函数。块地方的软件在一个新的模型。从那里你可以将其复制到现有的模型。

legacy_code (“slblock_generate”def);

与遗留代码显示模型的集成

该模型rtwdemo_lct_work与遗留代码显示了模型的集成。的子系统memory_bus作为利用遗留C函数调用。

open_system (“rtwdemo_lct_work”)open_system (“rtwdemo_lct_work / memory_bus”)sim卡(“rtwdemo_lct_work”)

集成外部C函数,利用结构参数

使用仿真软件的集成遗留C函数和结构参数®公交车的遗留代码的工具。金宝app

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

counterbusFcn (COUNTERBUS * u1, u2乐队int32_T COUNTERBUS * y1, y2 int32_T *)

COUNTERBUS是一个结构体类型定义中定义counterbus.h和实现模型。金宝app总线对象基本工作空间。遗留的源代码文件counterbus.h,counterbus.c

evalin (“基地”,“负载rtwdemo_lct_data.mat”)% rtwdemo_sfun_counterbusdef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_counterbus”;def.OutputFcnSpec =“空白counterbusFcn (COUNTERBUS u1 [1], int32 u2, COUNTERBUS y1 [1], int32 y2 [1])”;def.HeaderFiles = {“counterbus.h”};def.SourceFiles = {“counterbus.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_counterbus.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_counterbus墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples5 tp3d7d748f / ex90330074 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples5 / tpe0b25b0d_18bd_43d7_a15a_cb6eaf7c4f22 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / counterbus.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_counterbus。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples5 / tp3d7d748f / ex90330074”、“/ tmp / Bdoc17b_748982_13915 / publish_examples5 / tpe0b25b0d_18bd_43d7_a15a_cb6eaf7c4f22 / counterbus.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_counterbus # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code()再次与第一个输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定如何生成的代码调用遗留代码的模型。如果你不生成TLC块文件,你试图生成代码模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_counterbus.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code()再次与第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成一个蒙面的功能块,调用函数。块地方的软件在一个新的模型。从那里你可以将其复制到现有的模型。

legacy_code (“slblock_generate”def);

与遗留代码显示模型的集成

该模型rtwdemo_lct_bus与遗留代码显示了模型的集成。的子系统TestCounter作为利用遗留C函数调用。

open_system (“rtwdemo_lct_bus”)open_system (“rtwdemo_lct_bus / TestCounter”)sim卡(“rtwdemo_lct_bus”)

集成外部C函数传递信号和复杂的数据作为输入和输出参数

使用复杂的集成遗留C函数信号的遗留代码的工具。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

空白cplx_gain (creal_T *输入,creal_T *增益,creal_T *输出);

creal_T是双重的复杂表示。遗留的源代码文件cplxgain.h,cplxgain.c

% rtwdemo_sfun_gain_scalardef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_cplx_gain”;def.OutputFcnSpec =“空白cplx_gain(复杂的<双> u1[1],复杂的<双> p1[1],复杂的<双> y1 [1])”;def.HeaderFiles = {“cplxgain.h”};def.SourceFiles = {“cplxgain.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_cplx_gain.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_cplx_gain墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples0 tp791fdb15 / ex97344681 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples0 / tp39763058_aab6_4e71_b6f6_c09e230e6926 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / cplxgain.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_cplx_gain。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples0 / tp791fdb15 / ex97344681”、“/ tmp / Bdoc17b_748982_13915 / publish_examples0 / tp39763058_aab6_4e71_b6f6_c09e230e6926 / cplxgain.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_cplx_gain # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code()再次与第一个输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定如何生成的代码调用遗留代码的模型。如果你不生成TLC块文件,你试图生成代码模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_cplx_gain.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code()再次与第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成一个蒙面的功能块,调用函数。块地方的软件在一个新的模型。从那里你可以将其复制到现有的模型。

legacy_code (“slblock_generate”def);

与遗留代码显示模型的集成

该模型rtwdemo_lct_cplxgain与遗留代码显示了模型的集成。的子系统complex_gain作为利用遗留C函数通过调用生成功能。

如果isempty (find_system (“SearchDepth”0,“名字”,“rtwdemo_lct_cplxgain”)open_system (“rtwdemo_lct_cplxgain”)open_system (“rtwdemo_lct_cplxgain / complex_gain”)sim卡(“rtwdemo_lct_cplxgain”)结束

集成外部C函数传递参数,继承了维度

这个例子展示了如何使用遗留代码工具整合遗产继承了维C函数的参数。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

  • 空白mat_add (real_T * u1, real_T * u2, int32_T nbRows, int32_T nbCols, real_T * y1)

  • 空白mat_mult (real_T * u1, real_T * u2, int32_T nbRows1, int32_T nbCols1, int32_T nbCols2, real_T * y1)

双real_T是一个typedef, int32_T是一个32位的整数类型。遗留的源代码文件mat_ops.h,mat_ops.c

def = [];% rtwdemo_sfun_mat_adddef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_mat_add”;def.OutputFcnSpec = [“空白mat_add(双u1[][],双u2 [] [],”int32 u3, int32 u4双y₁[大小(u1, 1)][大小(u1, 2)])”];def.HeaderFiles = {“mat_ops.h”};def.SourceFiles = {“mat_ops.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def = [def;def);% rtwdemo_sfun_mat_multdef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_mat_mult”;def.OutputFcnSpec = [“空白mat_mult(双u1 (p1) (p2),双u2 (p2) (p3),“int32 int32 p1, p2, p3 int32,双y1 (p1) (p3))”];def.HeaderFiles = {“mat_ops.h”};def.SourceFiles = {“mat_ops.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def = [def;def);

为模拟生成S-Functions

生成C-MEX S-functions根据提供的描述输入参数“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。在模拟S-functions调用遗留功能。s函数的源代码文件rtwdemo_sfun_mat_add.crtwdemo_sfun_mat_mult.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的S-Functions模拟

后生成C-MEX s函数源文件,为模拟与仿真软件编译S-functions®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_mat_add墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples4 tp916d078e / ex89794148 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples4 / tp830b9ae2_069a_440c_b10a_aa13d7e7693e ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / mat_ops.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_mat_add。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples4 / tp916d078e / ex89794148”、“/ tmp / Bdoc17b_748982_13915 / publish_examples4 / tp830b9ae2_069a_440c_b10a_aa13d7e7693e / mat_ops.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_mat_add退出# # # # # #开始编译rtwdemo_sfun_mat_mult墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples4 tp916d078e / ex89794148 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples4 / tp3dbe0325_8995_4cab_98a8_5507ee725660 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / mat_ops.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_mat_mult。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples4 / tp916d078e / ex89794148”、“/ tmp / Bdoc17b_748982_13915 / publish_examples4 / tp3dbe0325_8995_4cab_98a8_5507ee725660 / mat_ops.o”)建设与“gcc”。墨西哥人成功完成。 ### Finish Compiling rtwdemo_sfun_mat_mult ### Exit

生成TLC块文件的代码生成

后编译S-functions和在模拟中使用它们,您可以调用这个函数legacy_code()与第一输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定为一个模型所生成的代码如何调用遗留代码。如果你不生成TLC块文件,你试图生成代码模型,该模型包括S-functions、代码生成失败。TLC S-functions块文件rtwdemo_sfun_mat_add.tlcrtwdemo_sfun_mat_mult.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code再次与第一个输入()将生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和头文件S-functions S-functions并不在同一个文件夹,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

为调用生成的S-Functions生成蒙面的功能块

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成调用S-functions蒙面的功能块。块地方的软件在一个新的模型。从那里你可以复制他们现有的模型

legacy_code (“slblock_generate”def);

显示生成的与遗留代码的集成

该模型rtwdemo_lct_inherit_dims与遗留代码显示了模型的集成。子系统TestMatOps作为利用遗留C函数调用,与单位延迟服务存储以前的输出值。

open_system (“rtwdemo_lct_inherit_dims”)open_system (“rtwdemo_lct_inherit_dims / TestMatOps”)sim卡(“rtwdemo_lct_inherit_dims”)

集成外部C函数实现的开始和终止操作

集成遗留的C函数开始和终止行为通过使用遗留代码的工具。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

  • 空白initFaultCounter (unsigned int *计数器)

  • 空白openLogFile (void * * fid)

  • 空白incAndLogFaultCounter (void *支撑材,unsigned int *柜台,双时间)

  • 空白closeLogFile (void * * fid)

遗留的源代码文件your_types.h,fault.h,fault.c

% rtwdemo_sfun_faultdef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_fault”;def.InitializeConditionsFcnSpec =“initFaultCounter (uint32 work2 [1])”;def.StartFcnSpec =“openLogFile (void * * work1)”;def.OutputFcnSpec =“incAndLogFaultCounter (void * work1, uint32 work2[1],双u1)”;def.TerminateFcnSpec =“closeLogFile (void * * work1)”;def.HeaderFiles = {“fault.h”};def.SourceFiles = {“fault.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def.Options。useTlcWithAccel = false;

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_fault.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_fault墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples6 tp13f0417f / ex46254423 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples6 / tp9cdf2195_43a7_4f07_80f5_77720fd5985e ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / fault.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_fault。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples6 / tp13f0417f / ex46254423”、“/ tmp / Bdoc17b_748982_13915 / publish_examples6 / tp9cdf2195_43a7_4f07_80f5_77720fd5985e / fault.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_fault # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code()再次与第一个输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定如何生成的代码调用遗留代码的模型。如果你不生成TLC块文件,你试图生成代码模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_fault.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code()再次与第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成一个蒙面的功能块,调用函数。块地方的软件在一个新的模型。从那里你可以将其复制到现有的模型。

legacy_code (“slblock_generate”def);

显示生成的与遗留代码的集成

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

open_system (“rtwdemo_lct_start_term”)open_system (“rtwdemo_lct_start_term / TestFault”)sim卡(“rtwdemo_lct_start_term”)

集成外部C函数传递参数的多维信号

这个例子展示了如何使用遗留代码工具集成遗留C函数和多维信号。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

空白array3d_add (real_T *日元real_T * u1, real_T * u2, int32_T nbRows, int32_T nbCols, int32_T nbPages);

双real_T是一个typedef, int32_T是一个32位的整数类型。遗留的源代码文件ndarray_ops.h,ndarray_ops.c

% rtwdemo_sfun_ndarray_adddef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_ndarray_add”;def.OutputFcnSpec = [空白array3d_add(双y₁[大小(u1, 1)][大小(u1, 2)][大小(u1, 3)],”,“双u1[][][],双u2 [] [] [],”“int32大小(u1, 1), int32大小(u1, 2), int32大小(u1, 3))”];def.HeaderFiles = {“ndarray_ops.h”};def.SourceFiles = {“ndarray_ops.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};

日元是相同尺寸的三维输出信号三维输入信号u1。注意,过去的3参数传递给遗留函数对应的元素数量每个维度的三维输入信号u1。

生成一个模拟的功能

根据描述来生成一个C-MEX s函数输入参数提供的“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。函数调用期间遗留功能模拟。s函数的源代码文件rtwdemo_sfun_ndarray_add.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的模拟功能

后生成C-MEX s函数源文件,编译的功能模拟与仿真软件®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_ndarray_add墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples2 tpdda2196c / ex14927435 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples2 / tpac864906_60dd_4114_b36c_f522cede9ed0 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / ndarray_ops.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_ndarray_add。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples2 / tpdda2196c / ex14927435”、“/ tmp / Bdoc17b_748982_13915 / publish_examples2 / tpac864906_60dd_4114_b36c_f522cede9ed0 / ndarray_ops.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_ndarray_add # # #退出

生成一个薄块文件代码生成

后你在模拟编译功能和使用它,您可以调用这个函数legacy_code()再次与第一个输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定如何生成的代码调用遗留代码的模型。如果你不生成TLC块文件,你试图生成代码模型,包括功能、代码生成失败。TLC块文件的功能是:rtwdemo_sfun_ndarray_add.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code()再次与第一个输入设置为生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和s函数的头文件是不相同的文件夹功能,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

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

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成一个蒙面的功能块,调用函数。块地方的软件在一个新的模型。从那里你可以将其复制到现有的模型。

legacy_code (“slblock_generate”def);

显示生成的与遗留代码的集成

该模型rtwdemo_lct_ndarray与遗留代码显示了模型的集成。的子系统ndarray_add作为利用遗留C函数调用。

open_system (“rtwdemo_lct_ndarray”)open_system (“rtwdemo_lct_ndarray / ndarray_add”)sim卡(“rtwdemo_lct_ndarray”)

集成外部C函数与一块样品时间规定,继承和参数化

这个例子展示了如何使用遗留代码工具集成遗留C函数指定块的样品时间,继承和参数化的。

遗留代码的工具,您可以:

  • 提供遗留功能规范。

  • 生成一个C-MEX s函数调用期间遗留代码仿真。

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

  • 和可选rtwmakecfg生成TLC块文件。m文件,指定如何生成的代码调用遗留代码的模型。

提供遗留功能规范

遗留代码的工具函数接受特定数据结构或数组的结构作为参数。您可以通过调用函数初始化数据结构legacy_code()使用“初始化”作为第一个输入。初始化结构后,分配其属性值对应于遗留代码集成。详细的帮助性质,电话legacy_code(“帮助”)。遗留的原型函数被称为在这个例子中是:

蒋春暄对于费马大定理gainScalar (const蒋春暄对于费马大定理,const蒋春暄对于费马大定理获得)

外语教学是一个typedef浮动。遗留的源代码文件your_types.h,gain.h,gainScalar.c

def = [];% rtwdemo_sfun_st_inheriteddef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_st_inherited”;def.OutputFcnSpec ='单日元= gainScalar(单一u1,单一p1) ';def.HeaderFiles = {“gain.h”};def.SourceFiles = {“gainScalar.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def = [def;def);% rtwdemo_sfun_st_fixeddef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_st_fixed”;def.OutputFcnSpec ='单日元= gainScalar(单一u1,单一p1) ';def.HeaderFiles = {“gain.h”};def.SourceFiles = {“gainScalar.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def.SampleTime = 1 [2];def = [def;def);% rtwdemo_sfun_st_parameterizeddef = legacy_code (“初始化”);def.SFunctionName =“rtwdemo_sfun_st_parameterized”;def.OutputFcnSpec ='单日元= gainScalar(单一u1,单一p1) ';def.HeaderFiles = {“gain.h”};def.SourceFiles = {“gainScalar.c”};def.IncPaths = {“rtwdemo_lct_src”};def.SrcPaths = {“rtwdemo_lct_src”};def.SampleTime =“参数化”;def = [def;def);

为模拟生成S-Functions

生成C-MEX S-functions根据提供的描述输入参数“def”,调用这个函数legacy_code再次与第一个输入()设置为“sfcn_cmex_generate”。在模拟S-functions调用遗留功能。的源代码S-functions文件rtwdemo_sfun_st_inherited.crtwdemo_sfun_st_fixed.crtwdemo_sfun_st_parameterized.c

legacy_code (“sfcn_cmex_generate”def);

编译生成的S-Functions模拟

后生成C-MEX s函数源文件,为模拟与仿真软件编译S-functions®,调用这个函数legacy_code再次与第一个输入()设置为“编译”。金宝app

legacy_code (“编译”def);
# # #开始编译rtwdemo_sfun_st_inherited墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples8 tpacb4c78f / ex74504488 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples8 / tpe908af84_2bda_460b_af60_6984b647057d ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / gainScalar.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_st_inherited。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples8 / tpacb4c78f / ex74504488”、“/ tmp / Bdoc17b_748982_13915 / publish_examples8 / tpe908af84_2bda_460b_af60_6984b647057d / gainScalar.o”)建设与“gcc”。墨西哥人成功完成。# # #完成编译rtwdemo_sfun_st_inherited退出# # # # # #开始编译rtwdemo_sfun_st_fixed墨西哥人(“我/ mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src’,‘我/ tmp / Bdoc17b_748982_13915 / publish_examples8 tpacb4c78f / ex74504488 ', ' c ', ' -outdir ', ' / tmp / Bdoc17b_748982_13915 / publish_examples8 / tp25a7805c_27be_4340_ac20_2dc4a5dcdd31 ', ' / mathworks /猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos / rtwdemo_lct_src / gainScalar.c”)建设与gcc。墨西哥人成功完成。墨西哥人(“rtwdemo_sfun_st_fixed。c ', ' - i / mathworks猛击/棒/ Bdoc17b /构建/ matlab工具箱/ rtw / rtwdemos rtwdemo_lct_src”、“我/ tmp / Bdoc17b_748982_13915 / publish_examples8 / tpacb4c78f / ex74504488”、“/ tmp / Bdoc17b_748982_13915 / publish_examples8 / tp25a7805c_27be_4340_ac20_2dc4a5dcdd31 / gainScalar.o”)建设与“gcc”。墨西哥人成功完成。 ### Finish Compiling rtwdemo_sfun_st_fixed ### Exit ### Start Compiling rtwdemo_sfun_st_parameterized mex('-I/mathworks/devel/bat/Bdoc17b/build/matlab/toolbox/rtw/rtwdemos/rtwdemo_lct_src', '-I/tmp/Bdoc17b_748982_13915/publish_examples8/tpacb4c78f/ex74504488', '-c', '-outdir', '/tmp/Bdoc17b_748982_13915/publish_examples8/tp5af732d8_bd16_4649_af1b_05541265272b', '/mathworks/devel/bat/Bdoc17b/build/matlab/toolbox/rtw/rtwdemos/rtwdemo_lct_src/gainScalar.c') Building with 'gcc'. MEX completed successfully. mex('rtwdemo_sfun_st_parameterized.c', '-I/mathworks/devel/bat/Bdoc17b/build/matlab/toolbox/rtw/rtwdemos/rtwdemo_lct_src', '-I/tmp/Bdoc17b_748982_13915/publish_examples8/tpacb4c78f/ex74504488', '/tmp/Bdoc17b_748982_13915/publish_examples8/tp5af732d8_bd16_4649_af1b_05541265272b/gainScalar.o') Building with 'gcc'. MEX completed successfully. ### Finish Compiling rtwdemo_sfun_st_parameterized ### Exit

生成TLC块文件的代码生成

后编译S-functions和在模拟中使用它们,您可以调用这个函数legacy_code()与第一输入设置为“sfcn_tlc_generate”生成TLC块文件。块文件指定为一个模型所生成的代码如何调用遗留代码。如果你不生成TLC块文件,你试图生成代码模型,该模型包括S-functions、代码生成失败。TLC S-functions块文件rtwdemo_sfun_st_inherited.tlcrtwdemo_sfun_st_fixed.tlcrtwdemo_sfun_st_parameterized.tlc

legacy_code (“sfcn_tlc_generate”def);

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

在创建TLC块文件之后,您可以调用函数legacy_code再次与第一个输入()将生成一个rtwmakecfg rtwmakecfg_generate。m文件来支持代码生成金宝app。如果所需的源和头文件S-functions S-functions并不在同一个文件夹,你想在makefile中添加这些依赖项产生在代码生成,生成rtwmakecfg。m文件。

legacy_code (“rtwmakecfg_generate”def);

为调用生成的S-Functions生成蒙面的功能块

后编译C-MEX s函数源代码,您可以调用这个函数legacy_code再次与第一个输入()设置为“slblock_generate”生成调用S-functions蒙面的功能块。块地方的软件在一个新的模型。从那里你可以复制他们现有的模型。

legacy_code (“slblock_generate”def);

显示生成的与遗留代码的集成

该模型rtwdemo_lct_sampletime与遗留代码显示了模型的集成。子系统sample_time作为利用遗留C函数调用,与单位延迟服务存储以前的输出值。

open_system (“rtwdemo_lct_sampletime”)open_system (“rtwdemo_lct_sampletime / sample_time”)sim卡(“rtwdemo_lct_sampletime”)

另请参阅

相关的话题

这个主题有帮助吗?