《嵌入式系统设计与应用 基于ARM Cortex-A8和Linux》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:王剑,刘鹏,胡杰,文汉云主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302458067
  • 页数:377 页
图书介绍:本书共11章,从硬件、软件及系统案例开发等诸多方面深入浅出的阐述了嵌入式系统的基本概念和原理,基于ARM CORTEX-A8处理器架构及指令集,ARM-Linux内核及驱动程序设计方法,QT程序设计与SQLite数据库,有代表性的嵌入式系统设计案例等。全书结构合理,内容丰富,实例众多,适合作为各类院校相关专业嵌入式系统课程教材。

第1章 嵌入式系统概述 1

1.1 嵌入式系统简介 1

1.1.1 嵌入式系统的产生 1

1.1.2 嵌入式系统的定义、特点和分类 2

1.1.3 嵌入式系统的两种应用模式 4

1.1.4 嵌入式系统的典型组成 5

1.2 嵌入式微处理器 6

1.2.1 嵌入式微处理器简介 6

1.2.2 主流嵌入式微处理器 8

1.3 嵌入式操作系统 9

1.3.1 嵌入式Linux 9

1.3.2 Windows CE 11

1.3.3 Symbian 11

1.3.4 Android 12

1.3.5 μC/OS-Ⅱ 12

1.3.6 VxWorks 13

1.4 嵌入式系统的应用领域和发展趋势 13

1.4.1 嵌入式系统的应用领域 13

1.4.2 嵌入式系统的发展趋势 13

1.5 本章小结 14

习题 14

第2章 ARM处理器体系结构 15

2.1 ARM处理器概述 15

2.1.1 ARM处理器简介 15

2.1.2 ARM体系结构发展 16

2.1.3 ARM处理器系列主要产品 19

2.1.4 ARM开发工具简介 24

2.2 Cortex-A8处理器架构 26

2.3 Cortex-A8处理器工作模式和状态 30

2.3.1 Cortex-A8处理器工作模式 30

2.3.2 Cortex-A8处理器状态 31

2.4 Cortex-A8存储器管理 32

2.4.1 ARM的基本数据类型 32

2.4.2 浮点数据类型 32

2.4.3 大/小端存储模式 32

2.4.4 寄存器组 33

2.4.5 Cortex-A8存储系统 37

2.5 Cortex-A8异常处理 43

2.5.1 异常向量和优先级 43

2.5.2 异常响应过程 44

2.5.3 异常返回过程 45

2.5.4 Cortex-A8处理器S5PC100中断机制 46

2.6 本章小结 48

习题 48

第3章 ARM指令集 49

3.1 ARM指令集概述 49

3.1.1 指令格式 49

3.1.2 指令的条件码 50

3.2 ARM指令的寻址方式 51

3.2.1 立即寻址 51

3.2.2 寄存器寻址 51

3.2.3 寄存器间接寻址 51

3.2.4 寄存器移位寻址 52

3.2.5 变址寻址 52

3.2.6 多寄存器寻址 52

3.2.7 相对寻址 53

3.2.8 堆栈寻址 53

3.2.9 块复制寻址 54

3.3 ARM指令简介 54

3.3.1 跳转指令 54

3.3.2 数据处理指令 55

3.3.3 程序状态寄存器处理指令 59

3.3.4 加载/存储指令 60

3.3.5 协处理器指令 61

3.3.6 异常产生指令 62

3.4 Thumb指令简介 63

3.5 ARM汇编语言编程简介 63

3.5.1 伪操作 63

3.5.2 伪指令 65

3.5.3 汇编语句格式 66

3.5.4 汇编语言的程序结构 66

3.6 C语言与汇编语言的混合编程 67

3.6.1 C程序中内嵌汇编 67

3.6.2 汇编中访问C语言程序变量 67

3.6.3 ARM中的汇编和C语言相互调用 68

3.7 本章小结 69

习题 69

第4章 S5PV210微处理器与接口 71

4.1 基于S5PV210微处理器的硬件平台体系结构 71

4.1.1 S5PV210处理器简介 71

4.1.2 S5PV210内部各模块介绍 72

4.2 存储系统 76

4.2.1 S5PV210的地址空间 76

4.2.2 S5PV210启动流程 77

