第1章 引言 1
1.1嵌入式系统概述 1
1.1.1嵌入式系统历史 1
1.1.2嵌入式系统定义 1
1.1.3嵌入式系统的应用 2
1.1.4嵌入式系统的特点 3
1.2嵌入式处理器 4
1.2.1嵌入式微控制器 4
1.2.2嵌入式微处理器 5
1.2.3嵌入式DSP处理器 7
1.2.4嵌入式片上系统(System On Chip) 7
1.3嵌入式操作系统 8
1.3.1 VxWorks嵌入式操作系统 8
1.3.2 WinCE 9
1.3.3 RT-Linux 11
1.3.4 uCLinux 11
1.3.5 Palm 11
1.4嵌入式系统设计 12
1.4.1嵌入式系统开发流程 12
1.4.2嵌入式系统开发模式 13
第2章ARM体系架构及汇编程序设计 14
2.1 ARM微处理器介绍 14
2.1.1 ARM微处理器的历史发展 14
2.1.2 ARM微处理器的特点和应用 15
2.1.3 ARM微处理器家族 16
2.2 ARM编程模型 17
2.2.1 ARM微处理器模式 17
2.2.2 ARM寄存器 18
2.2.3异常处理 19
2 2.4 ARM的储存器组织 23
2.3 ARM指令系统 25
2 3.1 ARM指令格式 25
2.3.2 ARM指令的寻址方式 26
2.3.3 ARM最常用指令和条件后缀 28
2.4 ARM汇编语言程序设计 30
2.4.1 ARM汇编语言中的程序结构 30
2.4.2 ARM汇编器所支持的伪指令 31
2.4.3 ARM汇编语言与C/C++的混合编程 35
2.5汇编程序综合实验 40
2.5.1流程图设计 40
2.5.2详细代码设计 40
第3章 嵌入式S3C2440处理器 43
3.1 S3C2440芯片概述 43
3.1.1特性 43
3.1.2引脚信息 44
3.2 S3C2440微处理器功能模块 45
3.2.1处理器核体系架构 45
3.2.2 S3C2440存储系统 46
3.2.3 S3C2440启动加载模式 48
3.2.4 LCD屏/触摸屏支持模块 49
3.2.5时钟和电源管理 51
第4章 接口技术 54
4.1看门狗接口设计 54
4.1.1 S3C2440处理器看门狗 54
4.1.2看门狗使用实例 56
4.2 S3C2440微处理器GPIO接口设计 58
4 2.1 GPIO口概述 58
4.2.2端口控制 59
4.2.3基于GPIO口的LED灯设计 60
4.3 UART设计 62
4.3.1 S3C2440串口概述 63
4 3.2 UART操作 64
4 3.3 UART寄存器 65
4.3.4串行接口电路设计及编程 70
4.4 S3C2440中断管理及设计 73
4.4.1中断控制器 73
4.4.2中断源 73
4.4.3中断优先级模块 75
4.4.4中断控制器中端口寄存器 77
4.4.5中断程序架构设计 82
第5章 嵌入式BootLoader设计 91
5.1嵌入式BootLoader简介 91
5.1.1嵌入式系统软件体系架构 91
5.1.2各式各样BootLoader 92
5.2典型嵌入式BootLoader——vivi 93
5.2.1 vivi简介 93
5.2.2 vivi的配置与编译 93
5.2.3 vivi的使用 95
5.2.4 vivi代码体系架构分析 96
5.2.5 vivi系统配置浅析 105
5.2.6 vivi代码启动分析 112
第6章 嵌入式Linux编程基础 132
6.1嵌入式集成交叉编译环境 132
6.1.1构建嵌入式交叉编译环境 132
6.1.2嵌入式交叉编译环境构成 133
6.1.3嵌入式常用交叉编译工具的使用 136
6.2 Makefile原理与使用 148
6.2.1 make工具和Makefile文件 148
6.2.2 Makefile基本结构 150
6.2.3 Makefile变量 153
6.2.4 Makefile高级规则的使用 155
6.2.5 Makefile中函数的使用 157
6.2.6 make工具的使用 158
6.2.7 Makefile举例 159
6.2.8使用automake生成Makefile 163
6.3应用程序调试 170
6.3.1 ARM调试方法简介 170
6.3.2 GDB本地调试 172
6.3.3 DDD图形调试工具 172
6.3.4嵌入式开发板远程调试 175
6.4嵌入式Linux库的使用 180
6.4.1库的概述 180
6.4.2库的命名与分类 181
6.4.3创建静态库 182
6.4.4创建共享库 183
6.4.5静态库VS共享库实验 186
第7章 嵌入式Linux操作系统 187
7.1嵌入式Linux发展 187
7.2嵌入式Linux内核结构 188
7.3进程暨进程调度 189
7.3.1进程概述 189
7.3.2 Linux下对进程的描述 190
7.3.3进程调度 194
7.4内存管理 194
7.4.1内存管理的本质特征 194
7.4.2地址映射模型 197
7.5中断管理系统 198
7.5.1构建ARM-Linux中断系统骨架 198
7.5.2 ARM-Linux系统下中断响应 207
7.6系统调用 208
7.6.1系统调用原理 208
7.6.2嵌入式系统调用实例 208
7.7文件系统 211
7.8进程间通信机制 212
7.8.1管道及有名管道 213
7.8.2信号 214
7.8.3消息队列 215
7.8.4共享内存 215
7.8.5信号量 216
7.9嵌入式Linux内核源码组织 217
7.9.1嵌入式Linux内核目录结构 217
7.9.2嵌入式Linux内核配置系统 218
第8章 构建嵌入式Linux系统 220
8.1嵌入式Linux内核裁减 220
8.2构建根文件系统 221
8.2.1根文件系统架构 221
8.2.2定制根文件系统 223
8.3文件系统实验 234
第9章 嵌入式Linux应用编程 241
9.1进程控制及编程 241
9.1.1进程控制函数 241
9.1.2守护进程设计 254
9.2进程间通信 262
9.2.1管道通信 262
9.2.2命名管道 268
9.2 3消息队列 272
9.2.4共享内存 279
9.2.5信号通信 284
9.3线程控制及编程 291
9.3.1线程概述 291
9.3.2线程编程函数 293
9.3.3线程同步与互斥 296
第10章 嵌入式Linux设备驱动 306
10.1设备驱动基本概念 306
10.1.1设备驱动在Linux系统中的地位 306
10.1.2设备驱动完成的工作 307
10.1.3 Linux对设备驱动的管理机制 307
10.2内核模块及模块编程 309
10.2.1模块简介 309
10.2.2模块编程设计 309
10.3 Linux下简单设备驱动程序设计 314
10.3.1 Linux设备驱动层次结构 314
10.3.2典型字符设备驱动编写框架 316
10.3.3高级字符设备驱动程序设计 324
10.3.4设备文件系统 333
10.3.5 misc设备设计 335
10.4网络设备及驱动程序 337
10.4.1基本概念 337
10.4.2网络数据包处理流程 340
10.4.3以太网控制器CS8900A 343
10.4.4 CS8900A驱动程序设计 344
第11章 嵌入式Linux图形设计 359
11.1 Qt/Embedded图形开发基础 359
11.1.1 Qt简介 359
11.1.2 Qt/Embedded组件 360
11.2 Qt/Embedded关键技术 361
11.2.1 Qt/Embedded对象模型 361
11.2.2信号与插槽机制 362
11.2.3信号/槽编程实例 363
11.2.4 Qt/Embedded关键类 366
11.3 Qt/Embedded实例设计 368
第12章 嵌入式移动打印终端开发实例剖析 378
12.1项目概述 378
12.2嵌入式系统移动打印终端总体架构构建 378
12.2.1总体架构 378
12.2.2软/硬件选型 380
12.3软/硬件设计 384
12.3.1设计流程 384
12.3.2硬件设计 384
12.3.3打印机驱动的设计 388
12.3.4扫描仪驱动设计 397
12.3.5网络通信模块及服务器端的开发 401
12.3.6系统应用程序设计 404
12.4系统调试 406
参考文献 410