vivado hls的应用(题外话之安全关键系统设计)

张开发
2026/4/4 13:39:53 15 分钟阅读
vivado hls的应用(题外话之安全关键系统设计)
【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】就软件本身来说医疗软件、航空软件、轨交软件、汽车软件这些可以看成是严格程度一样的软件。这些软件很多时候就跑在mcu上面并不跑linux甚至很多时候就运行rtos或者是while1代码那么这些软件和我们通常看到的消费软件有什么区别呢1、mcu等级高这些场景下的芯片运行环境恶劣所以首先得选择等级高的mcu。比如说一般mcu分成消费级、工业级和车规级。对于医疗类软件建议最好选择高等级的车规级mcu来处理。2、软件运行流程简洁很多时候为了减轻mcu的负担会在mcu旁边集成一个fpga。这样fpga处理其他外设mcu专心处理业务。并且mcu处理的中断很多时候仅仅有一个时钟中断流程非常清晰。3、while1中断这种软件一般就是把timer切分成几个中断比如6ms或者是8ms各个中断相当于不同的状态比如取数、检查、执行、输出等等。下次又是这样一个状态。不紧急的事情就可以放到while1里面来完成。4、while1、中断所有的数据要做互斥访问主要是为了防止出现访问共同数据的情况这个时候就要做关中断处理。5、禁止使用malloc大部分这类安全关键软件内存都是有限的所有的数据也都是提前分配好的所以禁止使用malloc分配内存。6、禁止递归递归的深度是不确定的所以一般是不允许用递归函数的。7、禁止使用第三方库很多时候安全关键软件是不允许使用第三方库甚至mcu厂家的库、keil的库也都是不允许的。类似于memcpy、memset、strcpy都是自己写的。8、代码和生成的bin严格一致一般mcu生成的文件就是hex形式或者是elf形式这些文件都是通过.c、.h、.asm、makefile、linkfile交叉编译生成的。但是elf有很多冗余信息这种情况下就需要把elf转成bin文件实现代码和bin文件的严格一致性。9、其他需要注意的c代码规范0编译器自身告警全部打开禁止出现告警1代码一定要通过最严格的静态检查工具2禁止编译器对代码编译优化3禁止使用goto4代码实现和需求必须强绑定5严格控制需求来源最不稳定的因素其实还是需求变化本身6实时监控堆栈有没有越界7全局数据段在link阶段分开重要数据定期检查代码越界8代码命名规范、合理9所有函数的入参、出参必须做检查a严格控制全局变量的数量b严格检查浮点数;c添加主备同步系统等等。10控制不确定性安全关键软件的本身就是简单、务实、高效减少不确定性。只有做到了这一点才能称之为安全关键软件。

更多文章