如何快速跟踪自动生成代码的MISRA合规性

代码生成极大地简化了MISRA遵从过程。除了确保安全性和可靠性之外,编码标准(如MISRA)的主要目标是可读性、可维护性和可移植性。由于模型处于开发过程的核心,并且可以以一致的方式从模型中为不同的平台生成代码,因此它简化了可移植性和可维护性部分。

因此,在代码生成上下文中有一个较小的规则子集,例如MISRA AC AGC或作为新MISRA C:2012编码规则的一部分。为了生成符合MISRA的代码,您需要确保不违反某些建模模式,并适当地配置代码生成选项。

您可以查看有关生成的信息MISRA兼容的代码与嵌入式编码器®.同样,你也可以了解使用dSPACE®TargetLink

但是在大多数现实世界的应用程序中,您最终会遇到某些违反,您需要通过偏差过程来解决,正如MISRA所建议的那样。其中一些可能是设计决策的结果。

您可以手动或作为构建系统的一部分对生成的代码运行分析。然后,您可以通过在代码中添加注释或将它们与结果单独保存来解决任何违规问题。您可以使用Polyspace工具执行相同的任务,但如果有更有效的方法呢?如果您必须重新生成代码,那么在重复审查100个违规项时可能会浪费多少工程小时?

与基于模型的设计工具集成的好处

这种集成的主要好处是使偏离过程更加有效。通过在模型级别添加理由,您可以避免每次生成代码时的返工,无论是在更新之后还是针对不同的目标平台。您可以继续维护您的模型作为设计的中心,并且这些理由会自动传播到Polyspace®分析;这是由于集成了自动编码器,如Embedded Coder和TargetLink。

左移操作违反了MISRA,但却是高效代码的设计选择。此外,它没有副作用,并被证明是安全的。它可以追溯到可以注释的增益块。
左移操作违反了MISRA,但却是高效代码的设计选择。此外,它没有副作用,并被证明是安全的。它可以追溯到可以注释的增益块。

在上面的示例中,为了提高效率,可以选择使用按位移位操作而不是乘法来生成代码。下面,您可以看到Embedded Coder提供的启用或禁用这些设置的选项。Embedded Coder进一步提供了代码生成顾问来指导流程,以提高效率或符合MISRA。

代码生成选项,用于配置上面示例中讨论的shift操作的使用。
代码生成选项,用于配置上面示例中讨论的shift操作的使用。

此外,Polyspace还自动配置代码生成上下文中适用的规则子集。例如,在MISRA C:2012的情况下,如果您正在生成代码,则某些规则将被重新分类,而Polyspace MISRA检查器在从代码生成环境启动时导入此信息。

从代码生成环境导入的设置示例。
从代码生成环境导入的设置示例。

事实上,您可以将Polyspace的执行自动化,作为代码生成之后的后处理步骤,以便在将代码组件签入源代码管理系统之前评估它是否符合MISRA。例如,您可以选择可以在本地分析和寻址的单个单元规则子集。回溯到模型的可追溯性可以帮助您在模型中直接解决这些违规问题。最后但并非最不重要的是,您可以生成详细的MISRA报告来记录遵从程度。

有关使用Polyspace工具遵从MISRA的更多信息,请参阅以下链接:

Baidu
map