图书介绍
嵌入式系统软件工程 方法实用技术及应用PDF|Epub|txt|kindle电子书版本网盘下载
![嵌入式系统软件工程 方法实用技术及应用](https://www.shukui.net/cover/77/33471064.jpg)
- (美)RobertOshana,(美)MarkKraeling主编;单波,苏林萍,谢萍等译 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302425311
- 出版时间:2016
- 标注页数:686页
- 文件大小:112MB
- 文件页数:728页
- 主题词:微型计算机-系统设计
PDF下载
下载说明
嵌入式系统软件工程 方法实用技术及应用PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 嵌入式软件工程与实时系统1
1.1 软件工程1
1.2 嵌入式系统5
1.3 实时系统7
1.3.1 实时系统的类型——软实时和硬实时系统8
1.3.2 硬实时系统的例子9
1.3.3 实时事件的特点10
1.3.4 有效执行与执行环境11
1.4 实时系统设计的挑战11
1.4.1 响应时间11
1.4.2 从故障中恢复12
1.4.3 嵌入式系统软件的构建过程13
1.5 分布式和多处理器架构14
1.6 嵌入式系统软件15
1.7 嵌入式系统的硬件抽象层17
1.8 小结20
第2章 嵌入式系统软/硬件协同开发21
2.1 当今嵌入式系统示例21
2.2 HW/SW原型机用户23
2.3 HW/SW原型机设计选项24
2.4 原型设计决策标准25
2.5 选择正确的原型26
2.6 工业设计链27
2.7 更改设计流程的必要28
2.8 不同类型的虚拟原型机28
2.9 虚拟原型的简要历史29
2.10 专有产品的限制30
2.11 什么使得虚拟原型机变快30
2.12 标准化:SystemC TLM-2.0的时代31
2.13 SystemC TLM-2抽象层31
2.14 系统架构虚拟原型机32
2.15 软件虚拟原型机32
2.16 小结——虚拟化的重要性日益增加35
第3章 嵌入式系统的软件建模36
3.1 何时、为何要为嵌入式系统建立模型36
3.2 建模36
3.3 什么是建模语言39
3.4 建模语言举例40
3.5 V图承诺42
3.6 为什么要建立嵌入式系统的模型43
3.7 何时为嵌入式系统建立模型44
3.7.1 任务和安全关键型应用程序44
3.7.2 高度复杂的应用程序和系统44
3.8 操作复杂性47
3.9 缺陷检测时间与成本48
3.10 大型开发团队需要建模48
3.11 建模通常是唯一的选择49
3.12 建模是有利的,但不是说所有模型都是错的吗50
3.13 有了原型机——又该如何52
3.14 结论53
3.15 下一步——试用54
3.15.1 带有直流电动机的闭环控制54
3.15.2 下载套件了解更多原型机设计54
3.15.3 使用NI状态图模块设计应用程序54
3.15.4 设计和模拟电刷式直流电动机H桥电路54
3.15.5 使用开放源代码Modelica模型进行多域物理建模55
参考文献55
第4章 嵌入式系统的软件设计架构与模式56
4.1 架构和设计综述56
4.2 三个层次的设计57
4.3 什么是设计模式58
4.3.1 必须要采用面向对象技术来使用设计模式吗59
4.3.2 一个架构实例60
4.3.3 使用模式62
4.3.4 做权衡决策63
4.4 软件架构的类别和视图64
4.4.1 主要的架构视角64
4.4.2 次要的视角74
4.5 小结74
参考文献74
第5章 实时构件:事件与触发器75
5.1 事件和触发器75
5.2 室温控制单元75
5.3 事件系统76
5.4 事件句柄77
5.5 事件方法78
5.6 事件数据结构78
5.7 可重入性79
5.7.1 禁用和启用中断79
5.7.2 进入临界区和退出临界区80
5.7.3 信号量80
5.7.4 进入/退出临界区的实现80
5.8 事件处理81
5.9 集成81
5.10 触发器82
5.11 闪烁的LED82
5.12 设计思想83
5.13 嘀嗒定时器84
5.14 触发器接口84
5.15 触发器描述符85
5.16 数据分配85
5.17 设置触发器86
5.18 嘀嗒计数87
5.19 确保可重入89
5.20 初始化90
5.21 闪烁90
5.22 蜂鸣器鸣响91
5.23 实时性92
5.24 小结93
第6章 嵌入式软件的硬件接口94
6.1 简介94
6.2 与硬件团队的合作94
6.2.1 主动合作95
6.2.2 团队代表95
6.2.3 注册设计工具95
6.2.4 共同开发96
6.2.5 系统集成97
6.3 硬件设计方面有用的知识97
6.3.1 硬件事件的通知97
6.3.2 向硬件下达任务98
6.3.3 位域对齐98
6.3.4 固定位的位置99
6.3.5 模块版本号99
6.3.6 调试钩子100
6.4 支持多个硬件版本100
6.4.1 编译开关101
6.4.2 构建开关104
6.4.3 运行开关105
6.4.4 自适应开关106
6.5 硬件交互困难107
6.5.1 原子寄存器访问107
6.5.2 同一寄存器中混合的位类型108
6.5.3 边沿与电平中断110
6.6 测试与故障排除110
6.6.1 临时钩子110
6.6.2 永久钩子111
6.7 小结111
第7章 嵌入式软件编程和实现准则112
7.1 简介112
7.1.1 高质量编程的原则112
7.1.2 是什么让嵌入式不同于一般编程114
7.2 启动嵌入式软件项目114
7.2.1 硬件平台输入114
7.2.2 工程文件和组织115
7.2.3 团队编程指南116
7.2.4 语法标准117
7.2.5 源代码中的安全要求118
7.3 变量结构119
7.3.1 变量声明119
7.3.2 数据类型121
7.3.3 定义122
第8章 嵌入式操作系统125
8.1 前台/后台系统125
8.2 实时内核126
8.2.1 RTOS(实时操作系统)127
8.2.2 临界区127
8.2.3 任务管理127
8.2.4 分配任务优先级130
8.2.5 决定堆栈的大小131
8.2.6 空闲任务133
8.3 优先级133
8.4 就绪队列133
8.5 调度点134
8.6 上下文切换135
8.7 中断管理137
8.7.1 处理CPU中断137
8.7.2 非内核感知的中断服务程序139
8.7.3 拥有多种中断优先级的处理器140
8.7.4 所有的中断向量的共同地址140
8.7.5 每个中断向量对应唯一的地址141
8.8 时钟周期(或系统时钟周期)142
8.9 等待队列142
8.10 时间管理142
8.11 资源管理144
8.11.1 资源管理:禁用/启用中断145
8.11.2 资源管理:信号量145
8.11.3 资源管理:优先级反转148
8.11.4 资源管理:互斥信号量149
8.11.5 资源管理:僵局(死锁)151
8.12 同步152
8.12.1 同步:信号量152
8.12.2 同步:信用跟踪152
8.12.3 双方相约153
8.13 消息传递154
8.13.1 消息154
8.13.2 消息队列155
8.13.3 流控制155
8.13.4 客户端和服务器端157
8.14 内存管理157
8.15 小结158
第9章 嵌入式系统设计的软件复用159
9.1 为什么软件复用如此重要159
9.2 什么限制了软件复用161
9.3 各种软件复用162
9.4 通过层实现复用163
9.5 进入到下一个级别164
9.6 引入元件厂165
9.7 工厂硬件配置165
9.8 工厂软件配置166
9.9 工厂对可复用性的作用167
9.10 RTOS不可知论168
9.11 任意扩展性169
9.12 结论169
参考文献170
第10章 嵌入式系统的软件性能工程171
10.1 示例:eNodeB应用程序的延迟时间与吞吐量对比181
10.2 性能模式和反模式187
参考文献191
第11章 嵌入式软件的性能优化192
11.1 代码优化过程192
11.2 使用开发工具192
11.2.1 编译器的优化192
11.2.2 基本的编译器配置192
11.2.3 启用优化193
11.2.4 附加的优化配置194
11.2.5 使用分析器194
11.3 背景——理解嵌入式架构194
11.4 基本的C优化技术194
11.4.1 选择正确的数据类型194
11.4.2 函数的调用规范195
11.4.3 指针和内存访问198
11.4.4 限制和指针别名198
11.4.5 循环199
11.4.6 额外的提示和技巧199
11.5 一般循环转换200
11.5.1 循环展开200
11.5.2 多采样技术201
11.5.3 部分求和202
11.5.4 软件流水线203
11.6 优化技术的实例应用:互相关204
11.6.1 设置205
11.6.2 原始实例205
第12章 嵌入式软件的内存优化211
12.1 简介211
12.2 代码大小的优化211
12.2.1 编译标志位和标志位挖掘211
12.2.2 目标ISA的大小和性能的折中212
12.2.3 为代码大小调整ABI213
12.2.4 买者自负:编译器优化正交码的大小216
12.3 内存布局优化217
12.3.1 内存优化简介218
12.3.2 重点优化218
12.3.3 向量化和动态代码:计算比率218
12.3.4 C语言指针别名220
12.4 数据结构、数据结构的数组及其添加220
12.5 内存性能的循环优化221
12.5.1 数据对齐的连锁效应221
12.5.2 选择数据类型的益处222
第13章 嵌入式软件的功耗优化223
13.1 简介223
13.2 理解功耗223
13.2.1 功耗的基本概念223
13.2.2 静态与动态功率消耗224
13.2.3 最大功率、平均功率、最坏情况功率和典型功率224
13.3 测量功耗225
13.3.1 使用电流表测量功率225
13.3.2 使用霍尔传感器芯片测量功率226
13.3.3 VRMs(电压调整模块的电源芯片)226
13.3.4 静态功率测量226
13.3.5 动态功率测量227
13.3.6 分析应用的功率消耗227
13.4 最小化功耗228
13.4.1 硬件支持229
13.4.2 时钟控制和电压控制231
13.4.3 低功耗示例232
13.5 优化数据流235
13.5.1 减少存储器访问的功率消耗235
13.5.2 DDR简介236
13.5.3 优化DDR数据流功耗237
13.5.4 通过时序优化功率238
13.5.5 通过交替方式优化238
13.5.6 优化存储器的软件数据组织238
13.5.7 优化通用DDR配置239
13.5.8 优化DDR burst访问239
13.6 SRAM和高速缓存数据流的功率优化239
13.6.1 SRAM(所有存储器)与代码大小239
13.6.2 SRAM功率消耗和并行处理240
13.6.3 数据转换与功率消耗240
13.6.4 高速缓存的使用与SoC存储器布局241
13.6.5 局部性说明241
13.6.6 集合关联说明241
13.6.7 高速缓存布局243
13.6.8 回写高速缓存与直写式高速缓存243
13.6.9 高速缓存一致性功能243
13.6.10 编译器优化高速缓存244
13.7 外设/通信使用244
13.7.1 数据DMA与CPU245
13.7.2 协处理器246
13.7.3 系统总线配置246
13.7.4 外设速度等级和总线宽度246
13.7.5 外设到内核的通信247
13.8 算法247
13.8.1 编译器优化级别247
13.8.2 指令打包248
13.8.3 探讨循环展开248
13.8.4 软件流水处理248
13.8.5 禁止递归250
13.8.6 降低精度251
13.8.7 低功率代码序列和数据模式251
13.9 小结251
第14章 嵌入式系统中的用户界面设计253
14.1 用户界面设计分析阶段255
14.1.1 初步迭代设计256
14.1.2 第二个原型的开发(高保真工具绘制模型)256
14.1.3 基本的应用案例257
14.1.4 用户分析方案257
14.1.5 层次任务分析257
14.1.6 设计克服用户认识、感知及学习时的局限性的途径258
14.1.7 错误信息258
14.2 虚拟窗口258
14.3 使用实体关系图的数据模型259
14.4 使用CREDO试验矩阵来分析虚拟窗口260
14.5 启发式评估260
14.6 格式塔261
14.7 应用模型—视图—控制器体系结构设计用户界面262
14.7.1 MVC软件体系架构263
14.7.2 关于MVC软件体系结构的问题及展望263
14.7.3 使用MVC的解决方案263
14.8 对安全性要求苛刻的用户界面264
14.8.1 更加安全的HMI设计过程264
14.8.2 人机界面设计安全手册265
参考文献267
第15章 嵌入式软件质量、集成和测试技术268
15.1 什么是软件测试268
15.1.1 为什么要测试软件268
15.1.2 多少测试就足够了268
15.1.3 应该何时进行测试269
15.1.4 谁来做决策269
15.2 可用的技术269
15.2.1 静态和动态分析270
15.2.2 需求追踪272
15.2.3 静态分析——遵循编码标准275
15.2.4 基本结与基本圈复杂度——案例研究277
15.2.5 理解动态分析280
15.2.6 继承高完整性的系统280
15.2.7 定义单元、模块和集成测试281
15.2.8 定义结构化覆盖分析282
15.2.9 结合单元测试和系统测试来实现代码覆盖283
15.2.10 通过回归测试保持功能286
15.2.11 单元测试和由测试驱动的开发286
15.2.12 自动生成测试用例287
15.3 设置标准288
15.3.1 标准的术语288
15.3.2 公认的流程标准的演变288
15.3.3 自由选择适当的标准292
15.3.4 建立内部的流程标准292
15.3.5 建立内部编码规范集的公共基础293
15.3.6 处理现有的代码库293
15.3.7 获得自定义软件开发的内部编码标准——案例研究293
15.4 处理异常296
15.4.1 处理自动生成的代码296
15.4.2 处理继承的代码297
15.4.3 通过目标代码验证跟踪需求300
15.5 实施测试解决方案的环境307
15.5.1 实用主义的考虑307
15.5.2 考虑备选方案307
15.6 小结309
第16章 嵌入式系统的软件开发工具310
16.1 调试工具简介310
16.2 GDB调试311
16.2.1 GDB调试器的配置311
16.2.2 启动GDB312
16.2.3 编译应用程序313
16.2.4 调试应用程序314
16.2.5 检查数据315
16.2.6 使用断点316
16.2.7 步进316
16.2.8 更改程序316
16.2.9 分析内核转储317
16.3 调试代理设计317
16.3.1 使用案例318
16.3.2 调试代理简介321
16.3.3 启动应用程序321
16.3.4 上下文切换322
16.3.5 位置独立的可执行文件323
16.3.6 来自应用程序的调试事件325
16.3.7 多核327
16.3.8 启动调试代理327
16.4 使用JTAG调试328
16.4.1 使用JTAG的好处328
16.4.2 使用JTAG启动主板329
16.4.3 与调试代理的比较329
16.4.4 GDB和JTAG330
16.5 使用Eclipse和GDB的调试工具331
16.5.1 使用GDB调试Linux应用程序331
16.5.2 Linux内核的KGDB调试332
16.6 检测代码333
16.7 分析工具336
16.7.1 strace336
16.7.2 mtrace337
16.7.3 Valgrind338
16.8 硬件功能339
16.8.1 硬件断点340
16.8.2 硬件监视点340
16.9 调试提示和技巧340
第17章 嵌入式系统的多核软件开发342
17.1 分析和高层设计342
17.1.1 分析342
17.1.2 高层次设计348
17.1.3 小结353
17.2 实现和低层次设计353
17.2.1 基于线程的实现354
17.2.2 互斥、锁、嵌套锁357
17.2.3 粒度359
17.2.4 实现任务并行359
17.2.5 消息传递实现364
17.2.6 使用混合方法369
参考文献370
第18章 安全关键软件的开发371
18.1 引言371
18.2 有哪些安全需求371
18.3 项目规划策略372
18.4 故障、失效、危害和风险分析375
18.4.1 故障、错误和失效375
18.4.2 可用性和可靠性375
18.4.3 故障处理376
18.4.4 危害分析376
18.4.5 风险分析378
18.5 安全关键的架构378
18.6 软件实施策略380
参考文献388
第19章 知识产权389
19.1 背景389
19.2 软件属于你吗390
19.2.1 获得软件390
19.2.2 版权保护390
19.2.3 获得版权391
19.3 专利392
19.3.1 什么是专利392
19.3.2 为什么会有专利393
19.3.3 决定为哪些部分申请专利394
19.3.4 申请专利394
19.3.5 专利里都有什么395
19.3.6 专利授权397
19.4 问题398
19.4.1 开源软件398
19.4.2 授权和出售软件398
19.4.3 收购399
19.4.4 发现侵权399
19.4.5 避免版权侵权400
19.4.6 避免专利侵权401
第20章 管理嵌入式软件开发402
20.1 能力成熟度模型集成403
20.2 OSI模型406
20.3 软件开发408
20.3.1 V模型408
20.3.2 瀑布模型411
20.3.3 敏捷模型412
20.4 组织412
20.5 项目纲领414
20.6 利益相关者和核心团队415
20.7 产品生命周期管理417
20.8 组合管理418
20.9 项目管理生命周期419
20.10 项目生命周期425
20.11 解决问题434
20.12 沟通434
20.13 缩写,符号,首字母缩略词436
20.14 版权确认437
参考文献437
第21章 嵌入式系统的敏捷开发438
21.1 引言438
21.2 嵌入式系统有什么特殊之处439
21.3 嵌入式系统的敏捷项目规划442
21.3.1 项目展望443
21.3.2 初始安全性/可靠性风险评估445
21.3.3 初始项目风险评估445
21.3.4 估算446
21.3.5 进度安排447
21.4 嵌入式软件项目管理448
21.4.1 站立(会议)448
21.4.2 性能指标448
24.4.3 迭代回溯(共同的阶段)449
21.5 嵌入式敏捷开发实践450
21.6 敏捷规模因素454
21.7 敏捷方法能帮助你遵守标准吗455
21.8 小结457
参考文献458
第22章 嵌入式软件在汽车领域中的应用460
22.1 发展历史460
22.1.1 汽车电子:1911—2000460
22.1.2 电子内容增长的驱动力461
22.1.3 引发的嵌入式软件增长464
22.1.4 汽车编程语言464
22.1.5 小结465
22.2 汽车的各部分及其区别465
22.2.1 车身465
22.2.2 底盘和安全466
22.2.3 辅助驾驶467
22.2.4 动力总成和变速器467
22.2.5 信息娱乐和远程信息处理468
22.2.6 汽车子部分总结469
22.3 汽车质量469
22.3.1 基于墨菲定律制定计划470
22.3.2 容错通信470
22.3.3 容错软件470
22.3.4 零缺陷软件471
22.3.5 风险管理和故障模式471
22.3.6 失效模式和影响分析472
22.4 开发和测试474
22.4.1 子系统的互操作性474
22.4.2 软件规范474
22.4.3 软件体系结构474
22.4.4 建模475
22.4.5 自动编码与驱动程序476
22.4.6 基准测试476
22.4.7 跟踪和调试477
22.4.8 最后阶段的测试478
22.4.9 校验479
22.4.10 维护/在产品生命周期内支持479
22.5 汽车诊断479
22.5.1 故障指示灯480
22.5.2 数据记录器480
22.5.3 第二代车载诊断481
22.6 汽车标准481
22.6.1 汽车工业软件可靠性协会481
22.6.2 汽车开放系统体系结构481
22.6.3 汽车电子委员会484
22.7 汽车安全485
22.7.1 ISO 26262标准485
22.7.2 汽车安全完整性等级485
22.8 汽车防盗486
22.8.1 过去这意味着:汽车警报器等486
22.8.2 现在这意味着:黑客行为486
22.8.3 未来这将意味着:假冒486
22.9 汽车市场不久的未来487
22.9.1 性能487
22.9.2 多核的出现487
22.9.3 车载终端488
22.9.4 自动汽车488
22.10 小结489
第23章 I/O及存储设备编程490
23.1 I/O设备与I/O控制器490
23.1.1 I/O设备的分类490
23.1.2 I/O控制器491
23.1.3 内存映射与DMA492
23.1.4 闪存、SD/SDHC与硬盘驱动器494
23.1.5 网络附加存储496
23.2 I/O编程496
23.2.1 I/O控制模式496
23.2.2 I/O软件目标500
23.2.3 I/O软件层500
23.2.4 案例研究:Linux设备驱动程序502
23.3 存储编程506
23.3.1 I/O用于块设备506
23.3.2 闪存设备编程509
23.3.3 SATA设备驱动程序516
23.4 存储系统性能改善517
23.4.1 案例研究1:SDHC上的性能优化517
23.4.2 案例研究2:NAS上的性能优化519
23.5 小结524
参考文献525
第24章 网络应用的嵌入式软件526
24.1 引言526
24.2 网络设备的系统结构526
24.3 网络多核SoC528
24.3.1 核心529
24.3.2 数据包引擎的硬件(PEH)块529
24.4 网络编程模型531
24.5 数据包处理软件的结构533
24.5.1 数据层面的基础设施(DP红外线)533
24.5.2 转发引擎的结构534
24.5.3 数据包处理应用的要求534
24.6 网络应用编程技术535
24.6.1 网络应用程序员可以使用的多核性能技术535
24.6.2 查找流上下文时避免使用锁535
24.6.3 避免引用计数541
24.6.4 安全引用机制542
24.6.5 流并行543
24.6.6 减少与更新统计数据相关的缓存冲突546
24.6.7 统计数据加速548
24.7 网络应用程序员常用的性能技术549
24.8 嵌入式网络设备的Linux操作系统550
24.9 小结551
第25章 嵌入式Linux操作系统552
25.1 简介552
25.1.1 选择Linux进行嵌入式系统开发的原因552
25.1.2 Linux发行版552
25.1.3 适用于Linux的嵌入式平台553
25.1.4 许可555
25.2 嵌入式Linux入门559
25.2.1 内存管理单元559
25.2.2 启动载入器559
25.2.3 引导装载程序559
25.2.4 内核560
25.2.5 应用程序574
25.3 在参考板上运行Linux577
25.3.1 参考平台577
25.3.2 从BeagleBone入手577
附录A C语言编码标准:源代码的发展581
A.1 适用范围581
A.2 定义582
A.3 规则与约定582
A.3.1 显示格式582
A.3.2 命名588
A.3.3 执行语句限制592
A.3.4 语言结构与特征592
A.4 复杂性608
A.5 问题构建608
A.6 源和include文件布局608
A.7 特性610
A.8 标准缩写611
A.9 建议的模块名612
A.10 源代码模板613
A.11 标准的包含文件模板614
A.12 portable.h包含文件模板615
A.13 函数模板616
附录B C++在嵌入式软件、系统与平台方面的使用617
B.1 C++对于嵌入式相对廉价的特性617
B.2 C++对于嵌入式稍微昂贵的特性618
B.3 C++对于嵌入式昂贵的特性620
案例研究1 软件性能工程622
CS1.1 项目简介和说明622
CS1.2 初始性能评估与信息要求623
CS1.3 开发初始评估624
CS1.4 跟踪报告指标625
CS1.5 减少测量误差628
CS1.6 经验教训与总结630
参考文献631
案例研究2 用户界面设计:警务指挥与控制系统632
CS2.1 案例简介632
CS2.2 警务指挥与控制系统633
CS2.2.1 警务指挥与控制系统的说明和概念模型633
CS2.2.2 系统数据收集方法634
CS2.2.3 系统用例图和用例场景635
CS2.3 重要用例636
CS2.4 场景637
CS2.4.1 警务指挥和控制的用户界面场景(完美场景)637
CS2.4.2 不完美的场景638
CS2.4.3 警务指挥和控制系统的典型用户场景638
CS2.5 层次任务分析639
CS2.6 警务指挥和控制系统的主要交互方式641
CS2.7 克服用户认知、感知和学习限制的设计方法642
CS2.8 克服用户局限性的外部认知方法643
CS2.9 警务指挥和控制系统的报错信息和警告644
CS2.10 数据模型(实体关系图)与警务指挥和控制系统中的虚拟操作系统645
CS2.11 识别警务指挥和控制系统用户界面设计中的完全形态649
CS2.12 数据显示技术651
CS2.13 第一原型的易用性测试651
CS2.14 二次迭代——低保真原型653
CS2.14.1 为低保真原型第二次迭代所做的易用性测试和缺陷矫正655
CS2.14.2 低保真原型的最终版658
CS2.14.3 支持从新手到专家的过渡659
CS2.15 高保真原型659
CS2.16 快速开始向导661
案例研究3 转化为多核662
CS3.1 典型应用软件简介662
CS3.2 软件系统分区663
CS3.2.1 控制层面软件迁移663
CS3.2.2 数据层面软件迁移664
CS3.3 数据包的并行处理664
CS3.4 混合方法(并行加流水线)666
CS3.5 与控制层面分区的数据通信668
CS3.6 管理代理668
CS3.7 Rx/Tx驱动器669
案例研究4 嵌入式系统质量和衡量计划的软件工程670
CS4.1 开发方法671
CS4.2 度量收集674
CS4.3 小结686