Main Content

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

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

前提条件

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

  • MATLAB®

  • MATLAB Coder™

  • Simulink®

  • Simulink Coder™

  • Embedded Coder®

  • Compiler

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

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

打开 Code Replacement Tool

1.启动一个 MATLAB 会话。

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

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

创建代码替换表

1.在 Code Replacement Tool 窗口中,选择 File > New table

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

创建表条目

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

1.在左侧窗格中,选择表 crl_table_sinfcn。然后,选择 File > New entry > Function。条目显示在中间窗格中,最初没有名称。

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

3.在右侧窗格中的 Mapping Information 选项卡上,从 Function 菜单中选择 sin

4.保留 Algorithm 设置为 Unspecified,并保留 Conceptual function 组中的参数设置为默认值。

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

6.保留 Replacement function 组中的其余参数设置为默认值。

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

8.滚动到 Mapping Information 选项卡的底部,然后点击 Validate entry。工具会验证您的条目。

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

指定替换代码的编译信息

1.在 Build Information 选项卡上,对于 Implementation header file 参数,输入 sin_dbl.h

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

3.点击应用

4.您也可以重新验证条目。返回 Mapping Information 选项卡,然后点击 Validate entry

创建另一个表条目

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

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

2.选择 Edit > Copy

3.选择 Edit > Paste

4.在 Mapping Information 选项卡上的 Conceptual function 部分,将输入参数 u1 的数据类型设置为 single

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

6.点击应用。请注意所显示的关于 Function signature preview 的更改。

7.在 Build Information 选项卡上,对于 Implementation header file 参数,输入 sin_sgl.h。将其余参数设置为默认值,然后点击 Apply

验证代码替换表

1.选择 Actions > Validate table

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

保存代码替换表

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

查看代码替换表定义

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

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

生成注册文件

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

1.在 Code Replacement Tool 中,选择 File > Generate registration file

2.在 Generate registration file 对话框中,编辑对话框字段以匹配下图,然后点击 OK

3.在 Select location to save the registration file 对话框中,指定注册文件的位置。该位置必须位于 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.查看您的库是否被列为 Code Generation > Interface > Code replacement library 模型配置参数的一个可用选项。如果已列出,请选择它。

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

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

  • Create code generation report

  • Open report automatically

  • Code-to-model

  • Model-to-code

  • Summarize which blocks triggered code replacements

  • Include comments

  • Simulink block comments

  • Simulink block descriptions

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

8.为模型生成代码。

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

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

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

有关详细信息

相关主题