当前位置:首页 > 工业技术
嵌入式系统原理与设计  第2版
嵌入式系统原理与设计  第2版

嵌入式系统原理与设计 第2版PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:陈文智,王总辉主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302460787
  • 页数:449 页
图书介绍:本书分为上下两篇,上篇原理部分共14章,下篇实验部分共10章。本书既可以作为各类院校嵌入式方向的本科生和研究生的嵌入式系统教材,也可以作为嵌入式系统开发工程师的参考书。
《嵌入式系统原理与设计 第2版》目录

上篇 原理部分 3

第1章 嵌入式系统概述 3

1.1嵌入式系统简介 3

1.1.1嵌入式系统历史与现状 3

1.1.2嵌入式系统体系结构 4

1.1.3应用领域和发展方向 5

1.2嵌入式处理器 6

1.2.1嵌入式处理器简介 6

1.2.2 ARM处理器的应用领域及一般特点 7

1.2.3 ARM处理器系列 7

1.3嵌入式操作系统 8

1.3.1嵌入式操作系统简介 8

1.3.2嵌入式Linux 8

1.3.3 VxWorks 9

1.3.4 μC/ OS- Ⅱ 10

1.3.5 Windows CE 10

1.3.6 Symbian 11

1.3.7 Android 11

1.3.8 iOS 11

1.3.9其他嵌入式操作系统 12

1.4嵌入式系统设计 12

1.4.1嵌入式系统设计过程 12

1.4.2硬件设计平台的选择 13

1.4.3软件设计平台的选择 14

1.4.3嵌入式应用软件开发 16

1.4.5测试和优化 17

小结 17

进一步探索 17

第2章ARM处理器和指令集 18

2.1 ARM处理器简介 18

2.1.1 ARM公司和ARM产品简介 18

2.1.2 ARM指令集体系结构版本 18

2.1.3 ARM处理器系列 20

2.2 ARM指令集简介 22

2.2.1 RISC简介 22

2.2.2 ARM状态和Thumb状态 22

2.2.3 ARM指令类型和指令的条件域 23

2.3 ARM指令的寻址方式 27

2.3.1立即寻址 27

2.3.2寄存器寻址 27

2.3.3寄存器偏移寻址 27

2.3.4寄存器间接寻址 28

2.3.5基址变址寻址 28

2.3.6多寄存器寻址 28

2.3.7堆栈寻址 29

2.3.8相对寻址 29

2.4 ARM指令简介 30

2.4.1跳转指令 30

2.4.2通用数据处理指令 32

2.4.3乘法指令 35

2.4.4 Load/Store内存访问指令 37

2.4.5 ARM协处理器指令 40

2.4.6杂项指令 42

2.4.7饱和算术指令 43

2.4.8 ARM伪指令 44

2.5 Thumb指令简介 46

2.5.1 Thumb跳转指令 46

2.5.2 Thumb通用数据处理指令 47

2.5.3 Thumb算术指令 49

2.5.4 Thumb内存访问指令 51

2.5.5 Thumb软中断和断电指令 53

2.5.6 Thumb伪指令 53

小结 54

进一步探索 54

第3章 嵌入式Linux操作系统 55

3.1嵌入式Linux简介 55

3.1.1 μ…CLinux 55

3.1.2 RT-Linux 56

3.1.3红旗嵌入式Linux 56

3.2内存管理 56

3.2.1内存管理和MMU 56

3.2.2标准Linux的内存管理 57

3.2.3RT-Linux的内存管理 58

3.3进程管理 59

3.3.1进程和进程管理 59

3.3.2 RT-Linux的进程管理 60

3.3.3标准Linux的进程管理 61

3.3.4 μCLinux的进程管理 62

3.4文件系统 63

3.4.1文件系统定义 63

3.4.2 Linux文件系统 63

3.4.3嵌入式Linux文件系统 64

小结 69

进一步探索 69

第4章 嵌入式软件编程技术 70

4.1嵌入式编程基础 70

4.1.1嵌入式汇编语言基础 70

4.1.2嵌入式高级编程知识 71

4.1.3嵌入式开发工程 73

4.2嵌入式汇编编程技术 76

4.2.1基本语法 76

4.2.2汇编语言程序设计案例 79

4.3嵌入式高级编程技术 80

4.3.1函数可重入 80

4.3.2中断处理过程 81

4.4高级语言与汇编语言混合编程 81

4.4.1高级语言与汇编语言混合编程概述 81

