个人使用计划的MISRA-C编码指南?

时间:2017-04-24 12:57:46

标签: c embedded misra

我通常是木工而不是开发人员。我正在学习嵌入式系统的C / C ++,同时试图使我的一些工具自主,以节省数小时的重复工作。

目前,它的乐趣和进展顺利,我花了大约一百个小时编码/学习,已经节省了更多的时间*。

我想继续购买并遵循MISRA编码规则是“强制性的好主意”吗? MISRA包含什么?只有编码规则或一些技巧才能让它更安全?

这些工具可能很危险(毕竟他们切割木材,人体抵抗力差得多......)。

注意:我显然是通过4个步骤进行测试:

  1. 只是使用OSD& SD卡记录器(有一天我会制作任何工具并停止阅读这些工具)。

  2. 我没有插入工具

  3. 我在泡沫上使用软钻/刀具

  4. 我用紧急停止按钮在远距离进行真正的测试。

  5. 此外,我是唯一的员工,没有其他人可以访问我的工作场所。

    *现在我已经将钻头变成了一台3D木头打印机(做了不精确的工作部分),并将“切割板”变成了自动打印机。

    注意2:我不是母语,因此工具的名字可能已关闭。

2 个答案:

答案 0 :(得分:4)

MISRA最初设计用于汽车行业,尽管它在此阶段已经发展得很好。 MISRA指导目标是:

  • 确保安全
  • 为软件带来稳健性和可靠性。
  • 与财产安全发生冲突时,人身安全必须优先。
  • 考虑系统设计中的随机和系统故障。
  • 展示稳健性,而不仅仅是依靠没有失败。
  • 在产品的设计,制造,操作,维修和处置中应用安全考虑因素。

这些文件主要包括基于规则的试用信息,用于试图满足这些目标的代码。 MISRA文件价格多年来有所下降,一些文件可以从MISRA网上购买,只需10英镑+增值税。

然而,作为初学者和业余编码员,我建议首先加强你对C和C ++的了解。虽然在大多数工业领域,遵循相关标准通常是好的,但如果适用的话,文件是在假设读者具有非常扎实的语言基础以及管理全面商业类型的关注和流程的情况下编写的。用它们写的应用程序。如果您的工作室仅供个人使用,并且根据您所在司法辖区的工作场所安全规则,我可以说,对语言,语言工具和硬件有很好的理解,可以让您开始做出如何比起阅读MISRA可以在这样的阶段进行更多的编码。

如上所述,值得重申的是,MISRA不是某种魔杖或具体的方式,可以保证您的代码良好,有效且安全。好的和坏的代码都可以满足标准。在完全掌握你正在做的事情之前跟随MISRA可能与确保工作车间的每根电缆都整齐地固定到位,然后用凿子刺伤自己一样。

答案 1 :(得分:2)

MISRA-C是一套规则,它将强制您从C程序中清除众所周知的问题和定义不明确的行为。它是C语言的“安全子集”,通过针对众所周知的错误的规则禁止各种形式的危险实践,例如依赖于定义不明确的行为或隐式类型转换。 C的优势在于它是一种非常古老的语言,这意味着所有的语言缺陷都是众所周知的。

MISRA-C非常注重静态代码分析,以便在编译时发现错误。这是需要记住的,据我所知,不存在可以检查MISRA-C合规性的开源静态代码分析工具。商业工具往往非常昂贵,并且通常也充满了错误/误报。不过,大多数都很有用。

MISRA-C只专注于C编程,它没有解决CPU或微控制器问题等问题,尽管它确实强制执行某些形式的防御性编程,这是对抗EMI,逃避代码和其他形式的意外程序行为。 (有关C以外的一般提示和技巧的列表,请参阅this。但并非所有这些都必然适用于您的特定计算机。)

为了证明MISRA合规性,您需要创建一个“合规矩阵”,其中显示了如何捕获MISRA-C文档的每个指令/规则:通过编译器消息,同行评审,静态代码分析等。

文档中的大多数规则都很有意义,但有些规则却没有。然而,MISRA-C允许偏离大多数规则,将它们排在以下之一:

  • 强制性。不允许任何偏差。
  • 推荐。如果不遵守规则,必须调用正式的偏离程序。
  • 咨询。人们可以在不做出正式偏离的情况下偏离规则。

通常,通过建立符合所有规则的公司编码标准来创建MISRA-C合规性。实现它的最简单方法是在本文档中记下在公司级别上遵循的规则以及哪些规则被跳过。然后相应地设置静态代码分析过滤器