图书目录

目    录

第1章  嵌入式系统基础 1

1.1  嵌入式系统 1

1.1.1  嵌入式系统的概念 1

1.1.2  嵌入式系统的组成 3

1.1.3  嵌入式系统的发展 5

1.1.4  嵌入式系统的应用前景 8

1.2  嵌入式处理器 11

1.2.1  嵌入式微控制器(EMCU) 11

1.2.2  嵌入式微处理器(EMPU) 12

1.2.3  嵌入式数字信号处理器(EDSP) 13

1.2.4  嵌入式片上系统(ESOC) 13

1.3  嵌入式操作系统 13

1.3.1  Linux 15

1.3.2  VxWorks 15

1.3.3  WinCE 16

1.3.4  μC/OS-II 16

1.3.5  eCOS 17

1.3.6  Android 17

1.3.7  iOS 18

1.3.8  WP和Windows RT 18

1.4  嵌入式系统设计 18

1.4.1  嵌入式系统开发流程 18

1.4.2  嵌入式系统开发方法 19

思考与练习 20

第2章  Linux基础 22

2.1  Linux简介 22

2.1.1  Linux的历史 23

2.1.2  Linux特点 23

2.1.3  Linux与Windows 25

2.1.4  Linux的主要组成部分 27

2.1.5  Linux的种类和特性 30

2.2  图形操作界面 33

2.2.1  Linux与图形界面 34

2.2.2  KDE 35

2.2.3  GNOME 37

2.2.4  GNOME与KDE发展趋势 38

2.3  Linux的基本命令行操作 39

2.3.1  目录操作 40

2.3.2  文件操作 46

2.3.3  压缩、解压与打包 50

2.3.4  磁盘管理 51

2.3.5  用户系统 53

2.3.6  网络管理 55

2.4  Linux内核 58

思考与练习 59

第3章  ARM体系架构 60

3.1  ARM微处理器简介 60

3.1.1  ARM微处理器的发展 60

3.1.2  ARM微处理器的特点和应用 61

3.2  ARM微处理器系列 62

3.2.1  Classic(传统)系列 62

3.2.2  Cortex-M系列 63

3.2.3  Cortex-R系列 63

3.2.4  Cortex-A系列 64

3.2.5  Cortex-A50系列 65

3.3  ARM编程模型 65

3.3.1  ARM硬件架构 65

3.3.2  ARM微处理器模式 66

3.3.3  ARM寄存器 67

3.3.4  异常处理 68

3.3.5  ARM的存储器组织 72

3.4  ARM指令系统 74

3.4.1  ARM指令格式 74

3.4.2  ARM指令的寻址方式 75

3.4.3  ARM最常用指令和条件后缀 77

3.5  ARM微处理器的应用选型 79

思考与练习 80

第4章  嵌入式编程 82

4.1  ARM汇编语言程序设计 82

4.1.1  ARM汇编语言中的程序结构 82

4.1.2  ARM汇编语言的语句格式 83

4.1.3  基于Linux下GCC的汇编语言程序结构 84

4.1.4  基于Windows下ADS的汇编语言程序结构 85

4.1.5  ARM汇编器所支持的伪指令 86

4.2  ARM汇编与C语言编程 90

4.2.1  基本的ATPCS规则 91

4.2.2  C语言中内嵌汇编代码 93

4.2.3  从汇编程序中访问C程序变量 94

4.2.4  在汇编代码中调用C函数 95

4.2.5  在C语言代码中调用汇编函数 98

4.3  基于Linux的C语言编程 99

4.3.1  C语言编程概述 99

4.3.2  Linux下的C开发工具 99

4.3.3  vim编辑器 100

4.3.4  gedit编辑器 106

4.3.5  编译器gcc 107

4.3.6  调试器gdb 111

4.3.7  项目管理器make 114

思考与练习 117

第5章  软硬件开发环境 119

5.1  硬件环境 119

5.1.1  主机硬件环境 119

5.1.2  目标板硬件环境 120

5.2  Windows软件环境 122

5.2.1  超级终端的设置 122

5.2.2  DNW的设置 123

5.2.3  设置GIVEIO驱动 126

5.3  Linux软件环境 128

5.3.1  Linux系统的VMware安装 129

5.3.2  Windows与Ubuntu双系统安装 135

5.3.3  Linux网络服务配置 137

5.3.4  配置NFS服务 138

5.3.5  配置FTP服务 140

5.4  刻录镜像文件 141

5.4.1  刻录工具 142

5.4.2  使用方法 142

思考与练习 143

第6章  交叉编译工具 145

6.1  工具链软件 145

6.1.1  工具链组成 145

6.1.2  构建工具链 146

6.2  分步构建交叉编译链 147

6.2.1  准备工具 147

6.2.2  基本过程 147

6.2.3  详细步骤 148

6.3  用Crosstool工具构建交叉工具链 155

6.3.1  准备工具 155

6.3.2  基本过程 155

6.3.3  详细步骤 156

6.4  使用现成的交叉工具 159

思考与练习 160

第7章  Bootloader详解及移植 162

7.1  嵌入式Bootloader简介 162

7.1.1  Bootloader功能 162

7.1.2  基于Bootloader软件架构 163