4.3 时钟系统 78

4.3.1 S5PV210时钟概述 78

4.3.2 S5PV210的时钟结构 79

4.4 GPIO接口 81

4.4.1 GPIO概述 81

4.4.2 GPIO寄存器 83

4.4.3 GPIO操作步骤 83

4.4.4 一个LED灯的例子 84

4.5 串行通信接口 89

4.5.1 串行通信方式 89

4.5.2 RS-232C串行接口 90

4.5.3 S5PV210的异步串行通信 91

4.5.4 S5PV210的UART寄存器 92

4.5.5 UART通信示例 92

4.6 A/D转换器 97

4.7 本章小结 100

习题 100

第5章 ARM-Linux内核 101

5.1 ARM-Linux概述 101

5.1.1 GNU/Linux操作系统的基本体系结构 101

5.1.2 ARM-Linux内核版本及特点 102

5.1.3 ARM-Linux内核的主要架构及功能 104

5.1.4 Linux内核源码目录结构 105

5.2 ARM-Linux进程管理 106

5.2.1 进程的表示和切换 107

5.2.2 进程、线程和内核线程 109

5.2.3 进程描述符task_ struct的几个特殊字段 109

5.2.4 do_ fork()函数 110

5.2.5 进程的创建 112

5.2.6 线程和内核线程的创建 113

5.2.7 进程的执行——exec函数族 113

5.2.8 进程的终止 114

5.2.9 进程的调度 115

5.3 ARM-Linux内存管理 117

5.3.1 ARM-Linux内存管理概述 117

5.3.2 ARM-Linux虚拟存储空间及分布 118

5.3.3 进程空间描述 119

5.3.4 物理内存管理 123

5.3.5 基于slab分配器的管理技术 124

5.3.6 内核非连续内存分配(vmalloc) 125

5.3.7 页面回收简述 127

5.4 ARM_ Linux模块 127

5.4.1 LKM的编写和编译 128

5.4.2 LKM版本差异比较 128

5.4.3 模块的加载与卸载 129

5.4.4 工具集module-init-tools 131

5.5 ARM-Linux中断管理 132

5.5.1 ARM_ Linux中断的一些基本概念 132

5.5.2 内核异常向量表的初始化 133

5.5.3 Linux中断处理 135

5.5.4 内核版本2.6.38后的中断处理系统的一些改变——通用中断子系统 142

5.6 ARM-Linux系统调用 143

5.7 本章小结 146

习题 146

第6章 Linux文件系统 148

6.1 Linux文件系统概述 148

6.2 ext2文件系统格式 150

6.2.1 ext2文件系统 150

6.2.2 目录结构 153

6.3 ext3和ext4文件系统 154

6.3.1 ext3文件系统 154

6.3.2 ex4文件系统 155

6.4 嵌入式文件系统JFFS2 155

6.4.1 嵌入式文件系统 155

6.4.2 JFFS2嵌入式文件系统 157

6.5 YAFFS与YAFFS2文件系统简介 164

6.5.1 YAFFS文件系统 164

6.5.2 YAFFS2文件系统简介 165

6.6 根文件系统 166

6.6.1 根文件系统概述 166

6.6.2 根文件系统的制作工具——BusyBox 168

6.6.3 YAFFS2文件系统的创建 170

6.7 本章小结 171

习题 171

第7章 嵌入式Linux系统移植及调试 172

7.1 BootLoader基本概念与典型结构 172

7.1.1 BootLoader基本概念 172

7.1.2 BootLoader的操作模式 173

7.1.3 BootLoader的典型结构 174

7.1.4 常见的BootLoader 174

7.2 U-Boot 175

7.2.1 U-Boot概述 175

7.2.2 U-Boot启动的一般流程 176

7.2.3 U-Boot环境变量 180

7.2.4 U-Boot命令 181

7.3 交叉开发环境的建立 183

7.4 交叉编译工具链 185

7.4.1 交叉编译工具链概述 185

7.4.2 工具链的构建方法 186

7.4.3 交叉编译工具链的主要工具 186

7.4.4 Makefile 192

7.5 嵌入式Linux系统移植过程 194

7.5.1 U-Boot移植 194

7.5.2 内核的配置、编译和移植 198

