主要内容

使用代码跟踪验证生成的代码

代码跟踪使用超链接在生成的代码行和模型中相应的元素之间进行导航。要查找代码行及其对应的元素,您还可以右键单击模型中的一个或多个元素。这种双向导航是双向可追溯性。

使用代码跟踪,您可以:

  • 验证生成的代码是否如您所期望的那样。您可以识别哪些模型元素对应于一行代码。您可以跟踪来自您已经审阅过或未审阅过的不同元素的代码。

  • 验证生成的代码是否符合设计要求。您可以将需求链接到模型元素,并使用代码跟踪来验证为模型元素生成的代码是否满足分配的需求。

当您从Simulink生成代码时®模型中,可跟踪性信息嵌入到生成的代码中,除非明确指定。可跟踪性信息包括用于在生成的源代码和模型之间跟踪的链接。您可以通过以下任一方法查看生成的代码:

生成的代码包括支持代码跟踪的资源:

  • 代码元素超链接(当您将光标放在代码上时,用下划线表示),以跟踪生成代码中的变量或类型到头文件中的它们的声明或定义。

  • 代码注释中的标记,用于标识生成代码行的模型中的元素。

  • 行号超链接,链接到生成代码行的模型组件。

可追踪的元素

对Simulink块和这些状态流支持双向跟踪®元素:

  • 转换

  • 状态转换表

  • MATLAB函数。从MATLAB函数调用的外部代码不支持可跟踪性。

  • 真值表块

  • 图形化功能

  • 仿真软件的功能

支持这些statflow元素的单向可跟踪性:

  • 事件(code-to-model)

    代码到模型的可跟踪性适用于显式事件,但不适用于隐式事件。在生成的代码中单击显式事件的超链接将突出显示该项目内容“模型资源管理器”的窗格。

  • 连接(模型到代码)

    模型到代码的可追溯性适用于至少有一个传出转换的连接。在Stateflow Editor中右键单击这样的结,将突出显示与该结的第一个出站转换对应的代码行。

有关更多信息,请参见<一个href="//www.ru-cchi.com/help/ecoder/ug/trace-stateflow-elements-in-generated-code.html" class="a">跟踪生成代码中的状态流元素

MATLAB函数您直接插入到Simulink模型中的块也是可跟踪的。有关更多信息,请参见<一个href="//www.ru-cchi.com/help/ecoder/ug/using-traceability-in-matlab-function-blocks.html" class="a">在MATLAB函数块中使用可跟踪性

生成代码中的可追溯性

代码视图

  1. 打开模型<一个href="matlab:rtwdemo_comments" target="_blank">rtwdemo_comments

  2. 打开嵌入式编码器®建立模型。在C代码选项卡上,单击构建

    HTML代码生成报告默认打开。要使用该报告,请参见<一个href="//www.ru-cchi.com/help/ecoder/ug/verify-generated-code-by-using-code-tracing.html" class="intrnllnk">代码生成报告

  3. 在code透视图的code视图中查看生成的代码。

  4. 通过使用Code视图顶部的下拉列表在生成的源文件之间切换。

  5. 源代码包含可追溯性信息,如超链接注释、行号、变量和操作符。将光标放在注释或行号超链接上或单击它。Simulink编辑器突出显示模型中相应的块或块。

    在模型旁边打开了代码视图。光标放在注释上,相应的块突出显示。

  6. 要突出显示模型中某个块的生成代码,请选择该块。为代码块生成的代码在code视图中突出显示。

  7. 要为引用模型打开生成的代码,请打开引用模型并在code视图中查看生成的代码。

