嵌入式软件安全、定时与未来展望
1. 安全标准与定时考量
在各个领域,如航空航天、医疗、铁路、汽车等,都有与嵌入式系统软件开发相关的安全标准。以下是一些重要安全标准的示例:
| 标准 | 安全完整性级别(低 - 高) | 描述 |
| ---- | ---- | ---- |
| IEC 61508 | SIL1 - SIL4 | 电气/电子组件的通用安全标准 |
| IEC 61508 Edition 2 | SIL1 - SIL4 | IEC 61508 的后续版本 |
| ISO 26262 | ASIL A - ASIL D | 汽车软件的安全标准 |
| IEC 62061 | SIL1 - SIL3 | 机器电气控制系统的安全标准 |
| IEC 62304 | Class A - Class C | 医疗设备软件的安全标准 |
| DO 178 - B | Level E - Level A | 航空电子软件的安全标准 |
| DO 178 - C | Level E - Level A | DO 178 - B 的后续版本 |
| CENELEC prEN 50128 | SIL1 - SIL4 | 铁路软件的安全标准 |
这些标准在考虑定时问题时较为表面,主要要求各个软件组件无干扰,包括时间域的干扰。例如,如果一个系统需要每毫秒执行一次安全相关功能,但由于软件错误,另一个功能阻塞了中断并陷入无限循环,就会影响该功能的执行。在实际情况中,影响可能没那么严重,但更难发现。比如,某个功能在极少数情况下执行时间可能显著变长,或者调度受到负面影响,导致数据同步出现问题,最终可能引发系统的关键故障。
对于安全相关软件的定时验证,标准规定测试是必不可少的。根据安全完整性级别,也可能推荐使用静态分析方法。通常,这些推荐会以表格形式呈现,针对不同的安全完整性级别,会指明每种特定技术是强烈推荐、推荐还是不需要。
2. 定时分析技术的选择
最终使用的定时分析技术需要为每个项目单独确定。与认证机构的专家进行早期讨论非常有帮助,这样可以确保达到所需的保证水平既足够又不过度,避免不必要的成本。
以一个涉及代码、调度和通信三个不同层面的罕见问题串联为例,可以使用以下步骤进行分析:
1. 通过静态代码分析确定函数的最坏情况执行时间(WCET)。
2. 将该结果与其他许多函数的 WCET 一起作为静态调度分析的输入。
3. 使用调度模拟来模拟数据交换期间的同步情况。
4. 最后,通过跟踪确保实际系统的行为符合预期。
不过,很少有项目会使用全套的定时分析技术。要找到最佳平衡,需要对标准要求、待保护系统以及定时分析技术有深入了解。
经验表明,架构和调度的简单性对于安全可靠的定时同样重要。“保持简单”虽然简单,但却是至关重要的原则。
3. 定时验证工具
用于验证软件定时的工具本身也是软件,和其他软件一样,这些工具也可能存在错误。这意味着存在一种风险,即工具可能在存在定时问题的情况下仍给出验证通过的结果(误报)。
安全标准并不规定使用特定的产品,但要求对用于验证的每个工具的可靠性进行评估。评估工具需要估计其故障概率并分析故障可能产生的影响,结果就是工具置信水平(TCL)。
和风险评估一样,也可以考虑工具的可控性,例如使用第二种验证方法。在同一次分析中,两种方法同时出现错误的可能性非常小。
经过这样的工具分析后,可能需要对工具进行资格认证。正式的资格认证类似于认证,嵌入式系统根据相应标准进行认证,而参与软件生成的工具(如编译器和代码生成器)以及用于验证的工具则需要进行资格认证。
4. 法律方面
产品责任规定,产品的生产者应对产品带来的任何危险负责。如果产品因故障造成重大损害,如导致多人死亡的事故,产品制造商将需要在法庭上承担责任。如果发现故障原因在于所供应的组件,且产品制造商正确使用了该组件,责任将转移到组件供应商。
制造商在产品或组件开发过程中的谨慎程度对确定处罚有重大影响。在法庭案件中,很难预先精确确定分类标准,这在很大程度上取决于国家、法庭、具体情况等因素。
随着时间的推移,形成的共识是开发应遵循行业技术水平。当一种分析技术或方法在产品开发中多次使用,并公开报道(如在讲座、会议或技术期刊中),就可以认为该技术或方法达到了行业技术水平。在德语国家,在责任方面,开发时应追求“Stand der Technik”(行业技术水平)。
5. 未来展望
5.1 嵌入式系统与软件的发展趋势
在未来几年,软件自动编写并使软件开发工艺变得多余的时刻还很遥远。同时,嵌入式系统在我们生活中的渗透趋势仍在持续加强。不仅嵌入式系统的数量不断增加,其内部软件的重要性也日益凸显。以汽车行业为例,多年来,发动机管理电子控制单元(ECU)是唯一包含软件的组件,但近年来,控制单元的数量持续增加,如今豪华汽车中执行嵌入式软件的微处理器已超过一百个。随着自动驾驶的引入,实现一辆汽车所需的软件数量预计将大幅增加。
5.2 定时与定时分析的重要性
软件的正确执行,尤其是定时方面的正确执行,即可靠的嵌入式软件定时,正发挥着越来越重要的作用。在这个环境中积累知识、技能、工具和基础设施是对未来的一种投资。
5.3 技术创新趋势
- 数据交换改进 :通过 ASAM ARTI 改善定时分析工具之间的数据交换,虽然本身不算技术创新,但将促使更多的定时分析工作得以开展。
- 软件插桩分析增加 :由于硬件跟踪接口的改进和扩展速度跟不上处理器中 CPU 数量的增加以及时钟速度的提升,基于软件插桩的定时分析趋势将继续加强。这样可以在实验室、测试现场、实际产品环境(如车辆)以及最终产品的安全概念中的定时监控等各个场景中使用相同的技术。
- 静态调度分析和模拟的重要性提升 :静态调度分析和调度模拟将发挥越来越重要的作用。对于交付后配置可能发生变化的系统(如空中更新),嵌入式系统本身可以进行一些简单的定时分析。在安装新软件组件之前,系统可以检查其是否会危及系统的定时,如果存在问题,则拒绝更新。必要时,还可以通过移除不再需要的软件组件来为调度腾出空间。
- 功能级并行性的潜力 :目前的代码生成器缺乏对系统配置的了解,如可用 CPU 数量、调度方式、通信和同步方式等。如果开发环境能够将功能模型、系统配置和代码生成集成在一起,将可以生成高效、可靠和安全的软件,同时大幅减少开发工作量。
嵌入式软件定时在未来几年将变得更加重要,具备相关扎实知识和技能的人将更具优势。
graph LR
A[确定函数WCET] --> B[静态调度分析]
B --> C[调度模拟]
C --> D[跟踪验证]
综上所述,嵌入式软件的定时问题在安全、开发和未来发展中都具有重要意义。开发者需要综合考虑安全标准、定时分析技术、工具可靠性以及法律责任等多方面因素,同时关注技术创新趋势,以确保软件的安全可靠运行。
6. 定时在软件中的关键指标
定时在软件尤其是嵌入式软件中,有多个关键指标来衡量其性能和稳定性,以下为你详细介绍:
| 指标 | 含义 |
| ---- | ---- |
| 绝对抖动(J) | 反映软件执行时间在一定范围内的波动情况 |
| 最佳情况执行时间(BCET) | 函数或任务在最理想情况下的执行时间 |
| 最坏情况执行时间(WCET) | 函数或任务在最坏情况下的执行时间 |
| 抖动(JIT) | 执行时间的变化幅度 |
| 周期(PER) | 任务或事件重复执行的时间间隔 |
| 响应时间(RT) | 从事件发生到系统做出响应的时间 |
这些指标相互关联,共同影响着软件的定时性能。例如,抖动过大可能导致响应时间不稳定,而周期的准确性对于实时系统的正常运行至关重要。
7. 调度相关要点
调度在嵌入式软件定时中起着核心作用,以下是调度的一些关键方面:
7.1 调度类型
- 合作式调度 :任务按照预先安排好的顺序依次执行,一个任务执行完毕后才会轮到下一个任务。
- 抢占式调度 :具有较高优先级的任务可以中断正在执行的低优先级任务。
7.2 调度分析与模拟
- 调度分析 :通过对任务的执行时间、优先级等参数进行分析,评估调度的可行性和性能。
- 调度模拟 :使用模拟工具对调度策略进行模拟,观察系统在不同情况下的运行情况,提前发现潜在问题。
7.3 调度流程
graph LR
A[任务到达] --> B{判断优先级}
B -- 高优先级 --> C[抢占当前任务]
B -- 低优先级 --> D[等待执行]
C --> E[执行高优先级任务]
E --> F[任务完成]
D --> G[按顺序执行]
G --> F
8. 缓存与内存相关
缓存和内存的性能对软件的定时也有重要影响:
8.1 缓存机制
- 缓存命中 :当需要的数据在缓存中时,称为缓存命中,此时可以快速获取数据。
- 缓存失效 :数据不在缓存中,需要从内存中读取,会增加访问时间。
8.2 内存优化
- 减少内存访问时间 :通过合理的内存布局和优化算法,减少内存访问的等待时间。
- 内存对齐 :确保数据在内存中的存储位置符合特定的对齐规则,提高访问效率。
8.3 缓存与内存操作步骤
- 分析软件的内存访问模式,确定哪些数据经常被访问。
- 调整缓存的大小和策略,提高缓存命中率。
- 对内存进行优化,如采用内存池技术,减少内存碎片。
9. 安全与风险
安全是嵌入式软件的重要考量因素,与定时密切相关:
9.1 安全标准
不同领域有各自的安全标准,如 ISO 26262 用于汽车软件,IEC 61508 用于电气/电子组件等。这些标准规定了软件在开发、测试和验证过程中的安全要求。
9.2 风险评估
评估软件在定时方面可能面临的风险,如任务执行超时、数据同步失败等。可以通过分析故障发生的概率和影响程度来确定风险等级。
9.3 安全与风险应对流程
graph LR
A[识别定时风险] --> B[评估风险等级]
B --> C{风险是否可接受}
C -- 是 --> D[继续运行]
C -- 否 --> E[采取应对措施]
E --> F[重新评估]
F --> C
10. 总结
嵌入式软件的定时问题涉及多个方面,从关键指标的衡量到调度的优化,从缓存与内存的管理到安全与风险的应对,每个环节都相互影响。开发者需要深入理解这些知识,掌握相关的技术和工具,以确保软件在定时方面的安全可靠。同时,随着技术的不断发展,如功能级并行性的应用、更智能的调度算法等,开发者还需紧跟趋势,不断提升自己的能力,以适应未来嵌入式软件发展的需求。在实际项目中,要综合考虑各种因素,制定合理的开发策略,为嵌入式软件的高质量运行提供保障。
超级会员免费看
69

被折叠的 条评论
为什么被折叠?



