主要内容

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

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

使用代码跟踪,你可以:

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

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

当您从Simulink生成代码时金宝app®模型,跟踪信息嵌入到生成的代码中,除非明确未指定。可追溯性信息包括用于在生成的源代码和模型之间进行跟踪的链接。你可以通过以下方式查看生成的代码:

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

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

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

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

可追踪的元素

Simulink块和这些statflow支持双向跟踪金宝app金宝app®元素:

  • 转换

  • 状态转换表

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

  • 真值表块

  • 图形化功能

  • 金宝app仿真软件的功能

这些statflow元素支持单向跟踪:金宝app

  • 事件(code-to-model)

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

  • 连接(模型到代码)

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

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

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

生成代码中的可追溯性

代码视图

  1. 打开模型<一个href="//www.tatmou.com/nl/help/ecoder/ug/matlab:rtwdemo_comments" target="_blank">rtwdemo_comments

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

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

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

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

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

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

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

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

代码生成报告

  1. 打开模型<一个href="//www.tatmou.com/nl/help/ecoder/ug/matlab:rtwdemo_comments" target="_blank">rtwdemo_comments

  2. 打开嵌入式编码器应用程序C代码选项卡上,单击设置打开“配置参数”对话框。选择<一个href="//www.tatmou.com/nl/nl/help/rtw/ref/create-code-generation-report.html" class="a">创建代码生成报告如果尚未选中。默认情况下,<一个href="//www.tatmou.com/nl/nl/help/rtw/ref/open-report-automatically.html" class="a">自动打开报表,<一个href="//www.tatmou.com/nl/nl/help/ecoder/ref/code-to-model.html" class="a">Code-to-model,<一个href="//www.tatmou.com/nl/nl/help/ecoder/ref/model-to-code.html" class="a">模型到代码的被选中。

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

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

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

  6. 单击注释或行号超链接。Simu金宝applink Editor显示并突出显示模型中相应的块或块。

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

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

  8. 如果在您的模型中有一个引用模型,在左侧导航窗格中参考模型,按连结至参考模型。引用模型的代码生成报告现在显示在MATLAB web浏览器中。

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

可追溯性标记

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

  • 系统是下列之一:

    • 文本

    • 由Simulink引擎分配的唯一系统号金宝app

  • block_name源块的名称。

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

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

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

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

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

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

运营商可追溯性

生成的代码提供了生成代码中的操作符与Simulink块、statflow元素或MATLAB函数块之间的可追溯性。金宝app

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

支持这些操作符。金宝app

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

不支持这些操作符。金宝app

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

可追溯性的限制

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

  • 在以下条件下,如果块名称包含,则模型到代码的可追溯性将被禁用:

    • 单引号().

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

    • 这个角色ychar (255)).

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

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

    • 虚拟子系统

    • 戴面具的子系统

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

    如果您不能在子系统级别上跟踪子系统,那么您可以跟踪子系统中的各个块。

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

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

相关的话题