我想知道在使用嵌入式代码从Simulink模型生成代码后,是否有可能避免MISRA警告10.1、13.2和12.6 (或者是否可以使用其他方法生成代码?)。
例如(生成的代码)
if (A)
{;}
在if(A)语句中存在MISRA冲突。
是否有可能使用嵌入式编码器生成代码,如
if (A !=0)
{;}
发布于 2016-02-08 02:20:42
我很难在不使用布尔类型的情况下生成这种类型的构造if (A),在这种情况下,不会违反规则13.2。
如果没有Boolean类型,我会得到如下结果:
如果(A > 1) { ...}
我使用的是R2015b版本。如果你能分享一个生成这类代码的示例模型,那就更好了。
此外,所有列出的规则(10.1、12.6、13.2)都是推荐的,根据MISRA AC AGC标准( MISRA-C: 2004在自动代码生成上下文中的应用指南),这些规则不是强制性的。
因此,对这些规则的遵守取决于应用程序的关键程度。
即使在最新的MISRA 2012标准中,这些规则已经被重新分类,它们仍然被归类为生成的代码上下文中的建议。
对于生成代码的MISRA遵从性的一般信息,这是一个很好的参考:
http://www.mathworks.com/solutions/automotive/standards/misra-c.html
或
http://www.mathworks.com/solutions/aerospace-defense/standards/misra-c.html
https://stackoverflow.com/questions/21847124
复制相似问题