7.1.3  Bootloader的操作模式 164

7.1.4  Bootloader的依赖性 164

7.1.5  Bootloader的启动方式 164

7.1.6  Bootloader启动流程 167

7.1.7  各种Bootloader 168

7.2  Vivi 169

7.2.1  Vivi简介 169

7.2.2  Vivi体系架构 169

7.2.3  Vivi的运行过程分析 170

7.2.4  Vivi的配置与编译 183

7.2.5  Vivi命令 185

7.3  Bootloader程序的调试和刻录 187

思考与练习 188

第8章  定制内核移植 189

8.1  Linux内核源码组织 189

8.2  内核基本配置 191

8.2.1  内核配置系统 191

8.2.2  Makefile 192

8.2.3  具体的配置操作 197

8.2.4  添加自己的代码 201

8.3  内核定制 204

8.3.1  获取源码 204

8.3.2  移植过程 205

8.4  内核裁剪 212

8.4.1  取消虚拟内存的支持 212

8.4.2  取消多余的调度器 212

8.4.3  取消对旧版本二进制执行文件的支持 213

8.4.4  取消不必要的设备的支持 213

8.4.5  取消不需要的文件系统的支持 214

思考与练习 214

第9章  嵌入式Linux文件系统 216

9.1  嵌入式Linux的文件系统 216

9.1.1  文件系统结构 216

9.1.2  文件系统特性 217

9.1.3  系统存储设备及其管理机制 218

9.1.4  基于Flash闪存的文件系统 219

9.1.5  基于RAM的文件系统 221

9.1.6  网络文件系统 222

9.2  根文件系统及其定制 223

9.2.1  根文件系统架构 223

9.2.2  定制工具Busybox 225

9.2.3  库文件构建 233

9.2.4  设备文件的构建 235

9.2.5  根文件系统初始化 236

9.3  文件系统的制作 239

9.3.1  根文件系统的制作 239

9.3.2  NFS文件系统的制作 245

9.3.3  Cramfs文件系统的制作 247

9.3.4  Yaffs文件系统的制作 249

9.3.5  Ramdisk文件系统的制作 250

思考与练习 253

第10章  嵌入式Linux驱动程序开发基础 255

10.1  嵌入式Linux驱动程序概述 255

10.1.1  Linux驱动程序工作原理 255

10.1.2  Linux驱动程序功能 257

10.2  设备驱动程序的基础知识 257

10.2.1  Linux的设备管理机制 257

10.2.2  驱动层次结构 261

10.2.3  设备驱动程序与外界的接口 262

10.2.4  设备驱动程序的特点 262

10.2.5  驱动程序开发流程 263

10.3  模块编程 263

10.3.1  模块与内核 263

10.3.2  建立模块文件 264

10.3.3  编写makefile 265

10.3.4  模块加载 266

10.3.5  模块的其他信息 267

10.3.6  模块参数 267

10.4  字符设备驱动程序 268

10.4.1  相关的数据结构 268

10.4.2  字符设备驱动程序开发流程 274

10.4.3  字符设备驱动程序扩展操作 283

10.5  网络设备驱动程序 285

10.5.1  基本概念 285

10.5.2  网络数据包处理流程 290

思考与练习 292

第11章  嵌入式Linux图形设计 294

11.1  嵌入式GUI 294

11.1.1  嵌入式GUI简介 294

11.1.2  嵌入式GUI需求 295

11.1.3  嵌入式GUI组成 296

11.1.4  Qt/Embedded 297

11.1.5  MiniGUI 298

11.1.6  MicroWindows 300

11.1.7  OpenGUI 302

11.1.8  Tiny-X 302

11.1.9  各种GUI比较 303

11.2  Qt/Embedded开发入门 303

11.2.1  Qt/Embedded简介 303

11.2.2  Qt/Embedded架构 304

11.2.3  Qt的开发环境 306

11.2.4  Qt的支撑工具及组件 307

11.2.5  Qt/Embedded对象模型 307

11.2.6  信号与插槽机制 309

11.2.7  Qt/Embedded常用的类 312

11.3  安装Qt/Embedded 314

11.3.1  配置 314

11.3.2  编译 315

11.3.3  测试 315

11.4  Qt设计实例——密码验证程序 315

11.4.1  快速安装QDevelop和Qt Designer 316

11.4.2  界面设计 317

11.4.3  信号与槽 319

11.4.4  添加代码 320

11.4.5  编译 323

11.4.6  程序测试 324

11.4.7  移植 324

思考与练习 325

第12章  嵌入式视频监视系统开发实例 327

12.1  系统设计背景 327

12.2  系统总体设计 328

12.2.1  系统总体设计思路 328

12.2.2  系统的设计要求及特点 328

12.2.3  系统总体架构设计 328

12.3  系统详细设计 330

12.3.1  系统的硬件设计与调试 330

12.3.2  系统的软件设计与调试 333

12.3.3  USB数据输入驱动程序移植 341

12.3.4  USB摄像头数据输入驱动程序测试 342

12.3.5  嵌入式网络视频服务器的设计 343

12.3.6  Video4Linux程序设计 344

12.4  系统测试 345

12.4.1  准备工作 345

12.4.2  测试方法 346

12.4.3  测试结果 346