ID:标题 | hisf_0064:对Stateflow进行移位操作®用于改进代码遵从性的数据 | |
---|---|---|
描述 | 为了提高使用Stateflow移位操作生成的代码的符合性,不要执行: | |
一个 | 右移操作大于输入类型的位宽或负值。 |
|
B | 左移操作大于输出类型的位宽或负值。 |
|
请注意 | 如果您遵循此指导方针和其他建模指导方针,您将增加生成符合编码标准的代码的可能性。 |
|
基本原理 | 避免在生成的代码中发生可能违反编码标准的移位操作。 | |
模型顾问检查 | 检查使用移位操作的状态流数据(金宝app仿真软件检查) | |
参考文献 |
|
|
先决条件 | hisl_0060:提高MISRA C:2012兼容性的配置参数 | |
最后的改变 | R2017b |
ID:标题 | hisf_0065:在Stateflow中进行类型强制转换操作,以提高代码遵从性 | |
---|---|---|
描述 | 在使用C动作语言的状态流图表中,使用:= 防止Stateflow将整数和定点计算转换为比输入数据类型更广泛的数据类型的符号。 |
|
请注意 | 如果您遵循此指导方针和其他建模指导方针,您将增加生成符合编码标准的代码的可能性。 |
|
基本原理 | 避免生成的代码中可能违反编码标准的隐式强制转换。 | |
模型顾问检查 | 检查状态流图表中的分配操作(金宝app仿真软件检查) | |
参考文献 |
|
|
先决条件 | hisl_0060:提高MISRA C:2012兼容性的配置参数 | |
最后的改变 | R2017b |
ID:标题 | hisf_0211:防止在状态流图中使用一元操作符,以提高代码遵从性 | |
---|---|---|
描述 | 为了提高生成代码的代码遵从性: | |
一个 | 不要在无符号数据类型上使用一元减运算符。 |
|
请注意 | MATLAB®C操作语言不限制对无符号表达式使用一元减操作符。 |
|
基本原理 | 改进生成代码的代码遵从性。 | |
模型顾问检查 | 检查状态流图表中的一元操作符(金宝app仿真软件检查) | |
参考文献 |
|
|
最后的改变 | R2017b |
ID:标题 | hisf_0213:防止在Stateflow图表中被零除的计算,以提高MISRA C:2012的依从性 | |
---|---|---|
描述 | 为了提高MISRA C:2012中生成的浮点和整数操作代码的符合性,请执行以下操作之一: | |
一个 | 对模型进行静态分析,证明不可能被零除 |
|
B | 通过显式地在Stateflow中建模错误检查,在生成的C代码中提供运行时错误检查 |
|
C | 使用代码替换库(code Replacement Libraries, CRLs)修改代码生成过程,以防止被零除 |
|
D | 对于基于整数的操作,清除配置参数删除防止除法算术异常的代码 |
|
请注意 | 使用运行时错误检查会在生成的代码中引入额外的计算和内存开销。因此,最好使用静态分析工具来限制生成代码中的错误。 中使用设计错误检测功能金宝app®设计验证器™执行静态分析。有关更多信息,请参见静态运行时错误检测(金宝app仿真软件设计验证器).或者,如果您有Simulink设计验证器许可证,则可以使用金宝appModel Advisor检查检测除以零(金宝app仿真软件设计验证器)识别模型中被零除的错误。 如果静态分析确定代码部分可以被零除,那么将运行时保护添加到模型的该部分中(参见示例)。使用修改后的CRL或选择参数删除防止除法算术异常的代码保护除法操作而不是被零除的操作。然而,这个操作确实会带来额外的计算和内存开销。 在模型中只使用其中一个运行时保护(B、C或D)。使用多个选项可能导致冗余保护操作。 |
|
基本原理 | A、B C, D |
改进MISRA C:2012生成代码的符合性 |
模型顾问检查 | 不能通过使用Model Advisor检查来验证对该建模指南的遵守。 | |
参考文献 |
|
|
另请参阅 |
|
|
最后的改变 | R2018a | |
例子 | 运行时除零保护可以用图形函数实现。应该为每种数据类型提供独特的函数。 |