嵌入式系统设计及应用

2011年北京大学出版社出版的图书
《嵌入式系统设计及应用》是北京大学出版社出版发行邢吉生等著作的实体书。
内容简介
嵌入式系统设计及应用
《嵌入式系统设计及应用》以ARM9系列微处理器ARM920T为基础，系统介绍了嵌入式系统的基本概念、开发的基本技能、简单驱动电路及其程序的设计方法。通过对《嵌入式系统设计及应用》的学习，读者能够掌握嵌入式系统开发设计的基础知识和基本技能，达到快速入门的效果，而且可以较全面地掌握嵌入式系统的整个开发流程。
《嵌入式系统设计及应用》共分为3篇：第1篇介绍了嵌入式系统基础，主要讲述硬件基本结构和指令系统：第2篇介绍了嵌入式Linux基础开发，主要讲述系统内核的基本知识和开发编译工具的使用；第3篇介绍了嵌入式Linux应用开发，主要讲述设备驱动程序、文件管理、图形界面等设计的方法和流程。《嵌入式系统设计及应用》从最简单的点亮LED开始，由浅入深地讲解，引领学生步入嵌入式Linux开发的大门。从Linux的理论介绍到Linux内核开发、驱动开发及应用程序开发的整个学习过程，《嵌入式系统设计及应用》始终遵循理论和实践相结合的教学理念。
《嵌入式系统设计及应用》由浅入深，循序渐进，不仅适合刚接触嵌入式Linux的初学者，还可作为大、中专院校嵌入式系统应用及其相关专业本科生、研究生的教材，也可供相关工程技术人员参考。
编辑推荐
《嵌入式系统设计及应用》嵌入式系统基础，领你熟悉硬件基本结构和指令系统，Linux基础开发，带你掌握内核基本知识和编译工具，嵌入式应用开发，为你打开驱动和图形等设计的大门。
序言
嵌入式系统是以应用为中心，以计算机技术为基础，软硬件可定制，适用于不同应用场合，对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序4个部分组成，用于实现对其他设备的控制、监视或管理等功能。嵌入式系统已经广泛应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域，人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。
本书分3部分，共12章，逐步引导具有不同专业背景和基础的读者进入嵌入式系统开发领域。
第1章到第5章为第一部分。其中，第1章介绍了嵌入式系统的基本知识；第2章介绍了Linux系统在上位机中的安装及其基本操作；第3章介绍了IAnux系统的常用命令和文本编辑工具：第4章介绍了嵌入式系统开发中经常用于连接上位机和下位机的I,inux网络服务；第5章介绍了嵌入式系统开发中经常用到的Linux系统下的C语言编译、调试和工程管理工具。
目录
第一部分　嵌入式操作系统基础　1
第1章　嵌入式系统概论　1
1.1　嵌入式系统的定义　1
1.2　嵌入式系统的发展过程　2
1.3　嵌入式系统的开发流程　3
1.4嵌入式操作系统介绍　5
习题　6
第2章　Linux系统介绍　7
2.1　Linux的特点　7
2.2　Linux的安装　9
2.2.1　安装方式　9
2.2.2　以虚拟机方式安装Linux　10
2.2.3　以多操作系统方式安装Linux　17
2.3　X-Window图形界面操作　18
2.3.1　桌面组件　19
2.3.2　面板　22
2.3.3　显示配置　22
2.3.4　常用应用程序　23
2.4　网络配置　27
2.4.1　图形界面方式　28
2.4.2　命令行方式　29
习题　34
第3章　Linux常用命令　35
3.1　Linux文件与目录　35
3.1.1　Linux中的文件类型　35
3.1.2　常用目录　36
3.1.3　路径　37
3.1.4　对文件操作的用户分类　37
3.1.5　文件操作权限　37
3.1.6　文件名通配符　38
3.2　常用命令　38
3.2.1　文件类　38
3.2.2　权限类　52
3.2.3　磁盘类　55
3.2.4　模块类　57
3.3　输入输出转向和管道　59
3.3.1　输入转向　59
3.3.2　输出转向　59
3.3.3　管道　59
3.4　vi编辑器的使用　59
3.4.1　启动vi编辑器　60
3.4.2　命令行状态　60
3.4.3　编辑状态　62
习题　62
第4章　与嵌入式系统开发相关的Linux服务　63
4.1　TFTP服务　63
4.1.1　检测与安装软件包　63
4.1.2　服务器端设置　65
4.1.3　启动TFTP服务　66
4.1.4　设置防火墙　67
4.1.5　TFTP服务客户端　67
4.2　Telnet　70
4.2.1　Telnet简介　70
4.2.2　启动Telnet服务　70
4.2.3　测试服务　70
4.2.4　定制服务　71
4.3　NFS　72
4.3.1　NFS介绍　72
4.3.2　服务器端的配置　72
4.3.3　启动服务　73
4.3.4　定制防火墙　73
4.3.5　使用服务　74
习题　74
第5章　Linux中的C语言编程　75
5.1　GCC　75
5.1.1　GCC介绍　75
5.1.2　GCC的使用　76
5.1.3　使用举例　77
5.2　GDB　77
5.2.1　GDB介绍　77
5.2.2　GDB的使用　77
5.2.3　GDB的使用举例　78
5.3　make工具　79
5.3.1　make工具介绍　79
5.3.2　makefile文件　79
5.3.3　make使用举例　80
习题　81
第二部分ARM体系结构和指令系统　82
第6章ARM处理器82
6.1　ARM公司简介　82
6.2　ARM处理器的特点及其应用领域　83
6.3　ARM ISA概述　84
6.4　ARM处理器系列　88
6.4.1　ARM7系列　89
6.4.2　ARM9系列　90
6.4.3　ARM9E系列　90
6.4.4　ARM10E系列　91
6.4.5　ARM11系列　91
6.4.6　Cortex系列　92
6.4.7　SecurCore系列　93
6.5ARM处理器编程模型　94
6.5.1　数据类型　94
6.5.2　处理器模式　94
6.5.3　寄存器组织　95
6.5.4　异常处理机制　98
6.5.5　存储器组织结构　99
习题　100
第7章ARM指令集101
7.1　条件执行　101
7.2　操作数预处理　103
7.3　运算类指令　107
7.4　控制类指令　119
7.5　传送类指令　126
7.6　Thumb指令集概述　133
习题　133
第8章　ARM汇编语言程序设计　134
8.1　用ADS调试ARM汇编语言程序　134
8.1.1　编辑ARM汇编语言源程序　135
8.1.2　在命令行方式下调试　136
8.1.3　在IDE环境下调试　136
8.2　ARM汇编语言程序基本结构　140
8.2.1　ARM汇编语言语句格式　140
8.2.2　ARM汇编语言程序格式　141
8.3　ARM汇编语言程序中的符号和表达式　143
8.3.1　ARM汇编语言中的符号　143
8.3.2　ARM汇编语言中的表达式　144
8.4　ARM汇编语言伪操作　148
8.4.1　符号定义伪操作　148
8.4.2　数据定义伪操作　150
8.4.3　杂项伪操作　154
8.4.4　汇编控制伪操作　160
8.4.5　信息报告伪操作　161
8.4.6　框架描述伪操作　162
8.5　ARM汇编语言程序伪指令　163
8.5.1　ADR　163
8.5.2　ADRL　164
8.5.3　LDR　165
8.6　ARM汇编语言程序宏指令　167
8.7　ARM汇编语言程序子程序　169
8.8　GNU ARM汇编简介　170
8.8.1　GNU ARM汇编语言程序的基本结构和程序运行环境　170
8.8.2　GNU ARM汇编语言伪操作　171
8.8.3　GNU ARM汇编语言其他主要操作符　172
习题　172
第9章　C语言与ARM汇编语言的混合编程　173
9.1　ATPCS概述　173
9.1.1　寄存器的使用规则　174
9.1.2　数据栈使用规则　174
9.1.3　参数传递规则　175
9.2　使用内嵌汇编器　175
9.2.1　内嵌汇编的语法格式　176
9.2.2　内嵌汇编指令的用法　176
9.2.3　内嵌汇编指令应用举例　177
9.3　从汇编代码中访问C程序全局变量　180
9.4　ARM汇编程序与C程序的相互调用　181
9.4.1　ARM汇编程序调用C程序　181
9.4.2　C程序调用ARM汇编程序　183
9.5　C语言与ARM汇编混合编程的实例　184
9.5.1　安装UArmJtag　184
9.5.2　建立工程　185
9.5.3　编译链接工程　189
9.5.4　调试程序　190
习题　191
第三部分　嵌入式实验　192
第10章　建立嵌入式系统开发环境　192
10.1　认识博创经典UP-TECH-S2410/P270-DVP实验箱　192
10.2　建立开发环境　193
10.2.1　实验目的　193
10.2.2　实验设备　193
10.2.3　实验内容　193
10.2.4　实验步骤　194
10.2.5　习题　195
10.3　给下位机烧写软件系统　196
10.3.1　实验目的　196
10.3.2　实验设备　196
10.3.3　实验内容　196
10.3.4　实验步骤　196
10.3.5　习题　199
第11章　基础实验　200
11.1　熟悉Linux开发环境　200
11.1.1　实验目的　200
11.1.2　实验设备　200
11.1.3　实验内容　200
11.1.4　实验步骤　200
11.1.5　习题　202
11.2　多线程应用程序设计　202
11.2.1　实验目的　202
11.2.2　实验设备　203
11.2.3　实验内容　203
11.2.4　多线程程序设计　203
11.2.5　实验步骤　208
11.2.6　习题　209
11.3　串行端口程序设计　209
11.3.1　实验目的　209
11.3.2　实验设备　209
11.3.3　实验内容　209
11.3.4　实验原理　209
11.3.5　实验步骤　216
11.3.6　习题　217
11.4　A/D接口实验　217
11.4.1　实验目的　217
11.4.2　实验设备　217
11.4.3　实验内容　217
11.4.4　实验原理　218
11.4.5　实验步骤　225
11.4.6　习题　225
11.5　D/A接口实验　226
11.5.1　实验目的　226
11.5.2　实验设备　226
11.5.3　实验内容　226
11.5.4　实验原理　226
11.5.5　实验步骤　229
11.5.6　习题　229
11.6　CAN总线通信实验　230
11.6.1　实验目的　230
11.6.2　实验设备　230
11.6.3　实验内容　230
11.6.4　实验原理　230
11.6.5　实验步骤　235
11.6.6　习题　236
11.7　RS-485通信实验　237
11.7.1　实验目的　237
11.7.2　实验设备　237
11.7.3　实验内容　237
11.7.4　实验原理　237
11.7.5　实验步骤　241
11.7.6　习题　241
11.8直流电动机实验　242
11.8.1　实验目的　242
11.8.2　实验设备　242
11.8.3　实验内容　242
11.8.4　实验原理　242
11.8.5　实验步骤　247
11.8.6　习题　248
11.9　7段LED和点阵式LED实验　248
11.9.1　实验目的　248
11.9.2　实验设备　248
11.9.3　实验内容　248
11.9.4　实验原理　249
11.9.5　实验步骤　252
11.9.6　习题　252
第12章　扩展实验　253
12.1　小键盘实验　253
12.1.1　实验目的　253
12.1.2　实验设备　253
12.1.3　实验内容　253
12.1.4　实验原理　253
12.1.5　实验步骤　257
12.1.6　习题　257
12.2　嵌入式Web服务器　258
12.2.1　实验目的　258
12.2.2　实验设备　258
12.2.3　实验内容　258
12.2.4　实验原理　258
12.2.5　实验步骤　264
12.2.6　习题　264
12.3　利用GDBServer在下位机中调试执行程序　265
12.3.1　实验目的　265
12.3.2　实验设备　265
12.3.3　实验内容　265
12.3.4　实验步骤　265
12.3.5　习题　266
12.4　设备驱动程序设计实验　267
12.4.1　实验目的　267
12.4.2　实验设备　267
12.4.3　实验内容　267
12.4.4　实验原理　267
12.4.5　实验步骤　279
12.4.6　习题　279
12.5　字符设备驱动实例——触摸屏驱动实验　280
12.5.1　实验目的　280
12.5.2　实验设备　280
12.5.3　实验内容　280
12.5.4　实验原理　280
12.5.5　实验步骤　290
12.5.6　习题　290
12.6　LCD驱动控制实验　291
12.6.1　实验目的　291
12.6.2　实验设备　291
12.6.3　实验内容　291
12.6.4　实验原理　291
12.6.5　实验步骤　302
12.6.6　习题　303
12.7　音频驱动及应用实验　303
12.7.1　实验目的　303
12.7.2　实验设备　303
12.7.3　实验内容　303
12.7.4　实验原理　303
12.7.5　实验步骤　313
12.7.6　习题　313
12.8　SD卡使用实验　313
12.8.1　实验目的　313
12.8.2　实验设备　313
12.8.3　实验内容　313
12.8.4　实验原理　314
12.8.5　实验步骤　327
12.8.6　习题　328
参考文献　329