第1章 嵌入式系统体系结构概述 1
1.1嵌入式系统的概念 1
1.2嵌入式系统的组成 2
嵌入式平台的硬件结构 2
板级支持包和嵌入式系统 2
嵌入式系统上的应用程序 2
1.3嵌入式系统的开发流程和优势 3
1.4 ARM微处理器概述 4
ARM简介 4
ARM微处理器的应用领域及特点 4
ARM微处理器系列 5
ARM微处理器结构 7
ARM微处理器的应用选型 8
1.5典型的嵌入式操作系统 9
Linux 9
WinCE 10
VxWorks 10
μC/OS-II 11
Palm OS 11
QNX 12
LynxOS 13
OS-9 13
Windows XP Embedded 13
eCos 13
Nucleus PLUS 14
1.6嵌入式操作系统类型的选择 15
嵌入式操作系统的选择分类 15
嵌入式操作系统的选择标准 16
1.7小结 16
思考与练习 16
第2章 ADS集成开发环境及简易JTAG仿真器的使用 17
2.1 ADS集成开发环境组成 17
应用程序到调试目标 17
根据目标硬件定制存储器映射 21
GUI开发环境 27
2.2使用ADS创建工程 31
建立一个工程 31
编译和链接工程 33
ASM的参考代码 37
2.3用AXD进行代码调试 38
安装并运行ARM-JTAG调试代理ARM9 38
为ARM-JTAG调试代理配置AXD Debugger 39
使用ARM-JTAG在ADS1.20环境下进行仿真调试 40
ARM-JTAG设计电路图 40
2.4小结 41
思考与练习 41
第3章 S3C2410体系结构与外设及最小系统设计 43
3.1 S3C2410处理器介绍 43
S3C2410处理器概述 43
S3C2410处理器引脚描述 44
S3C2410的内核结构 49
3.2 S3C2410特性介绍 50
3.3 S3C2410最小系统设计 53
最小系统框图 53
时钟与电源管理 54
系统时钟控制 55
电源管理 58
时钟与电源管理相关寄存器描述 60
存储器控制概述 62
Boot ROM设计 62
EEPROM/SRAM Bank设计 65
Nand Boot设计 66
SDRAM接口设计 67
存储器相关寄存器 68
S3C2410两种启动方式 74
nGCS片选存储器时序操作 75
S3C2410最小系统硬件电路设计 76
最小系统的程序代码分析 82
最小系统程序的Flash编程 109
3.4利用最小系统调试或烧写程序 124
用MDS通过串口来全速运行和调试应用程序 124
用MDS通过串口烧写应用程序到Flash里 124
3.5小结 124
思考与练习 125
第4章 S3C2410主要外设及功能部件详解 126
4.1 ARM指令 126
常用ARM指令的功能介绍 126
实验电路分析 129
ARM汇编程序编程实例 129
实验测试方法及步骤分析 130
4.2汇编与C语言混合编程 132
ARM过程调用ATPCS 132
汇编与C语言的相互调用 133
汇编与C语言混合编程应用程序 134
实验测试方法与步骤 135
4.3通用I/O端口控制 135
通用I/O口概述 135
通用I/O口相关寄存器描述 136
通用I/O口两种应用电路 137
使用示例及注意事项 138
通用I/O控制单LED实例分析 139
实验检测方法及步骤 142
4.4 UART异步串口通信 142
UART异步串口概述 142
S3C2410的UART控制器 143
UART异步串行口的相关寄存器 146
异步串口应用电路 150
使用示例及注意事项 150
UART串行通信应用编程实例 152
4.5 A/D转换 153
A/D转换的原理 153
A/D转换器概述 154
A/D转换相关寄存器描述 155
A/D转换应用电路 157
A/D转换基本操作和使用示例 158
单通道A/D转换实例分析 159
ADC实验测试方法及步骤 161
4.6 DMA访问 161
DMA访问的原理 161
DMA传送的方式 162
DMA访问相关寄存器描述 162
DMA的操作及注意事项 167
DMA应用程序编程实例 169
DMA实验测试方法及步骤 173
4.7 Nand Flash控制器 173
Nand Flash简介 174
典型的Nand Flash引脚定义和内部结构框图 174
Nand Flash寻址方式 175
Nand Flash的指令与时序 176
S3C2410的Nand Flash控制器 176
Nand Flash相关寄存器 179
Nand Flash寄存器设置举例 181
如何从Nand Flash中读出数据 182
Nand Flash接口电路应用模块 182
Nand Flash应用程序编程实例 183
实验测试方法及步骤 189
4.8 Nor Flash访问 189
Nor Flash简介 189
典型Nor Flash引脚及内部结构 190
Nor Flash读写时序 191
Nor Flash接口应用电路 191
Nor Flash应用程序实例 194
实验测试方法及步骤 197
4.9 PWM控制蜂鸣器和直流电动机 198
PWM简介 198
S3C2410的PWM控制器 198
PWM相关寄存器描述 201
PWM控制器的基本操作 204
PWM应用接口电路图 204
PWM控制蜂鸣器相关函数和功能 205
实验测试方法及步骤 207
PWM控制直流电动机应用电路 207
PWM控制直流电动机相关函数和功能 208
PWM控制直流电动机实验测试方法及步骤 210
4.10 RTC实时时钟 210
实时时钟在嵌入式系统中的作用 210
S3C2410的实时时钟单元 211
RTC实时时钟的结构 211
实时时钟(RTC)相关寄存器 212
RTC实时时钟接口应用电路 215
RTC实时时钟基本操作及注意事项 215
RTC应用程序编程实例 216
实验测试方法及步骤 217
4.11 IIC总线串行通信 218
IIC总线介绍 218
IIC双向传输的接口特性 219
IIC总线数据传送格式和传送过程 220
S3C2410的IIC总线控制器 221
IIC总线相关寄存器描述 221
IIC应用电路图分析 224
IIC总线的基本操作及注意事项 224
IIC应用编程实例 225
IIC总线实验测试方法及步骤 229
4.12定时器中断 230
ARM相关寄存器 230
ARM的异常中断类型 236
异常中断响应过程和返回过程 237
异常中断程序的安装 238
S3C2410的中断控制器 238
异常中断相关寄存器描述 239
定时器中断例程分析及注意事项 244
使用中断的步骤 245
定时器中断应用编程 246
定时器中断实验方法及步骤 248
4.13 WatchDog看门狗定时器 249
看门狗功能简述 249
看门狗的工作原理 250
看门狗控制器的结构 250
看门狗定时器相关寄存器 250
看门狗基本操作和使用示例 252
看门狗应用编程实例 252
实验步骤 254
4.14 USB Device 254
USB总线协议及工作原理 254
USB通信 255
USB Device控制器 256
USB Device应用电路 258
USB Device应用程序编程实例 258
实验测试方法及步骤 261
4.15 LCD显示控制 261
LCD显示原理简介 261
S3C2410的内部LCD控制器 262
LCD控制器接口信号 263
LCD控制器操作 263
LCD相关寄存器描述 267
LCD电路接口设计 273
LCD编程方法及注意事项 274
LCD显示应用编程实例 275
实验测试方法及步骤 279
4.16 LCD触摸屏控制 279
触摸屏简介 279
触摸屏的坐标 281
触摸屏控制器的接口模式 281
触摸屏接口信号 282
触摸屏相关寄存器描述 283
触摸屏应用程序编程实例 285
实验检测方法及步骤 289
4.17 IIS串行音频接口 289
IIS总线规范及工作原理 290
S3C2410的IIS控制器模块 290
IIS相关寄存器描述 293
IIS接口电路设计 295
WAV声音格式 296
音频应用程序编程实例 297
实验测试方法与步骤 302
4.18 USB Host通信 302
USB总线协议及工作原理 302
驱动程序的移植 304
USB Host实验操作 304
4.19 SD卡接口 304
SD卡总线协议及工作原理 305
S3C2410的SD卡控制寄存器 309
SDI编程操作和SDIO编程操作 311
S3C2410的SD卡硬件接口设计 313
SD卡应用程序编程实例 314
实验方法及步骤 316
4.20小结 316
思考与练习 316
第5章 S3C2410外部功能扩展 318
5.1步进电动机控制 318
步进电动机介绍 318
步进电动机参数和指标 319
步进电动机控制系统 319
接口应用电路 319
步进电动机应用程序编程 320
实验测试方法及步骤 323
5.2 8×8点阵驱动 323
LED相关知识 323
8×8 LED点阵的接口原理图 324
8×8点阵基本操作及注意事项 325
8×8 LED点阵应用程序编程实例 325
实验检测方法及步骤 327
5.3 16行列式按键扫描 327
键盘原理介绍 328
行列式键盘原理 328
S3C2410xP的键盘硬件电路 329
行列式键盘按键程序流程 330
按键应用程序编程实例 330
实验测试方法及步骤 333
5.4 TFTP以太网通信 334
以太网协议 334
IP、UDP和TFTP协议介绍 335
以太网接口应用电路 336
应用程序编程实例 339
实验检测方法及步骤 342
5.5 VGA显示 342
VGA接口介绍 342
VGA接口扫描方式 343
TFT接口到VGA接口的转换 343
VGA显示应用程序编程 344
实验检测方法及步骤 346
5.6 CAN总线通信 347
CAN总线简介 347
CAN的分层结构及通信协议 347
CAN总线接口应用电路 349
MPC2510局域网络控制器 350
CAN总线通信应用编程 357
实验测试方法及步骤 369
5.7 CF卡接口扩展 369
CF卡简介 370
CF卡工作原理 370
CF卡协议 371
CF卡接口应用电路 372
CF卡基本操作及使用示例 373
CF应用程序编程实例 374
5.8 IDE硬盘挂接 377
IDE接口介绍 377
IDE硬盘读/写操作 378
IDE硬盘接口应用电路 379
IDE接口应用编程 380
在Linux下挂接硬盘的流程 384
5.9 RS-485通信 384
RS-422与RS-485串行接口标准 384
RS-485串行接口应用电路 385
RS-485通信应用编程 386
程序测试方法及步骤 388
5.10 GPS全球定位 389
GPS简介 389
GPS原理 389
GPS定位信息的提取 390
GPS接口应用电路 391
GPS应用程序编程实例 391
实验方法与步骤 396
5.11 GPRS/GSM无线通信 396
GPRS简介 396
GSM工作原理 396
AT命令语法 397
SMS短消息发送和接收模式 397
GPRS硬件电路设计 400
GPRS/GSM发短消息应用编程实例 401
实验测试方法与步骤 405
5.12小结 405
思考与练习 405
第6章 S3C2410开发平台Bootloader详解 407
6.1 Bootloader的介绍 407
6.2 Bootloader操作模式 407
6.3 Bootloader的启动流程 408
6.4 Bootloader的vivi 409
vivi简介 409
vivi的配置与编译 410
vivi代码第一阶段 410
vivi代码第二阶段 418
6.5 Bootloader之U-Boot 437
U-Boot简介 437
U-Boot主要目录结构 438
U-Boot支持的主要功能 438
U-Boot在S3C2410上的移植 438
6.6自行开发S3C2410的Bootloader 448
Bootloader的功能说明和结构框架 449
Bootloader的应用编程 449
测试方法及步骤 452
6.7小结 453
思考与练习 453
第7章 μC/OS-II在ARM9上的移植 454
7.1 μC/OS-II介绍 454
7.2 μC/OS-II移植 454
OS_CPU.H 455
OS_CPU_C.C文件 457
处理器相关汇编部分OS_CPU_A.S实现 460
7.3 μC/OS-II任务之间的通信与同步方式 464
信号量 464
邮箱 464
消息队列 465
7.4简单多任务程序编程 465
多任务主程序 465
任务1 void Taskl(void*Id) 466
任务2 void Task2(void*Id) 466
主测试函数Main 467
7.5小结 467
思考与练习 468
第8章 WinCE系统在ARM9上的移植 469
8.1 WinCE的安装 469
安装开发环境 469
安装目录 470
构建新的平台 471
新平台的配置、编译 475
8.2 WinCE的image的运行 477
通过USB口下载运行WinCE映像 477
通过以太网烧写WinCE映像文件 479
8.3在WinCE和桌面系统之间建立通信连接 484
8.4 WinCE结构与开发 488
WinCE开发流程 488
用户开发WinCE控件驱动程序的流程 488
用户硬件平台和WinCE内核的接口程序的开发步骤 490
执行中断相关函数 496
执行实时时钟和定时器功能 499
配置寄存器 501
使能电源管理 501
8.5小结 501
思考与练习 501
第9章 Linux系统在ARM9平台的移植 502
9.1移植的概念 502
9.2 Linux内核结构与移植 502
内核结构 503
Linux操作系统移植 504
9.3阅读 ARM Linux内核源码 510
编译环境的建立 510
安装编译工具 512
编译Linux内核 512
9.4 CRAMFS根文件系统的制作 515
9.5 Linux设备驱动程序概述 516
设备驱动和文件系统的关系 516
Linux设备驱动程序接口 517
程序的设备号和入口点 518
Linux驱动程序的加载 519
9.6 Linux下字符设备驱动的添加 519
字符设备的驱动源程序 519
该驱动程序的Makefile文件 523
该驱动相应的测试程序 523
测试过程 524
将应用程序添加到根文件系统 525
9.7 Linux下添加音频设备驱动 525
9.8 Linux下添加IIC总线驱动 528
Linux下IIC总线驱动程序体系结构 528
S3C2410上的IIC总线驱动程序分析 528
IIC总线驱动测试程序 532
9.9 Linux终端与控制台体系 534
Linux终端概述 534
Linux控制台的初始化过程 535
Linux启动命令行与控制台定义 537
控制台与printk输出 539
Linux串口驱动程序与分析 540
Linux串口的应用 545
通过Linux串口实现GPRS拨号上网 547
9.10 Linux下如何挂载U盘 549
9.11小结 552
思考与练习 552
第10章 基于S3C2410平台图形系统开发 553
10.1嵌入式系统下Microwindows的实现 553
两种API: Win32和Nano-X 554
创建一个简单的Nano-X应用程序 556
Expose event机制 557
10.2嵌入式系统下MiniGUI的实现 559
图形用户界面 MiniGUI简介 559
MiniGUI在S3C2410处理器上的移植过程 559
10.3认识Qt/Embedded嵌入式工具开发包 561
Qt介绍 562
Qt/Embedded系统要求 563
Qt架构 564
10.4 Qt/Embedded嵌入式图形开发基础 565
Qt/Embedded开发环境的安装 565
Qt/Embedded开发环境 567
窗体 570
Qt图形设计器对话框 576
Qt桌面外形与感觉 581
Qt/Embedded国际化 582
10.5 Qt/Embedded实战应用开发 583
嵌入式硬件开发平台的选择 584
安装Qt/Embedded工具开发包 585
交叉编译Qt/Embedded的库 585
Hello, World的例子 586
发布一个Qt/Embedded应用到FS241.OXP开发平台 593
添加一个Qt/Embedded应用到QPE 595
10.6小结 596
思考与练习 597
第11章 基于S3C2410完整开发系统的设计 598
11.1开发系统硬件电路设计 598
开发板的资源 598
开发板的硬件布置框图 598
核心板电路分析 599
扩展板电路分析 606
存储器空间分配 611
PCB设计方法 611
电路调试方法 614
11.2软件驱动的开发与调试 615
11.3小结 618
思考与练习 618
附录 书中常用术语缩写解析 619
参考文献 623