4.4.2汇编程序调用C程序 82

4.4.3 C程序调用汇编程序 83

小结 84

进一步探索 84

第5章 开发环境和调试技术 85

5.1交叉开发模式概述 85

5.2宿主机环境 86

5.2.1串口终端 86

5.2.2 BOOTP 87

5.2.3 TFTP 87

5.2.4交叉编译 87

5.3目标板环境 88

5.3.1 J TAG接口简介 88

5.3.2 Boot Loader简介 88

5.4交叉编译工具链 88

5.4.1交叉编译的构建 89

5.4.2相关工具 89

5.5 gdb调试器 92

5.6远程调试 96

5.6.1远程调试原理 96

5.6.2 gdb远程调试功能 97

5.6.3使用gdbserver 98

5.7内核调试 101

5.7.1内核调试技术 101

5.7.2 kgdb内核调试 103

5.8网络调试 104

小结 106

进一步探索 106

第6章Boot Loader技术 107

6.1 Boot Loader基本概念 107

6.1.1 Boot Loader所支持的硬件环境 107

6.1.2 Boot Loader的安装地址 107

6.1.3 Boot Loader相关的设备和基址 108

6.1.4 Boot Loader的启动过程 108

6.1.5 Boot Loader的操作模式 108

6.1.6 Boot Loader与主机之间的通信设备及协议 108

6.2 Boot Loader典型结构 109

6.2.1 Boot Loader阶段1介绍 109

6.2.2 Boot Loader阶段2介绍 110

6.2.3关于串口终端 117

6.3 U-Boot简介 117

6.3.1认识U-Boot 117

6.3.2 U-Boot特点 117

6.3.3 U-Boot代码结构分析 118

6.4 vivi简介 129

6.4.1认识ViVi 129

6.4.2 vivi代码导读 129

小结 137

进一步探索 137

第7章ARM-Linux内核 138

7.1 ARM-Linux内核简介 138

7.1.1 ARM-Linux内核和普通Linux内核的区别 138

7.1.2 ARM-Linux的版本控制 139

7.1.3 ARM-Linux的代码结构 139

7.2 ARM-Linux内存管理 140

7.2.1影响内存管理的两个方面 140

7.2.2 ARM-Linux的存储机制 141

7.2.3虚拟内存 144

7.3 ARM-Linux进程管理和调度 147

7.3.1进程的表示和生命周期 147

7.3.2 Linux进程的创建、执行和销毁 149

7.3.3 Linux进程的调度 152

7.4 ARM-Linux模块机制 153

7.4.1 Linux模块概述 154

7.4.2模块代码结构 155

7.4.3模块的加载 155

7.4.4模块的卸载 156

7.4.5版本依赖 157

7.5 ARM-Linux中断管理 157

7.6 ARM-Linux系统调用 161

7.7 ARM-Linux系统启动和初始化 163

7.7.1使用Boot Loader将内核映像载入 163

7.7.2内核数据结构初始化——内核引导第一部分 163

7.7.3外设初始化——内核引导第二部分 164

7.7.4 init进程和inittab脚本 165

7.7.5 rc启动脚本 166

7.7.6 Shell的启动 166

小结 167

进一步探索 167

第8章 文件系统 168

8.1嵌入式文件系统简介 168

8.1.1 Linux文件系统简介 168

8.1.2嵌入式文件系统简介 169

8.2嵌入式Linux文件系统框架 170

8.3 JFFS2嵌入式文件系统 172

8.3.1目录节点的定义 173

8.3.2数据节点 174

8.3.3可靠性支持 174

8.3.4内存使用 175

8.3.5垃圾收集 176

8.3.6写平衡 177

8.3.7 JFFS2的不足之处 177

8.3.8 JFFS3简介 177

8.4根文件系统 178

8.4.1什么是根文件系统 178

8.4.2建立JFFS2根文件系统 178

小结 182

进一步探索 182

第9章 设备驱动程序设计基础 183

9.1 Linux设备驱动程序简介 183

9.1.1设备的分类 184

9.1.2设备文件 184

9.1.3主设备号和次设备号 184

9.1.4 Linux设备驱动代码的分布 185

9.1.5 Linux设备驱动程序的特点 185

9.2设备驱动程序结构 186

9.2.1驱动程序的注册与注销 186

9.2.2设备的打开与释放 186

9.2.3设备的读写操作 187

9.2.4设备的控制操作 187

