嵌入式软件设计 第2版 pdf下载
选择版本
内容简介
本篇主要提供嵌入式软件设计 第2版电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
重点讨论复杂嵌入式系统的软件分析设计问题。首先本书从系统的角度出发,介绍在系统分析设计中的系统思想,以及嵌入式系统的软硬件协同设计方法。然后,针对嵌入式软件开发,按照软件开发的过程介绍嵌入式软件需求分析、系统设计和详细设计。书中全面介绍了嵌入式软件设计可能涉及的各种问题及解决方法,如BSP、可靠性、资源管理、界面等的设计以及开发环境选择等。本书力图结合嵌入式系统的特点,将软件工程领域成熟的分析设计方法引入到嵌入式软件的分析设计中。由于嵌入式软件设计领域现有的研究成果较少,因而本书希望向读者传授一种能够全面考虑问题,尽可能利用各个学科已有的设计思想解决问题的思维方式。
前言
第1章 嵌入式系统的基础知识1
1.1 嵌入式系统概述1
1.1.1 嵌入式系统的组成2
1.1.2 嵌入式系统的特点4
1.1.3 嵌入式系统的分类5
1.1.4 学习嵌入式系统应具备的基础知识6
1.2 嵌入式系统硬件基础知识7
1.2.1 输入/输出接口7
1.2.2 时钟振荡电路和时钟单元8
1.2.3 存储器8
1.2.4 中断控制器9
1.2.5 嵌入式微处理器10
1.3 嵌入式系统总线13
1.3.1 片级总线13
1.3.2 板级总线19
1.3.3 系统级总线22
1.3.4 实例:UART串口通信开发25
1.4 分布式嵌入式系统33
1.4.1 分布式嵌入式系统结构33
1.4.2 嵌入式系统广域网络的无线接入方式34
1.4.3 分布式工业控制嵌入式系统结构35
1.4.4 无线传感器网络技术40
1.4.5 边缘计算43
第2章 嵌入式系统软硬件协同设计46
2.1 系统思想46
2.1.1 系统的定义及组成47
2.1.2 重要的系统概念48
2.2 系统工程思想49
2.2.1 系统分析49
2.2.2 系统设计50
2.2.3 系统评价52
2.2.4 工程系统建模52
2.2.5 系统生存周期建模与优化53
2.3 系统需求定义54
2.3.1 嵌入式系统问题定义55
2.3.2 需求定义的概念57
2.3.3 联合应用设计58
2.3.4 嵌入式系统需求定义中常见的问题58
2.4 软硬件协同设计60
2.4.1 软硬件分开设计60
2.4.2 软硬件协同设计模型62
2.4.3 软硬件协同的嵌入式系统分析与设计63
2.4.4 软硬件任务划分与软硬件接口设计66
2.4.5 仿真验证69
2.4.6 集成调试与综合实现69
第3章 实时软件分析设计方法72
3.1 实时软件分析设计概述72
3.1.1 实时系统的性能要求73
3.1.2 实时系统的设计要素73
3.1.3 嵌入式实时软件系统的生存周期74
3.2 结构化需求分析建模75
3.2.1 数据流分析76
3.2.2 控制流分析80
3.2.3 状态迁移动态模型82
3.2.4 实例83
3.3 DARTS系统设计85
3.3.1 划分任务86
3.3.2 定义任务接口88
3.3.3 人员进出房间系统设计实例89
3.4 简单嵌入式软件架构设计93
3.4.1 单线程系统93
3.4.2 事件驱动系统95
3.5 任务设计98
3.5.1 任务设计概述98
3.5.2 人员进出房间系统任务设计实例99
3.6 模块设计103
3.6.1 模块设计概述103
3.6.2 人员进出房间系统模块设计实例104
3.7 任务与系统集成104
3.8 实时软件分析设计方法—CODARTS104
第4章 复杂嵌入式软件分析设计106
4.1 面向对象需求分析106
4.1.1 面向对象需求定义106
4.1.2 面向对象需求分析建模113
4.1.3 面向对象需求规格说明书122
4.2 确定系统设计目标124
4.3 复杂嵌入式软件架构设计127
4.3.1 系统分解127
4.3.2 子系统到软硬件的映射130
4.3.3 开发环境和已有组件的选择131
4.3.4 并发134
4.3.5 持续数据管理136
4.3.6 访问控制策略136
4.3.7 全局控制流机制136
4.3.8 边界条件的处理137
4.4 人机交互设计137
4.5 预期变化139
4.5.1 设计模式概述140
4.5.2 适配器设计模式141
4.5.3 中断设计模式143
4.5.4 设计模式的应用146
4.6 嵌入式软件设计中应注意的问题148
第5章 嵌入式操作系统与移植149
5.1 嵌入式操作系统的特点149
5.2 嵌入式操作系统的分类150
5.3 几种代表性的嵌入式操作系统151
5.4 常见的嵌入式操作系统结构154
5.4.1 单块结构154
5.4.2 层次结构154
5.4.3 客户/服务器结构(微内核结构)155
5.5 FreeRTOS移植156
5.5.1 FreeRTOS简介156
5.5.2 FreeRTOS源码目录结构157
5.5.3 FreeRTOS移植实例158
第6章 板级支持包与设备驱动161
6.1 BSP技术概述161
6.1.1 什么是BSP161
6.1.2 BSP的作用与功能162
6.1.3 常见的BSP实现方式和开发方法162
6.1.4 主流嵌入式操作系统及其BSP技术164
6.2 嵌入式系统的硬件初始化技术167
6.2.1 嵌入式系统的硬件初始化167
6.2.2 BSP与PC中BIOS硬件初始化的比较168
6.3 嵌入式系统的引导技术169
6.3.1 Boot Loader概述169
6.3.2 嵌入式Linux的Boot Loader设计思想170
6.4 嵌入式系统的设备驱动程序171
6.4.1 驱动程序的重要性171
6.4.2 机制与策略的问题172
6.4.3 设备驱动的分层管理173
6.4.4 设备类型和设备号173
6.4.5 模块化编程174
6.4.6 设备文件接口175
6.4.7 字符驱动程序编写实例175
6.5 实例:STM32设备驱动程序179
6.5.1 时钟系统179
6.5.2 GPIO180
6.5.3 中断182
6.5.4 定时器186
6.5.5 ADC189
第7章 嵌入式数据库192
7.1 嵌入式数据库概述192
7.1.1 嵌入式数据库的特点192
7.1.2 嵌入式数据库的体系结构193
7.2 嵌入式数据库的分类195
7.3 数据库应用设计196
7.4 基于SQLite的嵌入式软件持续数据管理 198
7.4.1 SQLite简介198
7.4.2 SQLite应用201
7.4.3 SQLite开发环境移植207
第8章 嵌入式软件图形用户界面设计211
8.1 人机交互界面设计概述211
8.1.1 人机交互技术211
8.1.2 用户界面设计原则212
8.1.3 界面设计活动212
8.1.4 界面评价213
8.2 图形用户界面概述213
8.2.1 图形用户界面的基本特征214
8.2.2 图形用户界面的结构模型214
8.2.3 图形用户界面的实现215
8.3 图形用户界面与嵌入式系统216
8.3.1 嵌入式图形用户界面的特点216
8.3.2 嵌入式系统的图形用户界面开发方案216
8.3.3 嵌入式图形用户界面的体系结构层次217
8.3.4 嵌入式图形用户界面主要技术分析219
8.4 使用Qt/Embedded实现图形化界面设计222
8.4.1 Qt/Embedded的架构222
8.4.2 搭建Qt/Embedded开发环境223
8.4.3 编写Qt/Embedded程序225
8.5 C语言图形界面编程227
8.5.1 帧缓冲区227
8.5.2 Framebuffer227
8.5.3 Framebuffer核心函数229
8.5.4 Framebuffer编程230
第9章 嵌入式软件可靠性设计232
9.1 可靠性概述232
9.2 可靠性涉及的性能指标233
9.3 嵌入式系统的可靠性设计234
9.3.1 嵌入式系统硬件可靠性设计235
9.3.2 常用元器件的可靠性分析236
9.3.3 提高嵌入式系统可靠性的具体措施237
9.4 嵌入式软件的可靠性设计238
9.4.1 软件可靠性与硬件可靠性的区别238
9.4.2 影响软件可靠性的因素 239
9.4.3 提高软件可靠性的方法和技术239
9.4.4 软件产品可靠性的评估242
9.4.5 嵌入式软件的可靠性设计243
9.5 可靠性的管理245
第10章 资源管理247
10.1 功耗247
10.1.1 功耗简介247
10.1.2 基于硬件的低功耗设计249
10.1.3 基于软件的低功耗设计251
10.1.4 嵌入式低功耗的软硬件协同设计254
10.2 电源254
10.2.1 电源基础知识254
10.2.2 电源管理技术255
10.2.3 常用的节电方法258
10.3 内存管理259
10.3.1 内存管理概述259
10.3.2 基本内存管理方案262
10.3.3 常见实时系统的内存管理模式263
10.3.4 内存泄漏268
10.3.5 内存保护269
第11章 嵌入式软件开发环境270
11.1 嵌入式软件开发环境概述270
11.2 嵌入式软件调试方法概述272
11.2.1 驻留监控软件调试方法272
11.2.2 基于JTAG方式的调试代理273
11.2.3 指令集模拟器273
11.2.4 在线仿真器 273
11.2.5 ARM中基于JTAG的调试系统 274
11.3 Linux 嵌入式系统开发环境275
11.3.1 嵌入式Linux概述275
11.3.2 嵌入式Linux开发环境架构276
11.3.3 Linux开发工具278
11.3.4 实例:建立嵌入式Linux-ARM开发环境285
11.3.5 实例:实现“Hello World”程序286
11.4 FreeRTOS嵌入式系统开发环境287
参考文献293
工业软件是我国新时期发展战略中的重点攻关方向之一。嵌入式软件是工业软件的核心分支。嵌入式软件是面向应用的,工业控制软件、5G通信设备软件、自动驾驶控制软件、航天飞行器控制软件等都是嵌入式软件。随着技术的发展,各个应用领域的需求不断扩展,嵌入式软件的规模越来越大、复杂性越来越高、对性能的要求越来越高。因此,嵌入式软件开发需要更专业的软件设计,以保证在技术与需求快速变化的情况下,软件满足稳定性、可靠性、扩展性、复用性等非功能性要求。这就要求嵌入式软件设计人员不仅要掌握具体的开发技术,更要掌握系统化的嵌入式软件设计方法。<br/>2007年,我们编写了《嵌入式软件设计》第1版,中国科学院与中国工程院两院院士王越教授为这本书作了序,同年这本书还被评为北京市精品教材。十多年来,虽然技术在不断发展,但是嵌入式软件设计的方法论相对稳定,这本教材从撰写之初就将重点放在基础理论与方法论上,因此一直没有修订。<br/>这次修订在结构上做了很大的调整,系统、完整地介绍实时软件与复杂嵌入式软件的分析、建模方法和软件设计方法,并分别以开源实时操作系统FreeRTOS、嵌入式Linux作为实时软件与复杂嵌入式软件的系统软件平台介绍相关软件开发实例。除了第9章、第10章沿用上一版第11章、第12章的内容并删除了上一版第15章之外,其他章节的内容都做了较大的调整。<br/>本书第1章介绍嵌入式系统的基础知识,对上一版内容的调整主要有三个方面。<br/>1)将“嵌入式系统软件基础知识”拆分并调整,移到其他章节中。<br/>2)将嵌入式系统总线按照片级总线、板级总线、系统级总线进行分类和详细介绍,并增加了基于Arduino的串口总线实例。选择Arduino的串口总线作为实例,是因为Arduino的封装性非常好,学生不需要对硬件有深入的了解,可以将所有注意力都集中在对串口总线的理解与应用设计上。<br/>3)将上一版中第13章调整后移到第1章,重点介绍工业应用中分布式嵌入式系统的架构。<br/>第2章介绍嵌入式系统的软硬件协同设计。嵌入式系统软硬件协同设计是系统工程思想在嵌入式系统设计中的具体体现,因此,我们合并了上一版第2章和第3章的内容并对其做了相应的调整。<br/>第3章介绍实时软件的分析设计方法。由于大多数实时软件都是用结构化的程序设计语言—C语言或是用汇编语言与C语言混合开发的,我们期望给出完整的实时软件分析建模方法与设计方法,因此增加了结构化分析建模方法,详细介绍了数据流图、控制流图、状态图的建模方法,完整地构建了一个实时系统的功能模型、控制模型与动态模型。然后介绍用DARTS方法中的任务划分原则与接口设计方法进行系统的分解。接下来介绍实时软件常用的软件架构,基于这些架构及其组合来组织任务。最后,在此基础上介绍了任务设计、模块设计、任务与系统集成。<br/>第4章介绍复杂嵌入式软件的分析设计方法,主要介绍面向对象的复杂嵌入式软件分析设计方法。目前,一些复杂的实时软件是用面向对象程序设计语言C++开发的,或是用汇编语言、C语言、C++语言混合开发的,大多数非实时嵌入式软件都是用面向对象程序设计语言开发的,因此,针对复杂嵌入式软件,我们系统地介绍了面向对象的嵌入式软件分析设计方法。对于实时软件,这一章介绍的方法要与第3章介绍的任务划分原则与接口设计方法结合使用;对于非实时嵌入式软件,仍然可以借鉴第3章的设计原则。为了复杂嵌入式软件分析设计方法的内容完整性,我们将上一版的第10章移至4.5节。<br/>第5章介绍嵌入式操作系统与移植,嵌入式操作系统的选型与移植在嵌入式软件开发中是基础,也是难点。我们在上一版1.3.2节的基础上增加了嵌入式操作系统架构的内容,并以开源实时操作系统FreeRTOS在STM32硬件平台上的移植作为实例,介绍了实时操作系统的移植与硬件平台的关系。<br/>第6章介绍板级支持包与设备驱动,在上一版第7章的基础上增加了STM32硬件平台上的FreeRTOS设备驱动程序开发实例,介绍了基于ARM MPU硬件平台的Linux操作系统的设备驱动开发。<br/>第7章介绍嵌入式数据库,对上一版第9章的内容进行了调整,删除了一些关于设计数据库、不常用嵌入式数据库的内容,增加了目前最常用的嵌入式数据库SQLite的持续数据管理应用设计的内容。<br/>第8章介绍嵌入式软件图形用户界面设计,对上一版第8章中目前不常用的技术进行了删减,并增加了目前常用的GUI设计中间件QT的介绍。此外,还增加了不用第三方GUI设计中间件而用C语言设计图形化界面的方法。<br/>第11章介绍嵌入式软件开发环境。这一版我们以实时操作系统FreeRTOS作为实时软件的系统软件平台的实例,以嵌入式Linux操作系统作为复杂嵌入式软件的系统软件平台的实例,因此,在上一版第14章的基础上,删掉了“Windows CE应用开发环境”,增加了“FreeRTOS嵌入式系统开发环境”。<br/>在本书修订过程中,刘亚楠提供了STM32硬件平台上的FreeRTOS移植与驱动开发实例,张博华提供了Arduino串口应用、SQLite数据库应用的开发实例,并整理了QT、C语言设计图形化界面方法的相关内容,邱世同根据课件整理了结构化分析建模方法等内容,在此感谢他们的辛勤工作。<br/>本书主要面向特色化示范性软件学院软件工程专业大三以上本科生与研究生的嵌入式软件设计课程,对电工电子类专业、通信专业、机械专业开设的嵌入式系统相关课程也有所帮助。<br/>理论授课内容、实践内容与学时安排建议如表1所示,内容与课时可根据具体情况调整。比如,若是面向研究生的课程,第9章和第10章的课时可以增加;若是面向本科生的课程,第9章和第10章的内容也可以不讲。第3章和第4章放到后面讲授,是为了让学生先了解嵌入式系统的硬件平台与软件平台,通过理论授课与实践相结合让学生对嵌入式系统有了基本的了解与认知后,再学习系统的嵌入式软件分析设计方法,在前述实践的基础上完成实时嵌入式软件与复杂嵌入式软件的分析、设计与开发。