【问题标题】:Avoiding MISRA warnings, generating automated code from embedded coder避免 MISRA 警告,从嵌入式编码器生成自动化代码
【发布时间】:2014-02-18 07:40:47
【问题描述】:

我想知道在使用嵌入式代码从 Simulink 模型生成代码后是否可以避免 MISRA 警告 10.1、13.2 和 12.6(或者是否可以通过其他方式生成代码?)。

例如(生成的代码)

if (A)
{;}

在 if(A) 语句中存在 MISRA 违规。

是否可以使用嵌入式编码器生成代码

if (A !=0)
{;}

【问题讨论】:

  • 您应该只从该代码中获得 13.2 的警告。如果您的工具抱怨其他任何事情,它就坏了。
  • 是的,这是真的,我想知道是否可以避免该警告。那就是配置嵌入式编码器以生成没有警告的代码
  • 我假设“A”是布尔类型?您不能告诉/配置您的分析器该类型是布尔型吗?

标签: c matlab simulink misra


【解决方案1】:

如果 (A) 不使用布尔类型,我很难生成这种类型的构造,在这种情况下不违反规则 13.2。

如果没有布尔类型,我会得到以下信息:

如果 (A > 1) { ...}

我使用的是 R2015b 版本。如果您可以分享一个生成此类代码的示例模型,那就太好了。

此外,根据 MISRA AC AGC 标准(MISRA-C 应用指南:2004 在自动代码生成的上下文中),所有列出的规则(10.1、12.6、13.2)都是推荐的,而不是强制性的。

因此,遵守这些规则取决于您的应用程序的重要性。

即使在这些规则已被重新分类的最新 MISRA 2012 标准中,它们在生成代码的上下文中仍被归类为建议。

有关生成代码的 MISRA 合规性的一般信息,这是一个很好的参考:

http://www.mathworks.com/solutions/automotive/standards/misra-c.html

http://www.mathworks.com/solutions/aerospace-defense/standards/misra-c.html

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多