9.2.5设备的轮询和中断处理 188

9.3 Linux内核设备模型 189

9.3.1设备模型建立的目的 189

9.3.2 sysfs——设备拓扑结构的文件系统表现 189

9.3.3驱动模型和sysfs 190

9.3.4 kobject 191

9.3.5 platform总线 194

9.4同步机制 195

9.4.1同步锁 195

9.4.2信号量 199

9.4.3读写信号量 201

9.4.4原子操作 202

9.4.5完成事件 203

9.4.6时间 204

9.5内存映射和管理 206

9.5.1物理地址映射到虚拟地址 207

9.5.2内核空间映射到用户空间 207

9.6工作队列 210

9.7异步I/O 213

9.8 DMA 215

9.8.1 DMA数据传输 215

9.8.2 DMA定义 215

9.8.3 DMA映射 216

小结 217

进一步探索 217

第10章 字符设备和驱动程序设计 218

10.1字符设备驱动框架 218

10.2字符设备驱动开发 219

10.2.1设备号 219

10.2.2关键数据结构 222

10.2.3字符设备注册和注销 225

10.3 GPIO驱动概述 226

10.4串行总线概述 227

10.4.1 SPI总线 227

10.4.2 I2C总线 228

10.4.3 SMBus总线 228

10.5 I2 C总线驱动开发 229

10.5.1 I2 C驱动架构 229

10.5.2关键数据结构 230

10.5.3 I2C核心 233

10.5.4 I2 C总线驱动 234

10.5.5 I2C设备驱动 235

小结 235

进一步探索 236

第11章 块设备和驱动程序设计 237

11.1块设备驱动程序设计概要 237

11.1.1块设备的数据交换方式 237

11.1.2块设备读写请求 237

11.2 Linux块设备驱动相关数据结构与函数 239

11.2.1 gendisk结构 239

11.2.2 request结构 240

11.2.3 request_queue队列 242

11.2.4 bio结构 244

11.3块设备的注册与注销 246

11.4块设备初始化与卸载 246

11.5块设备操作 247

11.6请求处理 248

11.7 MMC卡驱动 250

11.7.1 MMC/SD芯片介绍 250

11.7.2 MMC/SD卡驱动结构 255

11.7.3 MMC卡块设备驱动分析 255

11.7.4 HSMCI接口驱动设计分析 262

小结 272

进一步探索 272

第12章 网络设备驱动程序开发 273

12.1以太网基础知识 273

12.1.1 CSMA/CD协议 275

12.1.2以太网帧结构 276

12.1.3嵌入式系统中常用的络协议 277

12.2.嵌入式网络设备驱动开发概述 278

12.3网络设备驱动基本数据结构 279

12.3.1 net_ device数据结构 279

12.3.2 sk_ buffer数据结构 282

12.4网络设备初始化 283

12.5打开和关闭接口 283

12.6数据接收与发送 284

12.7查看状态与参数设置 285

12.8 AT91SAM9G45网卡驱动 286

12.8.1 EMAC模块简介 286

12.8.2模块图 286

12.8.3功能描述 287

12.8.4寄存器描述 287

12.8.5 AT91SAM9G45芯片EMAC控制器驱动分析 290

小结 297

进一步探索 297

第13章 嵌入式GUI及应用程序设计 298

13.1嵌入式GUI设计概述 298

13.1.1嵌入式GUI简介 298

13.1.2嵌入式GUI设计需求 299

13.1.3嵌入式GUI设计原则 299

13.1.4主流嵌入式GUI简介 300

13.2嵌入式GUI体系结构设计 301

13.2.1嵌入式GUI体系结构 301

13.2.2抽象层 302

13.2.3核心层 302

13.2.4接口层 303

13.3基于主流GUI的应用程序设计 303

13.3.1 MiniGUI开发环境搭建 303

13.3.2基于MiniGUI的应用程序设计 306

13.3.3 Android开发环境搭建 310

13.3.4基于Android的应用程序设计 312

小结 316

进一步探索 316

下篇 实验部分 319

第1章 实验基础 319

第2章 开发环境建立 333

第3章 内核和模块构建 349

第4章 文件系统构建 361

第5章 调试技术演练 366

第6章 字符设备和驱动程序设计 377

第7章 块设备驱动程序设计 396

第8章 网络设备驱动程序设计 407

第9章MiniGUI应用设计 419

第10章Android应用设计 430

相关图书
作者其它书籍
返回顶部