0

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

例如(生成的代码)

if (A)
{;}

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

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

if (A !=0)
{;}
4

1 回答 1

0

如果 (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

于 2016-02-07T18:20:41.857 回答