主要内容

块使用

HISL_0020:不推荐用于MISRA C:2012合规性的块

ID:标题 HISL_0020:不推荐用于MISRA C:2012合规性的块
描述

改善MISRA C:2012年生成的代码的遵守:

一种

仅使用支持代码生成的块,如Simulink金宝app中所记录的金宝app®阻止支持表。金宝app

B. 请勿在Simulink块支持表中使用列为“不推荐用于生产代码”的块。金宝app金宝app
C

不使用查找表使用立方样条插值或外推方法的块。特定块是:

D. 不要使用不推荐使用查找表块。已弃用的查找表块是抬头lookup2d.
E. 不使用S函数建设者模型或子系统中的块。
F 不使用来自工作区模型或子系统中的块。
G

不要在模型或子系统中使用这些字符串块:

笔记

如果遵循此和其他建模指南,可以消除不适合C / C ++生产代码生成的模型构造,同时增加生成符合Misra C:2012标准的代码的可能性。

使用阻止支持表金宝app块查看块支持表。金宝app块支持表中的脚注(4)的块被分类为“不推荐用于生产代码”。金宝app

理由 A,B,C,D,E,F,G 提高质量和MISRA C:2012年生成的代码的遵守情况。
模型顾问检查

对于A,B,C,D,E,F和G:检查不推荐用于Misra C:2012的块(金宝appSimulink检查)

对于A和B:检查不推荐用于C / C ++生产代码部署的块(金宝appSimulink检查)

参考
  • DO-331,MB.6.3.2.b部分'低级要求是准确的,一致的
    DO-331,MB.6.3.2.E'低级要求符合标准'
    DO-331,MB.6.3.4.D部分源代码符合标准

  • IEC 61508-3,表A.3(3) - 语言子集

  • IEC 62304,5.5.3 - 软件单元验收标准

  • ISO 26262-6,表1(1B) - 使用语言子集

  • EN 50128,表A.4(11) - 语言子集

  • Misra C:2012

最后改变了 R2018B.

HISL_0101:避免不变的比较操作,以改善MISRA C:2012遵从性

ID:标题 HISL_0101:避免不变的比较操作,以改善MISRA C:2012遵从性
描述

要改进Misra C:2012生成代码的符合,请避免使用不变结果进行比较操作。比较操作由以下块执行:

  • 如果

  • 逻辑

  • 关系运营商

  • 转变

  • 切换案例

  • 比较常数

笔记

您可以使用设计错误检测功能金宝appSimulink Design Verifier™执行分析。有关更多信息,请参阅死亡逻辑检测(金宝appSimulink Design Verifier)。如果您有Simulink设计金宝app验证程序许可证,则可以使用Model Advisor Check检测死亡逻辑(金宝appSimulink Design Verifier)

理由 改善Misra C:2012年生成的代码的遵守情况。
模型顾问检查 无法使用模型顾问检查验证对该建模指南的遵守。
参考
  • Misra C:2012,第14.3条

  • Misra C:2012,第2.1条

最后改变了 R2018A
例子

简单或复合比较操作中可以发生不变的比较。在复合比较操作中,当完全计算不变时,各个组件可以是可变的。

简单的: 一种uint8.总是大于或等于0。

简单的: 一种uint8.不能超过256

化合物:比较操作是互斥的

州流程®

HISL_0102:LOOP控制变量的数据类型,以改善MISRA C:2012合规性

ID:标题 HISL_0102:LOOP控制变量的数据类型,以改善MISRA C:2012合规性
描述

要改进Misra C:2012生成代码的符合,请使用用作循环控制计数器变量的变量的整数数据类型:

理由 改善Misra C:2012年生成的代码的遵守情况。
模型顾问检查 检查Loop控制变量的数据类型(金宝appSimulink检查)
参考
  • ISO 26262-6,表1(1C) - 强制打字的执行

  • MISRA C:2012,第14.1条

最后改变了 R2018A