描述
开 本: 16开纸 张: 胶版纸包 装: 精装是否套装: 否国际标准书号ISBN: 9787302596530
对于现代汽车,特别是新能源汽车来说,软件已经成为产品核心内容。对其软件所做的时间行为分析已经越来越重要,因为其可以确保软件质量,避免出现功能安全问题。如果这项分析缺失的话,会造成致命的产品安全问题。这是Peter Gliwa先生在嵌入式操作系统及软件时间分析领域内深耕数十年得出的结论。本书同时包含大量项目案例,对于业内众多企业及研究机构有重要意义,其英,德语版已经被众多欧洲汽车业内企业及研究机构作为重要参考。
汽车中软件部分的比重正稳步提升。 软件中的运行时行为-Timing(时间性能测量)这一部分与此同时呈爆发性增长。造成此状况的原因有很多:软件中越来越多的部分与安全性相关,系统本身变得越来越复杂,而且大多数情况下的多核应用比预期的要困难。现代汽车领域中的控制器单元仍旧不能忽略时间性能测量这一主题。时间性能测量问题分析及解决的成本毫无疑问是非常高的,尤其是在项目后期。此外,安全规范如 ISO 26262 规定了涉及嵌入式软件时间性能的要求。这本书介绍了基础内容,以便于用正确的时间性能测量方法去开发软件或者解决严重的时间性能测量问题。它同时着眼于各种各种分析方法,涵盖了开发过程中的所有阶段,并通过大量实际范例以及针对开发者工作的具体建议来为其理论奠定基础。 即使书中大部分实际范例出自汽车行业领域,但其全部内容几乎都可以直接转之应用于其他领域。
第1章 基础知识 1
1.1 实时系统 1
1.2 阶段性的软件开发模型——V-Model 1
1.3 编译过程:从模型到可执行文件 3
1.3.1 基于模型的软件开发和代码生成 3
1.3.2 C 预编译器 3
1.3.3 C 编译器 5
1.3.4 编译器执行的代码优化 6
1.3.5 汇编器 6
1.3.6 链接器 7
1.3.7 定位器 7
1.3.8 链接脚本 8
1.3.9 调试器 10
1.4 总结 12
第2章 处理器基础知识 13
2.1 处理器的构造 13
2.1.1 CISC 和 RISC 14
2.1.2 寄存器 14
2.2 代码执行 15
2.3 存储器寻址及其模式 17
2.3.1 对数据访问重要的寻址模式 18
2.3.2 跳转和调用的寻址模式 20
2.3.3 选择寻址模式 20
2.4 等待状态,突发访问 22
2.5 缓存 23
2.5.1 缓存结构和缓存行 24
2.5.2 组相联缓存及缓存逐出 25
2.6 流水线 27
2.7 中断 28
2.8 陷阱/异常 29
2.9 数据一致性 29
2.10 对比桌面处理器, 嵌入式处理器的特点 31
2.11 总结 32
第3章 操作系统 33
3.1 无操作系统: 无限循环加中断 33
3.1.1 周期中断的实现示例 33
3.1.2 轮询——无中断地实现 34
3.1.3 可扩展性 36
3.2 OSEK/VDX 36
3.2.1 任务 36
3.2.2 中断 39
3.2.3 ErrorHook 39
3.2.4 基本调度策略 39
3.3 多任务: 协作与抢占 41
3.3.1 两种追踪的图示说明(示例 1) 41
3.3.2 堆栈消耗(示例 2) 43
3.3.3 确保数据一致性 45
3.3.4 协作式多任务处理的限制 45
3.3.5 为减少OS_Schedule()调用而可实施的优化 47
3.3.6 总结 47
3.4 POSIX 47
3.4.1 进程 49
3.4.2 线程 49
3.4.3 POSIX 线程状态图 51
3.4.4 调度策略 52
3.5 总结 52
第4章 软件时间理论 53
4.1 时间参数 53
4.1.1 RTOS 调度(OSEK、AUTOSAR CP 等)时间参数 53
4.1.2 与 POSIX相关的时间参数 58
4.2 统计参数 58
4.2.1 小值和值 59
4.2.2 平均值 59
4.2.3 直方图 60
4.2.4 非定期事件的发生模式 60
4.3 CPU负载 61
4.3.1 定义 62
4.3.2 选择观测范围 64
4.3.3 扩增的 CPU 负载 65
4.3.4 使用后台任务时的 CPU 负载 66
4.4 总线负载 67
4.5 逻辑执行时间 67
4.6 总结 68
第5章 软件时间分析方法 69
5.1 概览及在不同层面上的分类 69
5.1.1 通信层级 69
5.1.2 调度层级 70
5.1.3 代码层级 71
5.2 术语定义 72
5.2.1 追踪 72
5.2.2 分析、时间测量和(再次)追踪 72
5.3 静态代码分析 73
5.3.1 基础功能和工作流 73
5.3.2 用例 75
5.3.3 静态代码分析的限制 76
5.3.4 静态代码分析专家访谈 78
5.4 代码仿真 80
5.4.1 功能与工作流 80
5.4.2 用例 81
5.4.3 静态代码仿真的限制 82
5.4.4 与代码仿真领域专家的访谈 83
5.5 运行时间测量 86
5.5.1 基本功能和工作流 86
5.5.2 用例 95
5.5.3 运行时间测量的限制 96
5.6 基于硬件的追踪 97
5.6.1 基本功能和工作流 97
5.6.2 用例 99
5.6.3 基于硬件的追踪的限制 101
5.6.4 基于硬件的追踪专家访谈 102
5.7 基于软件方法的追踪 108
5.7.1 基本功能和工作流 108
5.7.2 用例 115
5.7.3 基于测量的追踪的限制 115
5.7.4 基于测量的追踪领域专家访谈 116
5.8 调度模拟 121
5.8.1 基本功能和工作流 121
5.8.2 用例 124
5.8.3 调度模拟的限制 124
5.8.4 调度模拟专家访谈 125
5.9 静态调度分析 127
5.9.1 基本功能和工作流 128
5.9.2 用例 129
5.9.3 静态调度分析的限制 131
5.9.4 静态调度分析专家访谈 131
5.10 使用进化算法进行优化 135
5.11 时间分析方法在 V-Model中的应用 137
第6章 软件时间问题案例 139
6.1 中断都是哪来的? 139
6.2 OSEK ECC:并非选择 140
6.3 重置17 min后发生偶发崩溃 143
6.4 遗漏及重复的传感器数据 144
6.5 拉着手刹去比赛 149
6.6 实际测量得到的 WCET 比静态代码分析得到的更大 150
6.7 有时候网络管理报文来得太早了 151
6.8 系列项目中无间断的时间分析 152
6.9 时间分析使得车厂节省了1200万欧元 152
6.10 总结 153
第7章 多核及多ECU环境下的软件时间 154
7.1 多核基础知识 154
7.1.1 Amdahl vs.Gustafson——谁是对的? 155
7.1.2 CPU 核心——同构(Homogeneous)、异构(Heterogeneous)
还是锁步(Lock-step)? 155
7.1.3 锁步多核 156
7.1.4 英飞凌 AURIX——同类、异类和锁步 157
7.2 并发执行的多种类型 158
7.2.1 应用程序的并行执行 158
7.2.2 函数的并行执行 159
7.2.3 指令的并行执行 164
7.3 数据一致性,Spinlocks 165
7.3.1 确保数据一致性的理想解决方案 168
7.3.2 确保数据一致性的成本 169
7.4 存储地址克隆 170
7.5 总结 172
第8章 软件运行时间优化 174
8.1 调度层级的运行时间优化 174
8.1.1 防止跨核心通信 174
8.1.2 避免使用 ECC 任务 174
8.1.3 合理使用异构多核处理器 175
8.1.4 避免需要确保数据一致性的机制 175
8.1.5 通过优化偏移实现周期性任务的负载均衡 175
8.1.6 拆分任务 177
8.1.7 将功能迁移到执行频率较低的任务 177
8.2 针对存储器使用的运行时间优化 178
8.2.1 快速存储器的利用 178
8.2.2 数据对齐 180
8.2.3 代码对齐和缓存优化 181
8.3 代码层级的运行时间优化 182
8.3.1 优化频繁调用的小函数 184
8.3.2 优化根函数sqrt 184
8.3.3 AURIX的线性内核 ID 187
8.3.4 计算至达到饱和 190
8.3.5 处理器特定的通用指令 191
8.3.6 编译器优化 192
8.4 运行时间优化总结与指南 199
第9章 开发过程中的方法技巧 202
9.1 与时间相关的各种需求 202
9.1.1 时间需求 202
9.1.2 对于方法和工具的需求 207
9.1.3 通用需求模板 208
9.2 开发期间的协作 209
9.3 软件运行时间概念、调度设计和操作系统配置 210
9.4 软件运行时间调试 210
9.5 运行时间优化 211
9.6 时间验证 211
9.6.1 测试阶段“分析” 212
9.6.2 测试阶段“POI(兴趣点)追踪” 212
9.6.3 测试阶段“情况” 212
9.6.4 测试阶段“凭经验确定空间” 212
9.7 尽早考虑后期的功能 213
9.8 终产品中的时间监测 214
9.9 一个好例子:Vitesco Technologies出品的CoReMa 215
9.10 总结 216
第10章 AUTOSAR 218
10.1 AUTOSAR CP 219
10.1.1 功能架构 219
10.1.2 软件架构、SW-C 定义和 VFB 219
10.1.3 RTE 220
10.1.4 实现、系统配置和 Runnable 221
10.2 AUTOSAR AP 221
10.2.1 功能架构 221
10.2.2 软件架构 AA 221
10.2.3 实现与系统配置 223
10.2.4 部署 224
10.2.5 执行管理和执行客户端 224
10.2.6 确定性执行和确定性客户端 224
10.2.7 POSIX调度 226
10.2.8 AUTOSARAP中的时间 227
10.3 AUTOSAR时间扩展TIMEX 229
10.3.1 目标 229
10.3.2 事件和事件链 229
10.3.3 TIMEX 要求类型 230
10.3.4 AUTOSAR/TIMEX 视角 230
10.4 AUTOSAR/ASAM 运行时间接口 ARTI 231
10.4.1 AUTOSAR ARTI 232
10.4.2 ASAM ARTI 233
10.5 技术报告“时间分析” 233
10.6 总结 234
第11章 功能安全,ISO 26262 235
11.1 基础知识 235
11.1.1 风险 235
11.1.2 SIL——安全完整性等级 235
11.1.3 脱离上下文、在上下文中、经使用验证 236
11.2 安全标准、时间及时间验证 237
11.3 时间安全所需工具 238
11.4 法律方面的考量 239
11.5 总结 240
第12章 前景 241
致谢 242
参考文献 243
??
??
??
在计算机科学这个领域中,嵌入式软件仅占相对较小的一部分。其中,“运行时间分析”主题是该学科中的一个特定方面。那么,“嵌入式软件的时间分析”只是一个仅与少数专家相关的主题吗?
目前,全世界所使用的嵌入式系统多达数十亿个。所有这些设备都运行着嵌入式软件,并且每个系统都有自己的一套时间需求。如果由于软件错误而无法满足这些时间需求,结果可能天差地别。根据产品和具体情况,产生的后果可能让人难以察觉,也可能对用户造成困扰,甚至危及生命。
深入了解嵌入式系统所面临的时间分析挑战,有助于开发更好、更可靠的嵌入式软件。这不仅能提升系统的安全性和可靠性,还可以在整个开发生命周期中节省大量成本。这些并不是口头上说说而已,在本书第6 章中讲述的许多实例就能得到验证。成本节省在开发的各个阶段均可能实现。
? 在嵌入式系统及其软件的设计中,尽早考虑时间问题对提高开发效率具有的决定性作用,并且可以避免从一开始就出现时间问题。
详细介绍在本书的3.3 节、6.2 节、8.1 节和第9 章。
? 如果在应用开发中使用了正确的时间分析技术也可以节省时间和资金。本书第5 章概括地介绍多种不同的技术。每种技术都有其适用的项目开发阶段,并在各自的介绍中描述其工作原理及流程,其中重点介绍了应用和局限性。另外,除了这些描述以外,第5 章还包含了相应领域专家的访谈记录。这使主题更加鲜活,并提供了一定的客观性。如果项目已经出现了严重问题,尤其是在发生了严重时间问题的情况下,在合适的阶段使用相应的时间分析技术将会提供巨大帮助。
? 自动化测试有助于节省成本,这一点不言而喻。但是,现有的自动化测试通常都缺少与时间分析相关的测试,而仅侧重于功能方面。9.6 节以具体措施的形式提供了建议,希望通过合适的方式在自动化测试中用嵌入式软件的时间分析来解决此类问题。
? 如果某个项目出现了CPU 持续或偶发性的过载,则必须采取措施减少负载。这通常发生在项目临近截止日期时,因此需要建立一个小组来应对这种情况。第8章中为此类任务组提供了相关的基础知识和经验。其中,8.4 节作为该章的结尾,可以作为处理问题的入手点。
本书的重点是将理论与实践紧密结合。理论总是要通过实例来说明,并且还有很多具体的技巧可应用于设计、实现、调试和验证阶段中。
本书布局合理,读者按照顺序阅读为轻松。然而,在撰写本书时,作者已尝试为每一章赋予一定程度的独立性,从而使读者在查找内容或选择性阅读时不至于迷失。
如果发现本书中存在错误之处,请不吝建议、批评和提醒,本人将不胜感激,也欢迎直接与本人进行专业讨论。
祝您阅读愉快并能获得一些技术上的见解。
[英] Peter Gliwa (皮特·格利瓦)
[email protected]
德国,维尔海姆(上巴伐利亚),2020 年5 月
本书中涉及的所有品牌名称和商标均为各自合法所有者所拥有,仅用于描述。
Translated and Extended from the German Edition P. Gliwa “Embedded Software Timing”(c) 2020 Springer Fachmedien Wiesbaden GmbH
(c) The Editor(s) (if applicable) and The Author(s), under exclusive license to Springer Nature Switzerland AG 2021
??
??
??
Python语言简介
评论
还没有评论。