主要内容

内存功能代码替换

的代码替换库来优化内存函数的性能,此示例提供了关于如何为对象定义代码替换的信息memcpy函数。要开发代码替换库,可以使用交互式方法或编程方法。有关更多信息,请参见开发一个代码替换库

交互式地开发一个代码替换库

  1. 打开代码替换工具(crtool),从MATLAB命令行输入以下命令:

    > > crtool
  2. 创建一个表。

    1. 从crtool上下文菜单中选择文件>新表

    2. 在右侧窗格中,为表命名crl_table_memcpy.点击应用

  3. 创建一个条目。从crtool上下文菜单中选择文件>新条目>函数

  4. 创建入口参数。在函数下拉列表,选择memcpy

  5. 创建概念表示。概念表示法描述了要替换的函数的签名。在概念功能crtool的子节,指定返回参数,日元,与数据类型虚空和参数类型的指针,输入参数,u1而且u2数据类型虚空和参数类型指针和u3数据类型无符号积分参数类型的标量。

  6. 创建实现表示。实现表示描述了优化函数的签名。对于本例,要指定实现参数具有与概念参数相同的顺序和属性,请选择使概念参数类型和实现参数类型相同复选框。

    指定一个的名字为下面的替换函数函数原型

  7. 指定构建信息。单击构建信息选项卡打开构建需求窗格。指定代码生成器用于代码替换所需的文件(源文件、头文件、对象文件)。对于本例,您不需要指定构建信息。

  8. 验证并保存表。在映射信息选项卡上,单击验证输入.在crtool上下文菜单中,选择文件>保存表>保存

  9. 注册一个代码替换库。注册将创建一个由您指定的表组成的库。选择文件>生成注册文件.在生成注册文件对话框中,填写以下字段:

    要使用代码替换库,请使用以下命令刷新当前MATLAB会话:

    > > sl_refresh_customizations

  10. 验证代码替换库。从MATLAB命令行中,使用代码替换查看器并验证表和条目是否正确指定。有关更多信息,请参见验证代码替换库.配置您的模型以使用代码替换库,生成代码,并验证替换是否按预期发生。如果发生意外行为,请检查命中和未命中日志以排除问题。

以编程方式开发一个代码替换库

  1. 方法打开编程接口MATLAB菜单选择>函数

  2. 创建一个表。

    1. 创建一个函数来调用代码替换库表。函数不应该有参数并返回一个表对象。

    2. 通过调用创建一个表对象环球套票。TflTable

    函数hTable = crl_table_memcpy()创建一个函数来调用代码替换库表创建一个表对象hTable = RTW.TflTable;
  3. 创建一个条目。因为这个示例替换了一个函数,所以通过调用条目函数在表中创建一个代码替换条目环球套票。TflCFunctionEntry

    函数hTable = crl_table_memcpy()创建一个代码替换库表创建一个表对象hTable = RTW.TflTable;%%创建条目hEntry = rtw.TflCFunctionEntry;
  4. 创建入口参数。因为这个例子替换了一个函数,所以通过调用函数来创建入口参数setTflCFunctionEntryParameters

    函数hTable = crl_table_memcpy()创建一个代码替换库表创建一个表对象hTable = RTW.TflTable;%%创建条目hEntry = RTW.TflCFunctionEntry;创建条目参数为防止函数返回void,将SideEffects设置为“true”%被优化掉。hEntry.setTflCFunctionEntryParameters (...“关键”“memcpy”...“优先”, 90,...“ImplementationName”“memcpy_int”...“ImplementationHeaderFile”“memcpy_int.h”...“调查”,真正的);
  5. 创建概念表示。概念表示法描述了要替换的函数的签名。若要显式指定参数属性,请调用该函数getTflArgFromString

    函数hTable = crl_table_memcpy()创建一个代码替换库表创建一个表对象hTable = RTW.TflTable;%%创建条目hEntry = RTW.TflCFunctionEntry;创建条目参数为防止函数返回void,将SideEffects设置为“true”%被优化掉。hEntry.setTflCFunctionEntryParameters (...“关键”“memcpy”...“优先”, 90,...“ImplementationName”“memcpy_int”...“ImplementationHeaderFile”“memcpy_int.h”...“调查”,真正的);创建概念性的参数参数= getTflArgFromString(hTable,“日元”“void *”);参数。IOType =“RTW_IO_OUTPUT”;addConceptualArg (hEntry arg);参数= getTflArgFromString(hTable,‘u1’“void *”);addConceptualArg (hEntry arg);参数= getTflArgFromString(hTable,“u2”“void *”);addConceptualArg (hEntry arg);参数= getTflArgFromString(hTable,u3的“size_t”);addConceptualArg (hEntry arg);
  6. 创建实现表示。实现表示描述了优化函数的签名。若要指定实现参数具有与概念参数相同的顺序和属性,请调用函数copyConceptualArgsToImplementation.通过调用函数将完整的条目添加到表中addEntry

    函数hTable = crl_table_memcpy()创建一个代码替换库表创建一个表对象hTable = RTW.TflTable;%%创建条目hEntry = RTW.TflCFunctionEntry;创建条目参数setTflCFunctionEntryParameters (hEntry...“关键”“memcpy”...“优先”, 90,...“ImplementationName”“memcpy_int”...“ImplementationHeaderFile”“memcpy_int.h”...“调查”,真正的);创建概念性的参数参数= getTflArgFromString(hTable,“日元”“void *”);参数。IOType =“RTW_IO_OUTPUT”;addConceptualArg (hEntry arg);参数= getTflArgFromString(hTable,‘u1’“void *”);addConceptualArg (hEntry arg);参数= getTflArgFromString(hTable,“u2”“void *”);addConceptualArg (hEntry arg);参数= getTflArgFromString(hTable,u3的“size_t”);addConceptualArg (hEntry arg);创建实现表示copyConceptualArgsToImplementation (hEntry);%%将条目添加到表中hTable.addEntry (hEntry);
  7. 指定构建信息。在条目参数中,指定代码生成器用于代码替换所需的文件(头文件、源文件、对象文件)。对于本例,构建信息不是必需的。

  8. 验证并保存定制文件。从MATLAB菜单中,选择保存此自定义文件文件>保存.从命令行,通过调用它来验证代码替换库表:

    >> hTable = crl_table_memcpy
  9. 注册代码替换库。注册通过定义库名称、代码替换表和其他信息来创建代码替换库。用这些规格创建一个注册文件:

    函数rtwTargetInfo (cm) cm.registerTargetInfo (@loc_register_crl);结束函数this(1) = RTW.TflRegistry;(1)。Name ='CRL用于内存函数替换';(1)。TableList = {“crl_table_memcpy.m”};%表创建在本例(1)。TargetHWDeviceType = {‘*’};(1)。描述='示例代码替换库'结束

    要使用代码替换库,请使用以下命令刷新当前MATLAB会话:

    > > sl_refresh_customizations

  10. 验证代码替换库。从MATLAB命令行中,使用代码替换查看器并验证表和条目是否正确指定。有关更多信息,请参见验证代码替换库.配置您的模型以使用代码替换库,生成代码,并验证替换是否按预期发生。如果发生意外行为,请检查命中和未命中日志以排除问题。

相关的话题