logo资料库

嵌入式软件可靠性设计规范(word版).doc

第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
资料共25页,剩余部分请下载后查看
0、概述
1、定义
1.1、定义
1.2、说明
2、计算机系统设计
2.1、一般要求
2.2、硬件与软件功能的分配原则
2.3、硬件与软件可靠性指标的分配原则
2.4、安全关键功能的人工确认
2.5、安全性内核
2.6、自动记录系统故障
2.7、禁止回避检测出的不安全状态
2.8、保密性设计
2.9、容错设计
2.10、安全关键软件的标识原则
3、硬件设计
3.1、硬件选用
3.2、总线检测
3.3、加电检测
3.4、电源失效的安全措施
3.5、主控计算机失效的安全措施
3.6、反馈回路传感器失效的防护措施
3.7、电磁干扰的防护措施
3.8、维修互锁措施
4、软件需求分析
5、软件危险分析
6、安全关键功能的设计
7、冗余设计
7.1、指令冗余设计
7.2、软件陷阱与软件拦截技术
7.3、软件冗余
8、接口设计
8.1、硬件接口要求
8.2、硬件接口的软件设计
8.3、人机界面设计
8.4、报警设计
8.5、软件接口设计
9、软件健壮性设计
9.1、电源失效防护
9.2、加电检测
9.3、电磁干扰
9.4、系统不稳定
9.5、接口故障
9.6、干扰信号
9.7、错误操作
9.8、监控定时器的设计
9.9、异常保护设计
10、简化设计
10.1、单入和单出
10.2、模块的独立性
10.3、模块的扇入扇出
10.4、模块耦合方式
10.5、模块内聚顺方式
10.6、其他特殊考虑
11、余量设计
11.1、资源分配及余量要求
11.2、时序安排的余量要求
12、数据要求
12.1、数据需求
12.2、属性控制
12.3、数值运算范围控制
12.4、合理性检查
13、防错程序设计
13.1、参数化
13.2、公用数据和公共变量
13.3、标志
13.4、文件
13.5、非授权存取的限制
13.6、无意指令跳转的处理
13.7、程序检测点的设置
13.8、寻址模式的选用
13.9、数据区隔离
13.10、安全关键信息的要求
13.11、信息存储要求
13.12、算法选择要求
14、编程要求
14.1、语言要求
14.2、汇编语言编程限制
14.3、高级语言的编程限制
14.4、圈复杂度指数(McCabe)
14.5、软件单元的规模
14.6、命名要求
14.7、程序格式要求
14.8、程序注释要求与方法
14.8.1、注释的一般要求
14.8.2、模块头注释要求
14.8.3、模块内注释要求
14.8.4、安全关键内容注释要求
14.9程序设计风格
14.9.1、通用类
14.9.2、结构类
14.9.3、说明类
14.9.4、输人输出类
14.9.5、语言类
15、多余物的处理
15.1、文档中未记载特征的清除
15.2、程序多余物的清除
15.3、未使用内存的处理
15.4、覆盖的处理
16、软件更改要求
17、嵌入式软件测试
17.1、需求遗漏或不明确
17.2、配置保存的生效
17.3、缺省配置的影响
17.4、报警和清除
17.5、菜单选项测试
17.6、缺省配置测试
17.7、系统测试注意事项
附录1:推荐的软件安全关键程度分级
附录2:软件开发各阶段的适用准则和要求
嵌入式软件可靠性设计规范 0、概述 ................................................................................................................................. 3 1、定义 ................................................................................................................................. 3 1.1、定义 .......................................................................................................................3 1.2、说明 .......................................................................................................................3 2、计算机系统设计 ...............................................................................................................3 2.1、一般要求 ................................................................................................................3 2.2、硬件与软件功能的分配原则 .................................................................................. 4 2.3、硬件与软件可靠性指标的分配原则 ....................................................................... 4 2.4、安全关键功能的人工确认 ......................................................................................4 2.5、安全性内核 ............................................................................................................4 2.6、自动记录系统故障 .................................................................................................4 2.7、禁止回避检测出的不安全状态 .............................................................................. 5 2.8、保密性设计 ............................................................................................................5 2.9、容错设计 ................................................................................................................5 2.10、安全关键软件的标识原则 ....................................................................................5 3、硬件设计 .......................................................................................................................... 5 3.1、硬件选用 ................................................................................................................5 3.2、总线检测 ................................................................................................................5 3.3、加电检测 ................................................................................................................6 3.4、电源失效的安全措施 ............................................................................................. 6 3.5、主控计算机失效的安全措施 .................................................................................. 6 3.6、反馈回路传感器失效的防护措施 ...........................................................................6 3.7、电磁干扰的防护措施 ............................................................................................. 6 3.8、维修互锁措施 ........................................................................................................ 6 4、软件需求分析 ...................................................................................................................6 5、软件危险分析 ...................................................................................................................7 6、安全关键功能的设计 ........................................................................................................7 7、冗余设计 .......................................................................................................................... 7 7.1、指令冗余设计 ........................................................................................................ 7 7.2、软件陷阱与软件拦截技术 ......................................................................................7 7.3、软件冗余 ................................................................................................................9 8、接口设计 ........................................................................................................................10 8.1、硬件接口要求 ...................................................................................................... 10 8.2、硬件接口的软件设计 ........................................................................................... 10 8.3、人机界面设计 ...................................................................................................... 10 8.4、报警设计 ..............................................................................................................10 8.5、软件接口设计 ...................................................................................................... 11 9、软件健壮性设计 ............................................................................................................. 11 9.1、电源失效防护 ...................................................................................................... 11 9.2、加电检测 ..............................................................................................................11 9.3、电磁干扰 ..............................................................................................................11 9.4、系统不稳定 ..........................................................................................................12
9.5、接口故障 ..............................................................................................................12 9.6、干扰信号 ..............................................................................................................12 9.7、错误操作 ..............................................................................................................12 9.8、监控定时器的设计 ...............................................................................................12 9.9、异常保护设计 ...................................................................................................... 12 10、简化设计 ......................................................................................................................13 10.1、单入和单出 ........................................................................................................13 10.2、模块的独立性 .................................................................................................... 13 10.3、模块的扇入扇出 ................................................................................................ 13 10.4、模块耦合方式 .................................................................................................... 13 10.5、模块内聚顺方式 ................................................................................................ 13 10.6、其他特殊考虑 .................................................................................................... 14 11、余量设计 ...................................................................................................................... 14 11.1、资源分配及余量要求 ......................................................................................... 14 11.2、时序安排的余量要求 ......................................................................................... 14 12、数据要求 ......................................................................................................................14 12.1、数据需求 ............................................................................................................14 12.2、属性控制 ............................................................................................................14 12.3、数值运算范围控制 .............................................................................................15 12.4、合理性检查 ........................................................................................................15 13、防错程序设计 ...............................................................................................................15 13.1、参数化 ............................................................................................................... 15 13.2、公用数据和公共变量 ......................................................................................... 15 13.3、标志 ...................................................................................................................15 13.4、文件 ...................................................................................................................15 13.5、非授权存取的限制 .............................................................................................16 13.6、无意指令跳转的处理 ......................................................................................... 16 13.7、程序检测点的设置 .............................................................................................16 13.8、寻址模式的选用 ................................................................................................ 16 13.9、数据区隔离 ........................................................................................................16 13.10、安全关键信息的要求 ....................................................................................... 16 13.11、信息存储要求 .................................................................................................. 17 13.12、算法选择要求 .................................................................................................. 17 14、编程要求 ......................................................................................................................17 14.1、语言要求 ............................................................................................................17 14.2、汇编语言编程限制 .............................................................................................17 14.3、高级语言的编程限制 ......................................................................................... 17 14.4、圈复杂度指数(McCabe) ............................................................................... 17 14.5、软件单元的规模 ................................................................................................ 18 14.6、命名要求 ............................................................................................................18 14.7、程序格式要求 .................................................................................................... 18 14.8、程序注释要求与方法 ......................................................................................... 18 14.8.1、注释的一般要求 ......................................................................................18 14.8.2、模块头注释要求 ......................................................................................19 1
14.8.3、模块内注释要求 ......................................................................................19 14.8.4、安全关键内容注释要求 ...........................................................................19 14.9 程序设计风格 .......................................................................................................19 14.9.1、通用类 .....................................................................................................19 14.9.2、结构类 .....................................................................................................20 14.9.3、说明类 .....................................................................................................20 14.9.4、输人输出类 ............................................................................................. 21 14.9.5、语言类 .....................................................................................................21 15、多余物的处理 ...............................................................................................................21 15.1、文档中未记载特征的清除 ..................................................................................21 15.2、程序多余物的清除 .............................................................................................21 15.3、未使用内存的处理 .............................................................................................21 15.4、覆盖的处理 ........................................................................................................22 16、软件更改要求 ...............................................................................................................22 17、嵌入式软件测试 ...........................................................................................................22 17.1、需求遗漏或不明确 .............................................................................................22 17.2、配置保存的生效 ................................................................................................ 22 17.3、缺省配置的影响 ................................................................................................ 23 17.4、报警和清除 ........................................................................................................23 17.5、菜单选项测试 .................................................................................................... 23 17.6、缺省配置测试 .................................................................................................... 23 17.7、系统测试注意事项 .............................................................................................23 附录 1:推荐的软件安全关键程度分级 ...............................................................................23 附录 2:软件开发各阶段的适用准则和要求 ....................................................................... 24 2
0、概述 嵌入式软件是电子系统的重要组成部分,它具有不同于硬件系统的可靠性特征和可靠性 设计方法。 随着系统应用时间的推移,系统功能逐步完善,bug 逐步修复,其可靠性不会随时间下 降,相反会随着时间推移而上升。软件可靠性不但与软件存在的差错有关,而且与系统输入 和系统使用有关。 嵌入式软件可靠性应达到的判定标准是判错、防错、纠错、容错。同时,系统工程师应 考虑到为实现判、防、纠、容而需要配套的硬件设计。 1、定义 1.1、定义 a) 扇入:在结构图中,模块的直接上级模块个数。 b) 扇出:在结构图中,模块所属的直接下级模块个数。 c) 安全关键信息:其错误可能导致系统严重危险的信息。 d) 安全关键软件:其错误可能导致系统严重危险的软件。 e) 安全关键功能:其错误可能导致系统严重危险的功能。 f) 圈复杂度:合理的预防错误所需测试的最少路径条数。数量上表现为独立现行路 径条数,用来衡量一个模块判定结构的复杂程度。程序的可能错误和高的圈复杂 度强相关。 1.2、说明 本规范中用到的“须”、“应”等提法均指强行性采用; 本规范中用到的“禁止”、“禁用”等提法均指强制性禁用; 本规范中用到的“推荐”等提法均指建议优选,如果采用非推荐方案,需充分论证和考 虑其负面影响并采取规避风险措施; 2、计算机系统设计 2.1、一般要求 嵌入式软件开发的最大特点是可读性、可视性差,所以软件可靠性设计的过程宜过程 监控和软件测试并重。通过对开发过程的软件工程化管理,可以从细节上发现问题,预防问 题的发生。具体体现在以下几点:  按照公司规模、项目规模,将软件开发过程划分为几个阶段(可根据实际情况处 理),每个阶段编制必要的文档并进行检查、分析和评审,实行配置管理,图形符 3
号、程序构造及表示应符合 GB1526 和 GB13502 的规定;  采用先进、适用的软件开发工具,并确保软件开发工具免受计算机病毒侵害;  在早期开展软件检查和测试,自检、互检、或专互检结合,制定 checklist,并作 实质性过程检查。 2.2、硬件与软件功能的分配原则 对电子器件的参数稳定要求较高的功能,如可能宜考虑用软件实现; 对用硬件实现时成本较高的功能,宜用软件实现; 运算较复杂、逻辑关系较复杂的功能,宜用软件实现; 对反应时间效率要求较高的功能,宜用电路硬件实现; 在权衡由软件实现、还是硬件实现的功能上,可对项目团队中软件工程师和硬件工程 师的相对资深程度进行比较,优选由较资深的一方实现。 2.3、硬件与软件可靠性指标的分配原则 软件可靠性的评价考核推荐用质量指标替代可靠性评价指标,以便直观地建立起软件 设计与软件可靠性之间的联系,且该指标必须配套以可行的评价方法。如: 设计规范符合度不低于 90%(通过抽查几个模块的编程方法,逐项检查),不符合项宜 逐项通过评审组的审查确认,一致通过后方可放行。设计规范需包括如下表各种三方面内容: 软件安装方便、运行正常、可靠性高、兼容性强,退出或中断后 恢复原系统状态 软件运行 软件运 行水平 软件操 作水平 辅助功 能水平 软件性能 各功能正确无误,划分明确合理,响应速度快 软件容错性 软件对错误输入和错误操作的容忍性强 用户指导 附有用户手册,内容完备,表述简明,便于使用 操作使用性 操作界面友好,步骤明确,使用简便 求助与管理 求助功能强,具有一定的管理功能 性价比 教学软件的教学性价比高 开放扩展性 具有内容调整、组合、更新和补充等开放性和可扩展性功能 2.4、安全关键功能的人工确认 在系统控制回路中,安全关键功能的执行,必须经操作人员确认或启动方可执行。 2.5、安全性内核 在安全关键的计算机系统中,应当设计一个称为安全性内核的独立计算机程序,用来监 视系统并防止系统进入不安全状态。当出现潜在不安全的系统状态、或者有可能转移到这种 状态时,它将系统转移到规定的安全状态。 2.6、自动记录系统故障 须有自动记录检测出所有系统故障及系统运行情况的措施。 4
2.7、禁止回避检测出的不安全状态 在系统设计时考虑故障的自动检测,一旦检测出不安全状态,系统应作出正确响应,不 得回避。 2.8、保密性设计 系统设计应能防止越权或意外地存取或修改软件。 2.9、容错设计 对高可靠性要求系统应硬件和软件容错设计并行,不能只考虑硬件容错。 2.10、安全关键软件的标识原则 附录 1 中的 A 级、B 级软件定为安全关键软件,一般包括: a) 故障检测的优先级结构及安全性控制、校正逻辑、处理和响应故障的模块; b) 中断处理程序、中断优先级模式及允许或禁止中断的例行程序; c) 产生对硬件进行自主控制信号的软件; d) 产生直接影响硬件部件运动或启动安全关键功能的信号的软件; e) 其输出是显示安全关键硬件的状态的软件。 3、硬件设计 为实现软件可靠性,与硬件设计有关的技术要求也是必不可少的因素。 3.1、硬件选用 a) 优选可靠性、维修性符合要求的成熟硬件,正确选择和确定供货单位。 b) 统一运行环境,在同一系统内采用优选、系列化的少数几种 MCU 或机型。 c) 优选的 CPU 须具有指令和数据分开的存储器及总线。 d) 元器件须经过检测筛选,并优选有自我纠错能力的元器件。 3.2、总线检测 a) 指令和数据公用存储器及总线的 CPU,要通过测试来确定总线上各功能间必须隔 开的最小时钟数,以确保 CPU 不致于采集到非法信息。 b) 实施周期性的存储和数据总线检测,测试顺序安排应能检测并隔离单点或多点故 障。 5
3.3、加电检测 a) 系统设计中必须加入加电检测过程,确保系统在加电时处于安全状态,并确保安全 关键的电路和元器件受到检测,以验证其能被正确操作。 b) 过压欠压的处理,过压高,过压低(正常),欠压高(正常),欠压低四个门限。如 果我们采样过快,带宽过高可能会引入很大的干扰噪声和误差。 电源跌落,需要快速检测出电源跌落的过程,以便我们能关闭负载,降低单片机的工作 负荷,存储重要的数据。因此我们的采样速度不能过低,过低导致响应过慢,模块的功能等 级变低。 3.4、电源失效的安全措施 在电源失效的情况下,提供一种安全的关闭方法,并使电源的脉动不会产生潜在的危险 状态。 3.5、主控计算机失效的安全措施 系统能检测出主控计算机的失效,并且在失效时能自动进入安全状态。 3.6、反馈回路传感器失效的防护措施 反馈传感器失效时,接口软件不会出现失控的情况。 3.7、电磁干扰的防护措施 EMI 干扰到信号质量时,软件须有对信号质量的判别设计,并能在受扰状态下,系统不 会出现失控的动作; 软件设计要有独立的纠错和容错设计措施。 3.8、维修互锁措施 须提供维修互锁措施,消除对维修人员的危害。互锁措施应确保互锁不会被无意地暂时 取消,且一旦系统恢复到运行状态时,互锁应能恢复。 4、软件需求分析 a) 软件需求分析遵守 GJB 1091 的规定,确保软件需求规格说明的无歧义性、完整 性、可验证性、一致性、可修改性、可追踪性和易使用性; b) 对安全关键软件,列出可能的不期望事件,分析导致这些不期望事件的可能原因, 并提出相应的软件处理要求。 6
c) 对有可靠性指标的软件,在确定了软件的功能性需求之后,应考虑该软件的可靠 性指 d) 标是否能够达到以及是否能够验证,还应与用户密切配合,确定软件使用的功能 剖面,并制定软件可靠性测试计划。 5、软件危险分析 对安全关键软件,在软件开发的各个阶段进行软件风险分析。对发生概率、危害程度做 出分析,对发生概率较高且危害程度较大的事件,需要作出特殊的处理,或者降低发生概率、 或者降低危害程度。 6、安全关键功能的设计 a) 安全关键功能必须至少受控于两个独立的功能。 b) 安全关键的模块同其它模块隔离;安全关键模块放在一起,并对其保护。 c) 安全关键功能须具有强数据类型,不得使用一位的逻辑“0”或“1”来表示“安全”或“危 险”状态;其判定条件不得依赖于全“0”或全“1”的输入。 d) 安全关键的计时功能必须由计算机控制,操作人员不能随意修改。 e) 在启动安全关键功能之前,必须对可测试的安全关键的单元进行实时检测。当检测 到不安全的情况时,软件必须采取措施对其进行处理;如软件无法处理这种情况, 则应保证将控制转换到硬件的安全子系统。 7、冗余设计 7.1、指令冗余设计 处理器指令由操作码和操作数两部分组成。区别操作码和操作数则由取指令的顺序决 定,操作时序由程序计数器 PC 控制,CPU 取指令时先取操作码后取操作数。当 PC 因干 扰出错时,程序会失控跑飞,引起程序混乱失控,严重时会导致程序陷入死循环和误操作。 因此,在由单片机或 DSP 等构建的嵌入式系统中,在关键位置插入一些单字节空指令 NOP 或将有效单字节指令重复,即为指令冗余。对于各种异常情况,可尽快将程序引入正常的工 作状态。具体做法如下: 在对程序流向起决定作用的指令之前插入两条 NOP 指令,以保证弹飞的程序迅速纳入 正常,如汇编语言中的 RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、 JC、JNC、JB、KNB、JBC、CJNE、DJNZ 等。 7.2、软件陷阱与软件拦截技术 在一般系统中未用完的剩余空间,对单片机而言,未用的 ROM 空间数据保持 OFFH; 7
分享到:
收藏