Main Content

快速向导代码替换库开发 - Simulink

此示例说明如何开发一个代码替换库,在其中包含用来为数学函数 sin 生成替换代码的入口函数。您需要使用代码替换工具。

前提条件

要完成此示例,请安装以下软件:

  • MATLAB®

  • MATLAB Coder™

  • Simulink®

  • Simulink Coder™

  • Embedded Coder®

  • Compiler

有关安装 MathWorks® 产品的说明,请参阅 MATLAB 安装文档。如果您已安装 MATLAB 并想查看还安装了哪些其他 MathWorks 产品,请在命令行窗口中输入 ver

有关支持的编译器的列表,请参阅 https://www.mathworks.com/support/compilers/current_release/

打开代码替换工具

1.启动一个 MATLAB 会话。

2.创建或浏览 (cd) 到一个空文件夹。

3.在命令提示符下,输入 crtool 命令。Code Replacement Tool 窗口将打开。

创建代码替换表

1.在 Code Replacement Tool 窗口中,选择文件 > 新建表

2.在右侧窗格中,将表命名为 crl_table_sinfcn 并点击应用。保存表时,工具将使用文件名 crl_table_sinfcn.m 保存它。

创建表条目

创建一个表条目,将具有 double 输入和 double 输出的 sin 函数映射到一个自定义实现函数。

1.在左侧窗格中,选择表 crl_table_sinfcn。然后,选择文件 > 新建条目 > 函数。条目显示在中间窗格中,最初没有名称。

2.在中间窗格中,选择新条目。

3.在右侧窗格中的映射信息选项卡上,从函数菜单中选择 sin

4.保留算法设置为 Unspecified,并保留概念函数组中的参数设置为默认值。

5.在替换函数组中,将替换函数命名为 sin_dbl

6.保留替换函数组中的其余参数设置为默认值。

7.点击应用。工具会更新函数签名预览以反映指定的替换函数名称。

8.滚动到映射信息选项卡的底部,然后点击验证条目。工具会验证您的条目。

下图显示完成的映射信息。

指定替换代码的编译信息

1.在编译信息选项卡上,对于实现头文件参数,输入 sin_dbl.h

2.保留其余参数设置为默认值。

3.点击应用

4.您也可以重新验证条目。返回映射信息选项卡,然后点击验证条目

创建另一个表条目

创建一个条目,将具有 single 输入和 double 输出的 sin 函数映射到名为 sin_sgl 的自定义实现函数。通过复制和粘贴 sin_dbl 条目创建该条目。

1.在中间窗格中,选择 sin_dbl 条目。

2.选择编辑 > 复制

3.选择编辑 > 粘贴

4.在映射信息选项卡上的概念函数部分,将输入参量 u1 的数据类型设置为 single

5.在替换函数部分中,将函数命名为 sin_sgl。将输入参量 u1 的数据类型设置为 single

6.点击应用。请注意所显示的关于函数签名预览的更改。

7.在编译信息选项卡上,对于实现头文件参数,输入 sin_sgl.h。将其余参数设置为默认值,然后点击应用

验证代码替换表

1.选择操作 > 验证表

2.如果工具报告错误,则修复它们并重新运行验证。反复修复和验证错误,直到工具不再报错为止。下图显示了验证报告。

保存代码替换表

将代码替换表保存到工作文件夹中的 MATLAB 文件。选择文件 > 保存表。默认情况下,工具使用表名称来命名文件。对于此示例,工具将表保存在文件 crl_table_sinfcn.m 中。

查看代码替换表定义

以查看代码替换表定义的 MATLAB 代码为例。使用工具创建表定义文件的初始版本后,您可以在文本编辑器中更新、增强或复制文件。

要查看它,请在 MATLAB 或其他文本编辑器中,打开文件 crl_table_sinfcn.m

生成注册文件

您必须将代码替换表注册为代码替换库的一部分,才能使用它。使用代码替换工具生成注册文件。

1.在代码替换工具中,选择文件 > 生成注册文件

2.在生成注册文件对话框中,编辑对话框字段以匹配下图,然后点击确定

3.在选择保存注册文件的位置对话框中,指定注册文件的位置。该位置必须位于 MATLAB 路径上或当前工作文件夹中。保存文件。工具将文件另存为 rtwTargetInfo.m

注册代码替换表

在命令提示符下,输入:

RTW.TargetRegistry.getInstance('reset');

查看和测试代码替换

应用您的代码替换库。验证代码生成器是否能按照您的预期执行代码替换。

1.检查错误。在命令行中,调用表定义文件。例如:

tbl = crl_table_sinfcn

tbl =

TflTable with properties:
               Version: '1.0'
       ReservedSymbols: []
   StringResolutionMap: []
            AllEntries: [2x1 RTW.TflCFunctionEntry]
           EnableTrace: 1|

如果定义文件中存在错误,则调用会触发消息。修复错误,然后重试。

2.使用 Code Replacement Viewer 来检查代码替换条目。例如:

crviewer('Sin Function Example')

在查看器中,选择表中的条目,并验证内容是否符合您的期望。查看器可以帮助您检测问题,例如:

  • 参量顺序不正确。

  • 概念参量名称与代码生成器的预期不匹配。

  • 优先级设置不正确。

3.确定现有模型,或创建一个包含 Trigonometric 模块且该模块被设置为 sin 函数的模型。例如:

4.打开模型并将其配置为使用 Embedded Coder(基于 ERT)目标进行代码生成。

5.查看您的库是否被列为代码生成 > 接口 > 代码替换库模型配置参数的一个可用选项。如果已列出,请选择它。

如果未列出,请打开注册文件 rtwTargetInfo.m。查看在创建文件时是否输入了正确的代码替换表名称。如果将光标悬停在所选库上,将显示工具提示。此提示包含从代码替换库注册文件派生的信息,例如库描述及其中包含的表的列表。

6.要快速查找参数,请在“配置参数”对话框的搜索字段中键入参数名称。通过选择以下参数来配置用于代码替换分析的代码生成报告:

  • 创建代码生成报告

  • 自动打开报告

  • 代码到模型

  • 模型到代码

  • 摘要显示哪些模块触发了代码替换

  • 包括注释

  • Simulink 模块注释

  • Simulink 模块描述

7.将模型配置为仅生成代码。在编译可执行程序之前,请确认代码生成器能够按预期替换代码。

8.为模型生成代码。

9.在代码生成报告的代码替换报告部分中查看代码替换结果。

该报告指示代码生成器找到一个匹配项并应用了函数 sin_dbl 的替换代码。

10.查看代码替换。在模型窗口中,右键点击 Trigonometric Function 模块。选择 C/C++ 代码 > 导航至 C/C++ 代码。代码生成报告将打开,并突出显示 my_sin_func.c 中的代码替换。在本例中,代码生成器用 sin_dbl 替换了 sin

有关详细信息

相关主题