主要内容

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

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

使用代码跟踪,您可以:

  • 验证生成的代码是否正常。您可以识别哪些模型元素对应于代码行。您可以跟踪您拥有或未审核的不同元素的代码。

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

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

生成的代码包括支持代码跟踪的资源:万博1manbetx

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

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

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

可追溯的元素

Simulink块和这些状态流支持双向可追溯性万博1manbetx万博1manbetx®元素:

  • 转换

  • 国家过渡表

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

  • 真理表块

  • 图形化功能

  • 万博1manbetx仿真软件的功能

这些statflow元素支持一个方向的可跟踪性:万博1manbetx

  • 事件(代码为模型)

    代码到模型可追溯性适用于显式事件,但不是隐式事件。单击生成的代码中的超链接在生成的代码中突出显示该项目中的项目内容模型探险家的窗格。

  • 连接(模型到代码)

    模型到代码可追溯性适用于至少一个传出过渡的连接。右键单击状态流编辑器中的此类结突出显示与该结的第一个输出转换相对应的代码行。

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

Matlab功能直接插入到Simulink模型中的块也是可跟踪的。万博1manbetx有关更多信息,请参见<一个href="//www.tianjin-qmedu.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.tianjin-qmedu.com/help/ecoder/ug/verify-generated-code-by-using-code-tracing.html" class="intrnllnk">代码生成报告

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

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

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

    代码视图在模型旁边打开。光标放在评论中,并突出显示相应的块。

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

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

代码生成报告

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

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

  3. 如果您的模型包含引用的模型,并且您希望为引用的模型代码生成报告启用可追溯性,请重复每个引用的模型的上一步。

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

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

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

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

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

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

  9. 在左侧导航窗格中,您可以单击回来按钮返回上一个代码生成报告。

可追溯性标签

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

  • 系统是以下之一:

    • 文本

    • Simulink引擎分配的唯一系统编号万博1manbetx

  • block_name源块的名称。

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

/ *以下是此模型的系统层次结构。* * :foo * :foo /外部* :foo /外/内部* /

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

/*获取:'/UnDeadGain1' */ rtb_UnDeadGain1_h = dead_gain_U. txtIn1 * dead_gain_P.UnDeadGain1_Gain;

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

/ *增益:' / gain'* / dead_gain_b.temp0 * =(dead_gain_p.s1_gain_gain);

操作员可追溯性

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

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

支持这些操作符。万博1manbetx

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

不支持这些运营商。万博1manbetx

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

可追溯性的限制

这些限制适用于嵌入式编码器软件生成的报告:

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

    • 单引号()。

    • 星号()导致与模型中的其他名称相对于其他名称的名称伪装歧义。如果在块名称或块名称的末尾,则发生此名称 - 泛滥歧义,则星号前面或遵循斜杠(/)。

    • 角色ÿchar (255))。

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

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

    • 虚拟子系统

    • 蒙版子系统

    • 由于优化而删除了哪些代码的非宽恕子系统

    如果您无法在子系统级别追踪子系统,则可以在子系统中跟踪各个块。

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

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

相关主题