汽车中软件部分的比重正稳步提升,软件中的运行时行为-Timing(时间性能测量)这一部分与此同时呈爆发性增长。造成此状况的原因有很多:软件中越来越多的部分与安全性相关,系统本身变得越来越复杂,而且大多数情况下的多核应用比预期的要困难。现代汽车领域中的控制器单元仍旧不能忽略时间性能测量这一主题。时间性能测量问题分析及解决的成本毫无疑问是非常高的,尤其是在项目后期。此外,安全规范如 ISO 26262 规定了涉及嵌入式软件时间性能的要求。
本书介绍了基础内容,以便于用正确的时间性能测量方法去开发软件或者解决严重的时间性能测量问题。它同时着眼于各种各种分析方法,涵盖了开发过程中的所有阶段,并通过大量实际范例以及针对开发者工作的具体建议来为其理论奠定基础。 即使书中大部分实际范例出自汽车行业领域,但其全部内容几乎都可以直接转之应用于其他领域。“嵌入式软件的时间分析”不是一个仅与少数专家相关的主题,深入了解嵌入式系统所面临的时间分析挑战,有助于开发更好、更可靠的嵌入式软件,还可在整个开发生命周期中节省大量成本。欢迎感兴趣的网友趁此活动进一步学习、交流、提升。
如何申请
(1)往下滑到“产品资料”栏,可进一步了解书籍内容,章节设置;
(2)>>点击我要申请,认真填写申请理由、阅读分享计划等,即有机会免费获取书籍。本期活动有1个名额可使用测评券,先用先得。
活动日程
申请时间:5月20日至6月10日
遴选公布:6月13日前,公布全部入围名单
阅读时间:6月20日-8月31日
颁奖时间:活动结束后两周内
阅读要求
(1)收到书籍后,请在EEWorld 汽车电子版块 自拟标题发表阅读心得,活动期间内,至少分享3篇具有实质性内容的心得,进度为至少每15天提交一篇,要求100%原创首发,抄袭会被封杀哦。心得可包含:书籍内容的评价、理解、尝试书中实验过程等;
(2)书友问答接龙互动共成长:每章节设置问答接龙线上互动活动,管理员发帖,书友跟帖,要求第一位跟帖书友发起本章节问题,第二位回答,以此类推,最后一位是章节总结角色,以文字或者思维导图的形式,对本章进行总结,至此一次互动结束。参与者要求至少参与50%的章节书友互动。
活动评奖
评委将对阅读心得质量、阅读计划完成度、互动章节完成度、分享及时性四方面进行评分。综合分=60%阅读心得质量+10%阅读计划完成度+20%互动章节完成度+10%及时性
综合分 | 奖励 |
综合分>=90分 | 保留阅读书籍+20威望+20芯积分 |
综合分>=75分 | 保留阅读书籍+10威望+10芯积分 |
综合分<75分 | 寄回阅读书籍 |
作者
皮特·格利瓦(Peter Gliwa),格利瓦公司CEO 皮特·格利瓦是汽车嵌入式系统领域著名专家,在汽车电子行业的操作系统及时间分析领域有超过二十年的工作经验,他和其领导的GLIWA(格利瓦)公司为多家整车制造商及大型供应商提供过大量相关主题的咨询服务,同时作为AUTOSAR(汽车开放系统架构)联盟开发合作伙伴领导相关项目组的开发工作。其曾在斯图加特专科学院作过微型计算机专业讲师并定期举办行业培训课程。
目录
第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 节作为该章的结尾,可以作为处理问题的入手点。
本书的重点是将理论与实践紧密结合。理论总是要通过实例来说明,并且还有很多具体的技巧可应用于设计、实现、调试和验证阶段中。
本书布局合理,读者按照顺序阅读为轻松。然而,在撰写本书时,作者已尝试为每一章赋予一定程度的独立性,从而使读者在查找内容或选择性阅读时不至于迷失。
赞助厂商
清华大学出版社成立于1980年6月,是教育部主管、清华大学主办的综合性大学出版社。2009年4月由国有独资全民所有制企业改制为有限责任公司。2014年10月成立清华大学出版集团。作为国内领先的综合性教育与专业出版机构,清华社先后荣获 “先进高校出版社”“全国优秀出版社”“全国百佳图书出版单位”“中国版权最具影响力企业”“首届全国教材建设奖全国教材建设先进集体”等荣誉,2007年、2017年分别荣获首届和第四届“中国出版政府奖先进出版单位”,出版的一大批图书和期刊荣获中国出版政府奖、中华优秀出版物奖、全国优秀教材、中国好书等国家级奖励。清华社现年出版图书、音像制品、电子出版物等近3000种,销售规模和综合实力以及在高等教育教材市场、科技图书市场、馆配图书市场占有率均名列前茅。
最新测评
热门测评心得
联系我们
微信号:helloeeworld
关注我们
电子工程世界 电子工程世界福利社