满足IEC61508的嵌入式代码和普通嵌入式代码的区别

1、具有明确的编码风格

合规的代码具有明确的代码风格,且该代码风格需要提交给认证机构。普通嵌入式代码没有此要求

2、具有明确的编码规范,且需要经过静态分析

合规的代码需要按照MISRA-C等编码规范进行编写,最终经过pc-lint plus等静态分析工具的分析,判断代码是否满足规范,代码经过pc-lint分析后会生成分析报告。

3、不可调用外部库

合规代码不可调用未经过认证的库,比如标准库等集成在编译器内部未经认证的库。如果需要使用标准库则需要自行实现,普通嵌入式代码则没有此类限制,可以随意调用外部库

4、不可使用动态内存分配

在代码编写中不可使用“malloc”及“free”等动态内存分配函数,动态内存分配需要相对频繁的操作内存块,如果操作不当可能导致内存泄漏等问题,所以只能使用静态内存分配。

5、需要使用断言进行输入输出参数检查

函数的所有参数都需要用断言进行严格的检查,如发现输入参数错误,需要及时报错。

6、需要调用安全库及外设检查

在代码运行时需要调用检测函数对内核、flash及ram进行检测。如果发现出错,要及时终止运行。mcu的gpio、timer、uart等使用到的外设也需要定时进行检查,如果发现错误,也需要及时报错。

7、有限制的和外部进行通信

安全类产品和外部模块的消息收发协议需要满足iec61784的要求,如果是单纯的消息广播则不需要对协议进行认证。

8、不能使用goto语句

安全类产品的代码中禁止使用goto语句进行跳转,可以保证代码的结构化。

9、具有单入口单出口

安全类产品的函数必须满足单入口单出口的要求,也就是函数只能有一个人口,不能从函数的中间开始执行。函数只能有一个出口,只能有一个return语句,只能在函数的末尾退出函数,不能在函数的中间执行return语句。

10、需要经过单元测试

安全类产品的代码需要经过单元测试,使代码达到100%的覆盖率。需要进行函数边界值的测试,保证函数的稳定可靠。单元测试需要借助vector等公司的工具进行测试,工具本身也需要通过安全认证。

11、需要经过集成测试

安全类产品的代码需要经过集成测试,通过对一定范围内的函数进行集成测试,模拟安全类功能的输入输出情况,对异常情况进行模拟,保证功能的冗余

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值