嵌入式软件可靠性设计规范 checklist
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式软件可靠性设计规范汇总
43.高级报警显示:红色,1.4Hz~ 2.8Hz,信占比率20%~60%开
44.中级报警显示:黄色,0.4Hz~0.8Hz,信占比率20%~60%开
45.低级报警显示:蓝绿色或者黄色,常开,信占比率100%
46.
高优先级和中优先级的报警上、下限设置值,一旦超出可能引起较严重后果的非合理报警数值区域时,均需加单独的对话弹出框予以提醒操作者
47.
默认的报警预置不允许修改,并提供让用户能恢复到出厂默认报警设置的操作途径
48.做报警日志记录,为以后的故障分析、维修检查或商业纠纷提供依据
与硬件接口的软件49.
数据传输接口的硬件性能限制了数据传输速率的提高,在确定波特率前,要确认硬件所能承受的最高传输率,光耦、485、232、CAN、传输线上有防护
器件(TVS或压敏电阻)的端口
50.硬件端口读进来的数据必须加值域范围的判断
51.硬件端口读取数据,必须加可控时间或次数的有限次限制
52.A/D的位数比前端放大电路的精度要求略高即可,并通过数学计算验证
53.
对运动部件的控制,正向运动突然转向反向运动时,必须控制先正向减速到0,然后再反向加速的控制方式
54.
运动部件停机后、再快速启动的工作控制方式是不允许的。须停机、开机、delay延时、再启动执行机构,以确保执行机构先释放原来运动状态的惯性,然后再从静态下启动
55.
运动部件都有过渡过程特性,软件驱动时的上升沿和下降沿的过渡特性会
直接影响到硬件的安全和执行效果
56.
板卡启动时,先initMCU、然后Delay、然后initIO,以确保各芯片的上电
电源都已经稳定下来再启动工作
57.
对采集自有可能受到干扰的模拟端口输入的数字量数据,一定要加上、下
限、Δ/Δt、规律性干扰的滤波措施三个方面的容错性机制
58.
对数字端口传输数据可以连续传输两遍,以防范随机性偶发干扰,实时性要求较高的,可以连续传三遍,2:1判定
59.
模块之间的数据通信联络,用周期性读取的方式、或请求-应答的方式传送
数据,一旦超出周期性时间要求,或未应答,则判定硬件失效,需有软件的
配套措施。如对接口芯片复位、报警提示、调用默认安全数据临时顶替…
60.
定时刷屏,定时刷Register,防止干扰导致的屏幕花屏、register数据丢失或篡改
61.
若系统内部既有干扰源,又有敏感电路部分,对这两部分软件控制操作之间加delay。如电机或继电器启动或停止时,采用motor_on–delay-AD_start
62.对MCU之外的存储操作,最好加存储后检查,并有成功提示
63.输入信号要做处理:按键、电源等做防抖处理及范围限制
64.1/2以上的机时MCU不必工作时,用睡眠设置抗扰
代码65.
程序代码模块要按照功能分级,基本功能和可能导致安全问题的模块为高
级、用户能感知到但不属于高级功能部分的功能为中级、其他为低级;高中级程序的编制人员、测试、审核、设计更改均须给予特别的重视和资源倾斜
66.控制类函数,单一函数内只能有单一功能和单一的受控对象
67.
代码中,一个语句中,只能用于完成单一的功能,禁用复合语句,对复合型语句用分解的办法化简成多个简单小语句
68.
函数调用时,形参是容易出错的地方,函数编程时,形参注释的字体、颜色、大小较突出为佳;且在函数内部,形参仅做数据传递,不参与运算,在函数内单独定义局部变量,接收形参数据后,用内部变量进行运算
69.
程序中不出现常数(局部循环性常数不在此列),常数用宏定义方式;调试
中才能确定的调节参数常数,宜通过“工程师校准界面”中补偿参数的方式预留用户设置接口,以补偿因环境条件或配套设备参数变化引起的参数变化
量;而非写死在程序中
70.
全局变量慎用,不得不用时,要专门组织项目组讨论会,集体确定是否有必要;设计时用统一的操作函数对其进行操作。
71.
计算中用到的所有数据必须做值域范围的有效性判断,如读取EEPROM中的
数据、调用函数的返回值、运算的中间值、IO口的数据、寄存器的数据…72.
系统架构按照控制层和应用层二分法合理分层;控制层的模块划分以受控对象唯一为判定标准、应用层以操作动作唯一为判定标准
73.相同的控制对象在程序中只出现一次,相同的信息只出现一次
74.变量和函数要有统一命名规范
75.
功能模块的形参个数越少越好、数据类型越简单越好,以保证低耦合;最好控制在3个以内
76.确定模块间的耦合方式为哪一种,如果处于非优选的耦合方式,要分析是否可能按照较优先推荐的耦合方式进行耦合。排序优选顺序:直接数据耦合-间接数据耦合-控制耦合-外部数据耦合-公共数据耦合
77.
设计更改时,接口必须向前兼容;设计更改审核需作为重点检查项,尤其注意对硬件的读写访问协议
78.以安全性内核的架构形式进行主体架构设计,并将以下5类重要模块打包进安全性内核中,加强管理(测试、设计更改、评审时特殊关注):a故障检测的优先级结构及安全性控制或校正逻辑、处理和响应故障的模块;
b中断处理程序、中断优先级模式及允许或禁止中断的例行程序
c产生对硬件进行自主控制信号的软件
d产生直接影响硬件部件运动或启动安全关键功能的信号的软件
e其输出是显示安全关键硬件的状态的软件。
79.
禁止使用空间不受控(如循环到Δ<ε,再停止连续步进递增存储)、时间不受控(如循环到Δ<ε,再跳出循环)的语句
变量/存储80.
变量名称里加入数据类型和作用域的信息,使隐含信息显性化,避免可读性差和数据类型强制转换的问题
81.
重要数据备份需采用异地备份方式,异地存储的介质、面对的应力不是同一类应力,避免单一事故造成的数据丢失
82.
重要数据之前之后预留较大的空闲存储区,避免被之前数据覆盖;比如占2字节的变量分配4bytes
83.
禁止使用一位、00H、FFH、互补、在二进制码中仅差1-2位的弱数据类型来表示状态含义