避免MISRA警告,从嵌入式编码器生成自动代码

时间:2014-02-18 07:40:47

标签: c matlab simulink misra

我想知道在使用嵌入式代码从Simulink模型生成代码后是否可以避免MISRA警告10.1,13.2和12.6(或者是否可以生成具有解决方法的代码?)。

例如(生成的代码)

if (A)
{;}

如果(A)语句存在MISRA违规。

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

if (A !=0)
{;}

1 个答案:

答案 0 :(得分:0)

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

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

if(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