7.6 GDB调试器 205

7.7 远程调试 209

7.7.1 远程调试工具的构成 209

7.7.2 通信协议——RSP 210

7.7.3 远程调试的实现方法及设置 211

7.7.4 远程调试应用实例方法 212

7.8 内核调试 213

7.8.1 printk() 213

7.8.2 KDB 214

7.8.3 Kprobes 216

7.8.4 KGDB 216

7.9 本章小结 217

习题 218

第8章 设备驱动程序设计 219

8.1 设备驱动程序开发概述 219

8.1.1 Linux设备驱动程序分类 220

8.1.2 驱动程序的处理过程 221

8.1.3 设备驱动程序框架 230

8.1.4 驱动程序的加载 233

8.2 内核设备模型 234

8.2.1 设备模型功能 235

8.2.2 sysfs 235

8.2.3 sysfs的实现机制kobject 237

8.2.4 设备模型的组织——platform总线 239

8.3 字符设备驱动设计框架 243

8.3.1 字符设备的重要数据结构 243

8.3.2 字符设备驱动框架 248

8.4 GPIO驱动概述 252

8.4.1 gpiolib关键数据结构 252

8.4.2 GPIO的申请和注册 253

8.5 I2C总线驱动设计 255

8.5.1 I2 C总线概述 256

8.5.2 I2 C驱动程序框架 257

8.5.3 关键数据结构 258

8.5.4 I2 C核心接口函数 261

8.5.5 I2C设备驱动的通用方法 265

8.6 块设备驱动程序设计概述 267

8.6.1 块设备驱动整体框架 267

8.6.2 关键数据结构 268

8.6.3 块设备的请求队列操作 275

8.7 嵌入式网络设备驱动设计 276

8.7.1 网络设备驱动程序框架 277

8.7.2 网络设备驱动程序关键数据结构 278

8.7.3 网络设备驱动程序设计方法概述 282

8.8 网络设备驱动程序示例——网卡DM9000驱动程序分析 282

8.9 本章小结 291

习题 292

第9章 Qt图形界面应用程序开发基础 293

9.1 Qt简介 293

9.2 Qt 5概述 294

9.2.1 Qt 5简介 294

9.2.2 通过“帮助”菜单了解Qt 5的组成——模块 295

9.2.3 Linux下Qt开发环境的安装与集成 297

9.2.3 Qt Creator功能和特性 299

9.3 信号和插槽机制 299

9.4 Qt程序设计 302

9.4.1 helloworld程序 302

9.4.2 多窗口应用程序 303

9.5 Qt数据库应用 309

9.5.1 数据库驱动 309

9.5.2 Qt与SQLite数据库的连接 310

9.5.3 SQL模型 311

9.6 本章小结 317

习题 318

第10章 SQLite数据库 319

10.1 SQLite数据库概述 321

10.1.1 基于Linux平台的嵌入式数据库概述 321

10.1.2 SQLite的特点 322

10.1.3 SQLite的体系结构 323

10.2 SQLite安装 324

10.3 SQLite的常用命令 326

10.4 SQLite的数据类型 328

10.5 SQLite的API函数 329

10.5.1 核心C API函数 329

10.5.2 扩充C API函数 335

10.6 本章小结 337

习题 337

第11章 嵌入式系统的开发设计案例 338

11.1 嵌入式系统设计方法介绍 338

11.1.1 传统的嵌入式系统设计方法 338

11.1.2 “协同设计”概念的嵌入式系统设计方法 342

11.2 基于ARM的嵌入式Web服务器设计实例 344

11.2.1 系统环境搭建 344

11.2.2 Web服务器原理 349

11.2.3 嵌入式Web服务器设计 350

11.3 物联网网关设计实例 355

11.3.1 背景介绍——环境监测系统平台整体架构 355

11.3.2 网关节点硬件设计方案 357

11.3.3 系统软件设计 360

11.3.4 数据库建设 360

11.4 智能无人值守实验室监控系统设计实例 361

11.4.1 系统总体框架 361

11.4.2 学生选课预约 364

11.4.3 门禁系统 365

11.4.4 ZigBee网络的网络拓扑及路由协议 365

11.4.5 Qt的使用 369

11.5 本章小结 375

参考文献 376