代码生成报告

  1. 打开模型<一个href="matlab:rtwdemo_comments" target="_blank">rtwdemo_comments

  2. 打开嵌入式编码器应用程序C代码选项卡上,单击设置打开“配置参数”对话框。选择<一个href="//www.ru-cchi.com/help/rtw/ref/createcodegenerationreport.html" class="a">创建代码生成报告如果它还没有被选中。默认情况下,<一个href="//www.ru-cchi.com/help/rtw/ref/openreportautomatically.html" class="a">自动打开报告,<一个href="//www.ru-cchi.com/help/ecoder/ref/codetomodel.html" class="a">Code-to-model,<一个href="//www.ru-cchi.com/help/ecoder/ref/modeltocode.html" class="a">模型到代码的被选中。

  3. 如果您的模型包含被引用的模型,并且您希望为被引用模型的代码生成报告启用可跟踪性,那么对每个被引用的模型重复前面的步骤。

  4. 构建的模型。在C代码选项卡上,单击构建.构建过程在MATLAB web浏览器中打开代码生成报告。

  5. 在左侧导航窗格中,选择一个源代码文件。右边窗格中的源代码和行号包含到模型中块的超链接。

  6. 单击注释或行号超链接。Simulink编辑器显示并突出显示模型中相应的块或块。

    包含model.c文件的代码生成报告窗口被打开。鼠标光标放在包含到模型中相应块的超链接的注释上。

  7. 要突出显示模型中块生成的代码,右键单击块并选择C / c++代码>导航到C/ c++代码.然后,在HTML代码生成报告中突出显示为块生成的代码。要为所选的多个块突出显示生成的代码,请按住转变键,选择多个块,然后右键单击要选择的任何一个块C / c++代码>导航到C/ c++代码.然后,在HTML代码生成报告中突出显示为块生成的代码。

  8. 如果您的模型中有一个引用模型,在左侧导航窗格中,在参考模型,单击指向引用模型的链接。引用模型的代码生成报告现在显示在MATLAB web浏览器中。

  9. 在左侧导航区中,可以单击回来按钮返回到以前的代码生成报告。

可追溯性标记

可跟踪性标记出现在生成的相应代码行的上面的注释中。标签的格式为<系统>/block_name

  • 系统是以下之一:

    • 文本

    • 由Simulink引擎分配的唯一系统编号

  • block_name源块的名称。

代码生成器在生成的头文件的注释部分记录模型的标记模型.h.例如,这个注释出现在一个模型的头文件中,喷火,它有一个子系统以及一个嵌套的子系统内心的

/*这是这个模型的系统层次结构。* * : foo * : foo/Outer * : foo/Outer/Inner */

这段代码在生成的代码行上面显示了一个标记注释。源模型根级别的Gain块生成以下代码:

/*增益:'/UnDeadGain1' */ rtb_UnDeadGain1_h = dead_gain_U。In1 * dead_gain_P.UnDeadGain1_Gain;

这段代码在生成的代码行上面显示了一个标记注释。在低于源模型根级别的子系统中,一个增益块生成以下代码:

/*增益:'/增益' */ dead_gain_B. 'temp0 * = (dead_gain_P.s1_Gain_Gain);

运营商可追溯性

生成的代码提供了生成代码中的操作符与Simulink块、Stateflow元素或MATLAB函数块之间的可跟踪性。

要通过使用操作符可追溯性来验证生成的代码,在生成的代码中,单击操作符超链接以突出显示模型中的源块。

支持这些操作符。

符类型 运营商
算术 +-/
+ =-=* =/ =% =
++--(前缀和后缀)
逻辑 & &||
关系 = =! =<>< => =
|>><<
& =^ =| =< < => > =
有条件的 ?:

不支持这些操作符。

符类型 操作符的例子
赋值运算符
和指针操作符的成员 数组下标:一个[b]
和指针解引用的地址:*一个
成员:a.ba - b >
其他运营商 函数调用中的括号:foo (a, b)
逗号:一个b
范围解析:b::
演员:类型(一)
新[]
删除删除[]

可追溯性的限制

这些限制适用于Embedded Coder软件生成的报告:

  • 在以下情况下,如果块名称包含:

    • 单引号().

    • 星号(),这会导致相对于模型中的其他名称产生名称混乱的歧义。如果在块名称中或在块名称的末尾,斜杠前面或后面有星号(/).

    • 这个角色ychar (255)).

  • 如果块名称包含换行符(\ n),为块路径超链接生成的代码注释将换行符替换为空格,以提高可读性。

  • 你不能跟踪代表这些子系统类型的块到生成的代码:

    • 虚拟子系统

    • 戴面具的子系统

    • 非虚拟子系统的代码由于优化而被删除

    如果不能在子系统级别跟踪子系统,则可以跟踪子系统中的单个块。

  • 如果您在一个与用于生成代码的平台不同的平台上打开一个模型,您就不能使用模型到代码和代码到模型的可跟踪性。

  • 中生成的文件无法使用内联可跟踪性shared_utils文件夹中。

相关的话题

Baidu
map