验证代码替换
在创建或修改并注册代码替换表之后,使用以下技术检查和验证表及其条目。
在命令提示符处调用表定义文件。
使用“代码替换查看器”检查库、表和条目。
从应用代码替换库的源代码跟踪代码替换。
检查在代码生成期间记录的代码替换命中和遗漏。
代码替换命中与错误
代码生成器分别记录它在命中缓存和未命中缓存中找到和未找到匹配的代码替换表项。当代码替换条目匹配失败且代码未被替换时,代码生成器将调用站点对象(CSO)记录为miss缓存中的miss。当条目匹配成功时,代码生成器将在命中缓存中记录匹配的条目。
代码生成器每次生成代码时都会覆盖命中和遗漏的缓存数据。缓存数据只反映了最后一个应用程序组件(MATLAB®代码或Simul金宝appink®模型)为其生成代码。
您可以使用“代码替换查看器”来根据记录的命中和遗漏跟踪数据查看跟踪信息。命中缓存提供了帮助验证代码替换的跟踪信息。
缺失缓存和收集并存储在代码替换表中的相关缺失数据为缺失提供跟踪信息。使用此信息对未发生的预期代码替换进行故障排除。丢失的跟踪信息:
标识调用站点对象。
提供指向缺失的相关源位置的链接。
包括丢失原因的信息。
验证表定义文件
创建或修改代码替换表定义文件后,对其进行验证。的调用中指定表的名称isvalid
函数。例如:
isvalid (crl_table_sinfcn)
Ans = 1
MATLAB显示发生的错误。在下面的例子中,MATLAB检测到数据类型名称中的一个拼写错误。
isvalid (crl_table_sinfcn)
???RTW_CORE:tfl:TflTable:不支持金宝app的数据类型,'dooble'。错误在==> crl_table_sininfcn at 7 hTable。(100,1, 'sin', 'dooble', 'sin_dbl',…
复习图书馆内容
创建或修改代码替换库后,请使用代码替换查看器检查和验证库中的表列表和每个表中的条目。
打开查看器以显示库的内容。在命令提示符下,输入以下命令:
crviewer ('图书馆”)
例如:
crviewer (加减法例题)
查看左窗格中的表列表。桌子不见了吗?表所列的相对顺序是否正确?默认情况下,查看器按搜索顺序显示表。
在左窗格中,单击每个表并查看中间窗格中的条目列表。条目丢失了吗?列表中是否包含无关的或意外的条目?
复习表内容
创建或修改代码替换表后,请使用代码替换查看器检查和验证表项。
打开查看器以显示表的内容。在命令提示符下,输入以下命令。
表格
是一个定义代码替换表的MATLAB文件。该文件必须在当前文件夹或MATLAB路径中。crviewer (表格)
例如:
crviewer (crl_table_addsub)
查看中心窗格中的条目列表。条目丢失了吗?列表中是否包含无关的或意外的条目?默认情况下,查看器按搜索顺序显示条目。
在中心窗格中,单击每个条目,并在右侧窗格中验证条目信息。
参数顺序正确。
概念参数名称符合代码生成器命名约定。
实现参数名称是正确的。
算法属性(例如,饱和度和舍入模式)设置正确。
头文件或源文件规范没有丢失。
I/O类型正确。
条目的相对优先级是正确的。
检查代码替换
在检查了代码替换库和表的内容之后,生成代码和代码生成报告。验证代码生成器是否按预期替换了代码。
代码替换报告详细描述了代码生成器用于代码替换的代码替换库函数。该报告提供了每个替换实例和触发替换的模型元素之间的映射。
下面的示例演示了检查代码替换的两种互补方法:
查看代码生成报告的“代码替换报告”部分以获得预期的替换。
跟踪代码替换。
对于由模型层次结构组成的模型,对层次结构中的每个模型重复以下过程。分别为每个引用模型生成代码并检查跟踪信息。在代码替换查看器中捕获的记录缓存命中和遗漏信息对于生成代码的最后一个模型是有效的。当您为层次结构中的每个模型生成代码时,代码生成器将覆盖日志信息。
在预期发生函数或运算符替换的地方打开模型。本示例使用该模型
.rtwdemo_crladdsub
配置代码生成器以使用您的代码替换库。对于本例,将库设置为
加减示例
.配置代码生成报告以包括代码替换报告。在代码生成>报告窗格中,选择创建代码生成报告而且自动打开报告.在先进的参数部分中,选择模型到代码的而且总结哪些块触发了代码替换.
为生成的代码配置注释。在代码生成>评论窗格中,选择:
包括评论
或两者之一金宝appSimulink块注释而且金宝appSimulink块描述
在代码替换报告,这些选项包括Simulink块信息。金宝app
将代码生成器配置为只生成代码。在构建可执行文件之前,请检查生成代码中的代码替换。
生成代码和报告。
打开代码替换报告部分的代码生成报告。
该报告列出了代码生成器使用的替换函数。它提供了每个替换实例和触发替换的Simulink块之间的映射。金宝app
审阅报告:
检查是否发生了预期的函数和操作符代码替换。
在替换部分中,单击每个块链接,以查看触发报告的代码替换的源代码。
在Simuli金宝appnk模型窗口中,使用模型到代码的高亮显示来跟踪代码替换。确定并右键单击预期发生代码替换的块。选择C / c++代码>导航到C/ c++代码.代码生成报告将出现,并突出显示相应的替换代码。在示例模型中
rtwdemo_crladdsub
,右键单击Add8阻止并选择C / c++代码>导航到C/ c++代码.检查生成的代码,看看函数或运算符替换是否如预期的那样发生。
如果函数或运算符没有按预期替换,则代码生成器使用高优先级(低优先级值)匹配或没有找到匹配。
要分析和排除代码替换错误,请使用跟踪信息代码替换查看器提供了。看到解决代码替换失败的问题.
接下来,部署代码替换库供其他人使用。