前 言................................................................................................................................................1
第一章 嵌入式系统的硬件构成.....................................................................................................3
1.1. 嵌入式系统硬件...............................................................................................................3
1.1.1. 嵌入式处理器........................................................................................................3
1.1.1.1. 嵌入式微处理器(Embedded Microprocessor Unit, EMPU) ......................3
1.1.1.2. 嵌入式微控制器(Microcontroller Unit, MCU)..........................................4
1.1.1.3. 嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP).............4
1.1.1.4. 嵌入式片上系统(System On Chip)............................................................5
1.1.1.5. 嵌入式处理器的选择.................................................................................5
1.1.2. 存储器....................................................................................................................6
1.1.2.1. ROM.............................................................................................................7
1.1.2.2. RAM.............................................................................................................7
1.1.3. 输入输出设备........................................................................................................8
1.1.3.1. 液晶显示.....................................................................................................8
1.1.3.2. 触摸屏.........................................................................................................9
1.1.3.3. 语音输入输出技术...................................................................................10
1.1.3.4. 键盘...........................................................................................................11
1.1.4. 电源转换与管理..................................................................................................13
1.1.4.1. 电源IC 分类.............................................................................................13
1.1.4.2. 电源IC 的特点.........................................................................................14
1.1.4.3. 电源IC 选用指南.....................................................................................14
1.2. 嵌入式系统硬件开发相关技术.....................................................................................15
1.2.1. 接口技术..............................................................................................................15
1.2.1.1. 并行接口...................................................................................................16
1.2.1.2. 串口...........................................................................................................16
1.2.1.3. USB............................................................................................................17
1.2.1.4. PCMCIA 和CF..........................................................................................18
1.2.1.5. 红外线接口...............................................................................................19
1.2.2. 总线......................................................................................................................20
1.2.2.1. ISA .............................................................................................................20
1.2.2.2. PCI .............................................................................................................20
1.2.2.3. I2C 总线.....................................................................................................21
1.2.2.4. SPI 总线.....................................................................................................21
1.2.2.5. PC104 总线................................................................................................22
1.2.2.6. CAN 总线..................................................................................................23
1.2.3. 嵌入式系统开发常用的硬件调试和编程技术..................................................24
1.2.3.1. 微代码支持的串口调试...........................................................................24
1.2.3.2. 编程技术...................................................................................................24
1.2.3.3. JATG 与IEEE1149 协议简介...................................................................25
1.2.4. 3.3V 和5V 装置的互连.......................................................................................26
1.3. 嵌入式系统开发示例——EZ 开发板...........................................................................27
1.3.1. 系统性能..............................................................................................................27
1.3.2. 系统硬件设计......................................................................................................28
1.3.2.1. CPU 与存储器模块...................................................................................28
- ii -
1.3.2.2. LCD 显示模块...........................................................................................28
1.3.2.3. 串口模块...................................................................................................29
1.3.2.4. 电源模块...................................................................................................29
1.3.2.5. 进入BOOTSTRAP 电路模块..................................................................30
1.3.3. TQFP 和LQFP 器件的焊接方法......................................................................30
1.3.4. 硬件调试..............................................................................................................31
第二章 操作系统...........................................................................................................................32
2.1. 基础知识.........................................................................................................................32
2.1.1. 操作系统功能......................................................................................................32
2.1.2. 操作系统发展史..................................................................................................32
2.1.3. Linux 与嵌入式Linux..........................................................................................33
2.2. 操作系统内核.................................................................................................................34
2.2.1. 内存管理..............................................................................................................34
2.2.1.1. 内存管理功能...........................................................................................34
2.2.1.2. 内存分割...................................................................................................34
2.2.1.3. 虚拟内存...................................................................................................35
2.2.1.4. Linux 的内存管理机制.............................................................................37
2.2.2. 进程与中断管理..................................................................................................40
2.2.2.1. 进程描述与控制.......................................................................................41
2.2.2.2. 并发控制:互斥与同步...........................................................................45
2.2.2.3. 并发控制:死锁处理...............................................................................52
2.2.2.4. 中断及中断处理.......................................................................................56
2.2.2.5. Linux 的进程与中断管理机制.................................................................58
2.2.3. 调度机制..............................................................................................................63
2.2.3.1. 调度类型...................................................................................................63
2.2.3.2. 单处理器调度...........................................................................................65
2.2.3.3. 多处理器调度...........................................................................................67
2.2.3.4. 实时调度...................................................................................................69
2.2.3.5. Linux 的调度机制.....................................................................................72
2.2.4. I/O 设备................................................................................................................74
2.2.4.1. I/O 设备描述参数......................................................................................74
2.2.4.2. I/O 技术的演变..........................................................................................74
2.2.4.3. I/O 设备逻辑描述......................................................................................75
2.2.4.4. I/O 缓冲技术.............................................................................................77
2.2.4.5. 磁盘调度...................................................................................................79
2.2.5. 文件管理..............................................................................................................82
2.2.5.1. 文件与文件系统.......................................................................................82
2.2.5.2. 文件组织与访问.......................................................................................83
2.2.5.3. 文件共享...................................................................................................86
2.2.5.4. 记录分块...................................................................................................86
2.2.5.5. 外围存储设备管理...................................................................................87
2.2.5.6. Linux 的文件系统管理.............................................................................88
2.3. 用户界面.........................................................................................................................89
2.3.1. 图形用户界面......................................................................................................90
- iii -
2.3.1.1. 基本知识...................................................................................................90
2.3.1.2. 关键技术...................................................................................................90
2.3.2. 智能化用户界面..................................................................................................92
2.3.2.1. Agent 技术.................................................................................................92
2.3.2.2. Agent 技术与用户界面的结合.................................................................95
2.3.3. Linux 下的用户界面............................................................................................96
2.3.3.1. X Window 简介.........................................................................................96
2.3.3.2. X 服务器....................................................................................................97
2.3.3.3. 窗口管理器...............................................................................................99
第三章 嵌入式Linux ..................................................................................................................100
3.1. 嵌入式Linux 内核.......................................................................................................100
3.1.1 嵌入式Linux 综述..............................................................................................100
3.1.2 uCLinux ...............................................................................................................100
3.1.2.1 uClinux 的内存管理.................................................................................101
3.1.2.2 uCLinux 内核结构....................................................................................101
3.1.2.3 内存保护..................................................................................................102
3.1.2.4 编程接口的改变......................................................................................102
3.1.2.5 uCLinux 的应用程序库............................................................................103
3.1.2.6 uCLinux 内核运行方式............................................................................104
3.1.2.7. uClinux 支持的文件系统........................................................................104
3.2. 嵌入式设备的文件系统...............................................................................................104
3.2.1. 闪存(Flash Memory)介绍............................................................................104
3.2.2. 第二版扩展文件系统Ext2fs(Extended 2 Filesystem) ................................104
3.2.3. 临时文件系统tmpfs(Temporary Filesystem) ..............................................105
3.2.4. 日志闪存文件系统版本 2-JFFS2(Journalling Flash Filesystem) ..106
3.2.4.1 概述...........................................................................................................106
3.2.4.2. JFFS 的设计原理:.................................................................................106
3.3 嵌入式用户界面............................................................................................................108
3.3.1. GUI 开发工具综述.............................................................................................108
3.3.1.1. Xfree86 4.X(带帧缓冲区支持的 X11R6.4)......................................108
3.3.1.2. Microwindows..........................................................................................109
3.3.1.3. FLTK........................................................................................................109
3.3.1.4. Qt/Embedded............................................................................................110
3.3.2 MicroWindows 剖析............................................................................................ 111
3.3.2.1. 分层设计................................................................................................. 111
3.3.2.2. 设备驱动层............................................................................................. 111
3.3.2.3. 设备无关的图形引擎层......................................................................... 111
3.3.2.4. API(基于Win32)................................................................................112
3.3.2.5. 消息传递机制.........................................................................................112
3.3.2.6. 窗口操作.................................................................................................112
3.3.2.7. 客户区域和绝对坐标.............................................................................113
3.3.2.8. 设备上下文.............................................................................................113
3.3.3. Microwindows 的移植和中文化........................................................................113
3.3.3.1. 针对uCLinux 所作的修改.....................................................................114
- iv -
3.3.3.2. 中文化处理.............................................................................................114
3.3.4. 应用实例-电子文本阅读器............................................................................115
3.3.4.1 功能要求以及方案选择:.......................................................................115
3.3.4.2 具体实现...................................................................................................115
第四章 交叉编译.........................................................................................................................117
4.1. 编译原理.......................................................................................................................117
4.1.1. 基础知识............................................................................................................117
4.1.1.1. 编译的一般过程.....................................................................................117
4.1.1.2. 与编译器相关的程序.............................................................................118
4.1.1.3. 编译器的移植.........................................................................................119
4.1.2. 词法分析............................................................................................................119
4.1.2.1. 词法的形式化描述.................................................................................119
4.1.2.2. 词法分析程序的设计.............................................................................122
4.1.3. 语法分析............................................................................................................123
4.1.3.1. 自顶向下的语法分析.............................................................................124
4.1.3.2. 自底向上的语法分析.............................................................................126
4.1.4. 中间代码............................................................................................................128
4.1.5. 代码优化............................................................................................................130
4.2. 交叉编译技术...............................................................................................................133
4.2.1. 交叉编译............................................................................................................133
4.2.2. GCC 交叉编译器................................................................................................134
4.2.2.1. GCC 编译流程.........................................................................................134
4.2.2.2. Linux 环境下的GCC 交叉编译器.........................................................137
第五章 嵌入式Linux 的软件开发环境.....................................................................................142
5.1. 交叉编译环境...............................................................................................................142
5.1.1. 编译开发环境的建立........................................................................................142
5.1.1.1 安装交叉编译环境...................................................................................142
5.1.1.2. 添加设备驱动和内核模块.....................................................................142
5.1.2. 可执行文件........................................................................................................143
5.1.2.1. Coff 文件格式..........................................................................................143
5.1.2.2. elf 文件格式.............................................................................................143
5.1.2.3. flat 文件格式...........................................................................................143
5.2. 调试技术.......................................................................................................................144
5.2.1. 常见调试方法....................................................................................................144
5.2.2. 内存调试............................................................................................................145
5.2.2. 系统调用跟踪....................................................................................................148
5.2.3. 程序调试............................................................................................................149
5.3. 系统引导和内核启动...................................................................................................154
5.3.1. Bootloader 程序的设计与实现..........................................................................154
5.3.1.1. 硬件平台的通信.....................................................................................154
5.3.1.2. 硬件平台初始化程序.............................................................................154
5.3.1.3. 硬件平台监控程序.................................................................................155
5.3.2. uCLinux 移植......................................................................................................155
5.3.2.1. 第一阶段.................................................................................................155
- v -
5.3.2.2. 第二阶段.................................................................................................160
第六章 设备驱动程序.................................................................................................................161
6.1. 概述...............................................................................................................................161
6.1.1. 设备类型............................................................................................................162
6.1.2. 设备号................................................................................................................162
6.1.3. 模块化编程........................................................................................................163
6.2. 设备文件接口...............................................................................................................164
6.2.1. 用户访问接口....................................................................................................164
6.2.2. 文件操作............................................................................................................165
6.2.2.1. file_operations 结构................................................................................165
6.2.2.2. file 结构...................................................................................................167
6.2.3. I/O 操作..............................................................................................................167
6.3. 中断处理.......................................................................................................................169
6.3.1. 注册中断处理程序............................................................................................170
6.3.2. 实现中断处理程序............................................................................................172
6.4. 应用实例.......................................................................................................................173
6.4.1. 字符型设备........................................................................................................173
6.4.1.1. 按键.........................................................................................................173
6.4.1.2. 触摸屏.....................................................................................................175
6.4.2. 网络设备............................................................................................................184
6.4.2.1. 网络驱动的框架.....................................................................................184
6.4.2.2. 网卡驱动程序的加载方法.....................................................................187
6.4.2.3. CS8900A 芯片特点.................................................................................188
6.4.2.4. CS8900A 芯片驱动程序的实现.............................................................190
6.4.2.5. 网络设备驱动程序的编译.....................................................................196
6.4.2.6. 网络驱动程序的测试.............................................................................197
附 录............................................................................................................................................199
A. 参考文献.........................................................................................................................199
B. 参考网站.........................................................................................................................200
前 言
近些年来,随着以计算机技术,通讯技术为主的信息技术的快速发展和Internet 的广泛
应用,传统的控制学科正在发生变革,出现了许多新的生长点。伴随而来的一个现象是控制
专业的相当多的学生在毕业后进入了计算机,通讯行业,以致有人说学控制没有用,自动
化专业可以取消了。这些情况的出现使我们控制教育工作者反复思考,传统的控制应如何
拓宽它的领域?控制专业应该教什么才使学生感到有用?
近些年我们在嵌入式系统及其应用的科研工作中采用了信息产业中的最新技术,打破
了学科之间的界限,感到控制的出路原来很多,尽管处处是挑战。过去我们熟悉的“控制”
有很大的局限性.:一是不考虑硬件的限制, 二是不考虑控制器的复杂性及计算能力, 三是
不注重实用性和效益。在微处理器,微传感器和微型执行元件不断推出新产品的形势下,
控制的思路与手段正经历着巨大的变化。在经过一番艰苦的实践摸索之后,我们对控制学
科的研究和教学有了一些新的认识。本教材就是在我们这些年科研工作的基础上总结出来
的,它还比较粗糙,还需要今后花大力气把它完善与提高。现在拿出来作为试用教材供大
家参考,希望能为控制学科教学内容的更新作出我们的一点贡献。
嵌入式系统的定义
嵌入式系统是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、
微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系
统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各
种自动化处理任务。嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和
通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以满足系统对功
能、成本、体积和功耗等要求。
最简单的嵌入式系统仅有执行单一功能的控制能力,在唯一的ROM 中仅有实现单一功
能的控制程序,无微型操作系统。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电
脑(HPC)等,具有与PC 几乎一样的功能。实质上与PC 的区别仅仅是将微型操作系统与应
用软件嵌入在ROM、RAM 和/或FLASH 存储器中,而不是存贮于磁盘等载体中。很多复杂的
嵌入式系统又是由若干个小型嵌入式系统组成的。
嵌入式系统的硬件/软件特征
嵌入式系统的硬件必须根据具体的应用任务,以功耗,成本,体积, 可靠性,处理能力等
为指标来选择。嵌入式系统的核心是系统软件和应用软件,由于存储空间有限,因而要求
软件代码紧凑,可靠,大多对实时性有严格要求。
早期的嵌入式系统设计方法,通常是采用“硬件优先”原则。即在只粗略估计软件任
务需求的情况下,首先进行硬件设计与实现。然后,在此硬件平台之上,再进行软件设计。
因而很难达到充分利用硬件软件资源,取得最佳性能的效果。同时,一旦在测试时发现问
题,需要对设计进行修改时,整个设计流程将重新进行,对成本和设计周期的影响很大。
这种传统的设计方法只能改善硬件/软件各自的性能,在有限的设计空间不可能对系统做出
较好的性能综合优化,在很大程度上依赖于设计者的经验和反复实验。
90 年代以来随着电子系统功能的日益强大和微型化,系统设计所涉及的问题越来越
多,难度也越来越大。同时硬件和软件也不再是截然分开的两个概念,而是紧密结合、相
互影响的。因而出现了软硬件协同(codesign)设计方法,即使用统一的方法和工具对软
- 2 -
件和硬件进行描述、综合、和验证。在系统目标要求的指导下,通过综合分析系统软硬件
功能及现有资源,协同设计软硬件体系结构,以最大限度地挖掘系统软硬件能力,避免由
于独立设计软硬件体系结构而带来的种种弊病,得到高性能低代价的优化设计方案。
嵌入式操作系统
目前流行的嵌入式操作系统可以分为两类:一类是从运行在个人电脑上的操作系统向
下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的Windows CE 及其新版本,
SUN 公司的Java 操作系统,朗讯科技公司的Inferno,嵌入式Linux 等。这类系统经过个
人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发
方式已被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。
另一类是实时操作系统,如WindRiver 公司的VxWorks,ISI 的pSOS,QNX 系统软件
公司的QNX,ATI 的Nucleus,中国科学院凯思集团的Hopen 嵌入式操作系统等,这类产
品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了精巧
的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控
制等领域中。
Linux 是90 年代以来逐渐成熟的一个开放源代码的操作系统。 PC 机上的Linux 版本
在全球数以百万计爱好者的合力开发下,得到了非常迅速的发展。90 年代末uClinux,
RTLinux 等相继推出,在嵌入式领域得到了广泛的关注,它拥有大批的程序员和现成的应
用程序,是我们研究开发工作的宝贵资源。
学习嵌入式系统的意义
从控制意义上说,嵌入式系统涉及系统最底层的,芯片级的信息处理与控制。在某种
意义上,对这些“微观”世界的了解与驾驭正是控制的真正目的。嵌入式系统与通常意义
上的控制系统在设计思路和总体架构方面有许多不同之处,而这些不同之处恰恰是传统控
制学科教学中较少教给学生的。在当今信息化社会中,嵌入式系统在人们的日常工作和生
活中所占的份额,可能已超过传统意义的控制系统,这就是为什么我们的学生感到学的没
有用,而有用的又没有学的原因。在嵌入式系统及开发环境方面,目前仍有许多问题尚在
研究发展之中,如,嵌入式系统的硬件软件协同设计方法;面向多目标,多任务的微内核
嵌入式操作系统;分布嵌入式系统的实时性问题,分布式计算,分布式信息交互与综合处
理;以及嵌入式系统的多目标交叉编译和交叉调试工具的研究等。我们希望通过这本教材
再配合我们的实验开发平台,学习嵌入式系统的一些基本理论和硬件软件综合设计的方法
与技能,亲自动手,实现一个嵌入式系统的解决方案,为今后的深入研究打下一个初步基
础。
“嵌入式系统”作为自动化学科一门理论与实际密切结合的,知识与技术含量较高的综
合性专业课程,必将随着信息产业的发展而逐渐趋于成熟。
本教材第一章由刘森同学执笔,第二,四章由杨占敏同学执笔,陈清阳同学参与编写了
其中一部分,第三,五章由钟忻同学执笔,第六章由杜威,李强同学执笔。沈卓立,郭东
航,桂伟力,陈建平等同学的工作成果和经验许多被吸收到本教材中。在此,向他们表示
诚挚的谢意。
全书由慕春棣策划和组织编写,并负责审校。由于我们的水平有限,许多问题还在摸索
之中,加之编写比较仓促,教材中肯定有许多错误和不确切之处,恳请读者批评指正。
慕春棣
2003 年 1 月于清华园
- 3 -
第一章 嵌入式系统的硬件构成
1.1. 嵌入式系统硬件
嵌入式系统是以应用为中心,计算机技术为基础,软硬件可裁剪,适用于应用系统对功
能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统硬件一般包括处
理器、存储器、外设器件和电源等。
1.1.1. 嵌入式处理器
嵌入式系统的核心部件是各种类型的嵌入式处理器,据不完全统计,到2000 年全世界
嵌入式处理器的品种总量已经超过1000 多种,流行体系结构有30 几个系列,其中8051 体
系的占有多半。生产8051 单片机的半导体厂家有20 多个,共350 多种衍生产品,仅Philips
就有近100 种。现在几乎每个半导体制造商都生产嵌入式处理器,越来越多的公司有自己的
处理器设计部门。嵌入式处理器的寻址空间一般从64kB 到16MB,处理速度从0.1 MIPS 到
2000 MIPS,常用封装从8 个引脚到144 个引脚。根据其现状,嵌入式计算机可以分成下面
几类。
1.1.1.1. 嵌入式微处理器(Embedded Microprocessor Unit, EMPU)
嵌入式微处理器的基础是通用计算机中的CPU。在应用中,将微处理器装配在专门设
计的电路板上,只保留和嵌入式应用有关的功能,这样可以大幅度减小系统体积和功耗。
为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一
样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。
和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的
优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件。嵌入式微处
理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机。如STD-BUS、PC104
等。近年来,德国、日本的一些公司又开发出了类似“火柴盒”式名片大小的嵌入式计算机
系列OEM 产品,台湾研华公司也推出了类似的模组化系统SOM(System On Module)。
嵌入式处理器目前主要有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM
系列等。
嵌入式微处理器又可分为CISC 和RISC 两类。大家熟悉的大多数台式PC 都是使用CISC
微处理器,如Intel 的x86。 RISC 结构体系有两大主流:Silicon Graphics 公司(硅谷图形公
司)的MIPS 技术,ARM 公司的Advanced RISC Machines 技术。此外Hitachi(日立公司)
也有自己的一套RISC 技术SuperH。
RISC 和CISC 是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结
构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效
的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:
(1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有
简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器
上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进
和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因
此,处理特殊任务效率较高。
- 4 -
(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器
操作指令多,操作直接。
(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,
不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序社设
计相对容易,效率较高。
(4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一
条指令执行结束后响应中断。
(5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包
含有丰富的电路单元,因而功能强、面积大、功耗大。
(6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技
术;CISC 微处理器结构复杂,设计周期长。
(7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC
微处理器结构复杂,功能强大,实现特殊功能容易。
(8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适
合于专用机;而CISC 机器则更适合于通用机。
1.1.1.2. 嵌入式微控制器(Microcontroller Unit, MCU)
嵌入式微控制器又称单片机,顾名思义,就是将整个计算机系统集成到一块芯片中。
嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、
总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、Flash
RAM、EEPROM 等各种必要功能模块。为适应不同的应用需求,一般一个系列的单片机
具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配
置及封装。这样可以使单片机最大限度地和应用需求相匹配,从而减少功耗和成本。
和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗
和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上资源
一般比较丰富,适合于控制,因此称微控制器。
嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、
MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300 等。另外还有许多半
通用系列,如支持USB 接口的MCU 8XC930/931、C540、C541。目前MCU 占嵌入式系统
约70%的市场份额。
特别值得注意的是近年来提供X86 微处理器的著名厂商AMD 公司, 将
Am186CC/CH/CU 等嵌入式处理器称之为Microcontroller, MOTOROLA 公司把以Power PC
为基础的PPC505 和PPC555 亦列入单片机行列。TI 公司亦将其TMS320C2XXX 系列DSP
做为MCU 进行推广。
1.1.1.3. 嵌入式DSP 处理器(Embedded Digital Signal Processor,
EDSP)
DSP 处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP 算法,编译效率
较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP 算法正在大量进入嵌
入式领域,DSP 应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式
DSP 处理器。嵌入式DSP 处理器有两个发展来源,一是DSP 处理器经过单片化、EMC 改
造、增加片上外设成为嵌入式DSP 处理器,TI 的TMS320C2000/C5000 等属于此范畴;二
- 5 -
是在通用单片机或片上系统(SOC)中增加DSP 协处理器,例如Intel 的MCS-296。
推动嵌入式DSP 处理器发展的一个重要因素是嵌入式系统的智能化,例如各种带有智
能逻辑的消费类产品,生物信息识别终端,带有加解密算法的键盘,ADSL 接入、实时语
音压解系统,虚拟现实显示等。这类智能化算法一般都是运算量较大,特别是向量运算、
指针线性寻址等较多,而这些正是DSP 处理器的长处所在。
嵌入式DSP 处理器比较有代表性的产品是Texas Instruments 的 TMS320 系列和
Motorola 的DSP56000 系列。TMS320 系列处理器包括用于控制的C2000 系列,移动通信
的C5000 系列,以及性能更高的C6000 和C8000 系列。DSP56000 目前已经发展成为
DSP56000,DSP56100,DSP56200 和DSP56300 等几个不同系列的处理器。
DSP 的设计者们把重点放在了处理连续的数据流上。在嵌入式应用中,如果强调对连
续的数据流的处理及高精度复杂运算,则应该选用DSP 器件。
1.1.1.4. 嵌入式片上系统(System On Chip)
随着VLSI 设计的普及化及半导体工艺的迅速发展,可以在一块硅片上实现一个更为
复杂的系统,这就是System On Chip(SOC)。各种通用处理器内核将作为SOC 设计公司的
标准库,和许多其它嵌入式系统外设一样,成为VLSI 设计中一种标准的器件,用标准的
VHDL 等语言描述,存储在器件库中。用户只需定义出整个应用系统,仿真通过后就可以
将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大
部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功
耗、提高可靠性非常有利。
SOC 可以分为通用和专用两类。通用系列包括Motorola 的M-Core,某些ARM 系列器
件,Echelon 和Motorola 联合研制的Neuron 芯片等。专用SOC 一般专用于某个或某类系统
中,不为一般用户所知。一个有代表性的产品是Philips 的Smart XA,它将XA 单片机内核
和支持超过2048 位复杂RSA 算法的CCU 单元制作在一块硅片上,形成一个可加载JAVA
或C 语言的专用的SOC,可用于公众互联网如Internet 安全方面。
1.1.1.5. 嵌入式处理器的选择
针对各种嵌入式设备的需求,各个半导体芯片厂商都投入了很大的力量研发和生产适用
于这些设备的CPU 及协处理器芯片。用于嵌入式设备的处理器必须高度紧凑、低功耗、低
成本。针对每一类应用来说,开发者对处理器选择都是多种多样的,掌上电脑就是一例,如
表1.1.所示。
与全球PC 市场不同的是没有一种微处理器和微处理器公司可以主导嵌入式系统,仅
以32 位的CPU 而言,就有100 种以上嵌入式微处理器。由于嵌入式系统设计的差异性极
大,因此选择是多样化的。设计者在选择处理器时要考虑的主要因素有:
(1) 调查市场上已有的CPU 供应商。有些公司如Motorola、Intel、AMD 很有名气,
而有一些小的公司如QED 虽然名气很小,但也生产很优秀的微处理器。另外,
有一些公司,如ARM、MIPS 等,只设计但并不生产CPU,他们把生产权授予
世界各地的半导体制造商。ARM 是另外一种近年来在嵌入式系统有影响力的微
处理器制造商,ARM 的设计非常适合于小的电源供电系统。Apple 在Newton 手
持计算机中使用ARM,另外有几款数字无线电话也在使用ARM。
(2) 处理器的处理速度。一个处理器的性能取决于多个方面的因素:时钟频率,内部
- 6 -
寄存器的大小,指令是否对等处理所有的寄存器等。对于许多需用处理器的嵌入
式系统设计来说,目标不是在于挑选速度最快的处理器,而是在于选取能够完成
作业的处理器和I/O 子系统。如果你的设计是面向高性能的应用,那么建议你
考虑某些新的处理器,其价格极为低廉,如IBM 和Motorola 的Power PC。以前
Intel 的 i960 是销售极好的RISC 高性能芯片,但是最近几年却遇到强劲的对手,
让位于MIPS、SH 以及后起之星ARM。
(3) 技术指标。当前,许多嵌入式处理器都集成了外围设备的功能,从而减少了芯片
的数量,进而降低了整个系统的开发费用。开发人员首先考虑的是,系统所要求
的一些硬件能否无需过多的胶合逻辑(Glue Logic)就可以连接到处理器上。其
次是考虑该处理器的一些支持芯片,如DMA 控制器,内存管理器,中断控制器,
串行设备、时钟等的配套。
(4) 处理器的低功耗。嵌入式微处理器最大并且增长最快的市场是手持设备、电子记
事本、PDA、手机、GPS 导航器、智能家电等消费类电子产品,这些产品中选购
的微处理器典型的特点是要求高性能、低功耗。许多CPU 生产厂家已经进入了
这个领域。
(5) 处理器的软件支持工具。仅有一个处理器,没有较好的软件开发工具的支持,也
是不行的,因此选择合适的软件开发工具对系统的实现会起到很好的作用。
(6) 处理器是否内置调试工具。处理器如果内置调试工具可以大大大的缩小调试周
期,降低调试的难度。
(7) 处理器供应商是否提供评估板。许多处理器供应商可以提供评估板来验证你的理
论是否正确,验证你的决策是否得当。
表1.1. 部分掌上电脑处理器一览
厂家/型号 处理器 速度
卡西欧Cassiopeia E-100 系列 MIPS-based NEC VR4121 131 MHz
康柏
Aero 2100 系列
MIPS-based NEC VR4111 70 MHz
菲利浦
Nino 500 系列
MIPS-based Toshiba PR31700 75 MHz
惠普
Jornada 400 系列
Hitachi SH-3 7709a 100 MHz /133
MHz
3Com PalmPilotTM 系列 Motorola DragonBall
68VZ328 33 MHz
苹果
MessagePad 2000/2100
Intel StrongARM SA-110 160MHz
康柏
iPAQ H3650
Intel StrongARM SA-1110 206MHz
1.1.2. 存储器
存储器的物理实质是一组或多组具备数据输入输出和数据存储功能的集成电路,用于充
当设备缓存或保存固定的程序及数据。存储器按存储信息的功能可分为只读存储器ROM
(Read Only Memory)和随机存储器RAM(Random Access Memory)。
- 7 -
表1.2. 常用存储器分类
数据变更
种类 存储器单元
构造 读出速度
变更方式 写入速度
数据保
持功率
相对位
成本
EEPROM 2 晶体管+隧
道区域 同上 写动作(重
写)
10ms 不要 10
EPROM 1 晶体管 同上
紫外线擦
除+电气
写入
(1-9)×
100us 不要 1.2
FLASH 1 晶体管 同上
电器擦除
+电气写
入
10us 不要 1
OTP 1 晶体管 同上 不可变更数据(仅可一次
电气写入) 不要 0.8
ROM
MASK
ROM 1 晶体管 同上 不可 不要 0.5
DRAM 1 晶体管+1
电容器
(1-9)
×10ns
写动作(重
写)
(1-9)×
10ns
(1-
9)×
100uW
1
SRAM 4 晶体管+2
负载元件
(1-9)
×10ns
写动作(重
写)
(1-9)×
10ns
(1-
9)×
100uS
RAM 4
NVRAM
SRAM 单元
+EEPROM
单元
100ns
存储器动
作(片批)
(重写)
10ms 不要 1000
1.1.2.1. ROM
ROM 中的信息一次写入后只能被读出,而不能被操作者修改或删除,一般由芯片制造
商进行掩膜写入信息,价格便宜,适合于大量的应用。一般用于存放固定的程序,如监控程
序、汇编程序等,以及存放各种表格。EPROM(Erasable Programmable ROM)和一般的ROM
不同点在于它可以用特殊的装置擦除和重写它的内容,一般用于软件的开发过程。
1.1.2.2. RAM
RAM 就是我们平常所说的内存,主要用来存放各种现场的输入、输出数据,中间计
算结果,以及与外部存储器交换信息和作堆栈用。它的存储单元根据具体需要可以读出,
也可以写入或改写。RAM 只能用于暂时存放程序和数据,一旦关闭电源或发生断电,其
中的数据就会丢失。现在的RAM 多为MOS 型半导体电路,它分为静态和动态两种。静态
RAM 是靠双稳态触发器来记忆信息的;动态RAM 是靠MOS 电路中的栅极电容来记忆信
息的。由于电容上的电荷会泄漏,需要定时给与补充,所以动态RAM 需要设置刷新电路。
但动态RAM 比静态RAM 集成度高、功耗低,从而成本也低,适于作大容量存储器。所
以主内存通常采用动态RAM,而高速缓冲存储器(Cache)则使用静态RAM。
动态RAM 按制造工艺的不同,又可分为动态随机存储器(Dynamic RAM)、扩展数据
输出随机存储器(Extended Data Out RAM)和同步动态随机存储器(Synchromized Dynamic
- 8 -
RAM)。DRAM 需要恒电流以保存信息,一旦断电,信息即丢失。它的刷新频率每秒钟可达
几百次,但由于DRAM 使用同一电路来存取数据,所以DRAM 的存取时间有一定的时间间
隔,这导致了它的存取速度并不是很快。另外,在DRAM 中,由于存储地址空间是按页排
列的,所以当访问某一页面时,切换到另一页面会占用CPU 额外的时钟周期。EDO-RAM
同DRAM 相似,但在把数据发送给CPU 的同时可以去访问下一个页面,故而速度要比普通
DRAM 快15~30%。SDRAM 同DRAM 有很大区别,它使用同一个CPU 时钟周期即可完成
数据的访问和刷新,即以同一个周期、相同的速度、同步的工作,因而可以同系统总线以同
频率工作,可大大提高数据传输率,其速度要比DRAM 和EDO-RAM 快很多(比EDO-RAM
提高近50%)。
1.1.3. 输入输出设备
嵌入式系统中输入形式一般包括触摸屏、语音识别、按键、键盘和虚拟键盘。输出设备
主要有LCD 显示和语音输出。
1.1.3.1. 液晶显示
液晶显示屏(liquid crystal display:LCD)用于显示GUI(图象用户界面)环境下的文
字和图象数据,适用于低压、微功耗电路。
从选型角度,我们将常见液晶分为以下几类:段式(也称8 字)、字符型和图形点阵。
段式液晶:常见段式液晶的每字为8 段组成,即8 字和一点,只能显示数字和部分字母,
如果必须显示其它少量字符、汉字和其它符号,一般需要从厂家定做,可以将所要显示的字
符、汉字和其它符号固化在指定的位置,比如计算器和电子表所用的液晶。
字符型液晶:顾名思义,字符型液晶是用于显示字符和数字的,对于图形和汉字的显示
方式与段式液晶无异。字符型液晶一般有以下几种分辨率,8×1,16×1、16×2、16×4、20×2、
20×4、40×2、40×4 等,其中8(16、20、40)的意义为一行可显示的字符(数字)数,1(2、
4)的意义是指显示行数。
图形点阵式液晶:我们又将其分为TN、STN(DSTN)、TFT 等几类。这种分类需从液晶
材料和液晶效应讲起,请参考液晶显示原理。
TN 类液晶由于它的局限性,只用于生产字符型液晶模块;而ST(DSTN)类液晶模块一
般为中小型,既有单色的,也有伪彩色的;TFT 类液晶,则从小到大都有,而且几乎清一色
为真彩色显示模块。除了TFT 类液晶外,一般小液晶屏都内置控制器(控制器的概念相当于
显示卡上的主控芯片),直接提供MPU 接口;而大中液晶屏,要想控制其显示,都需要外加
控制器。
从色彩上分,LCD 显示屏分为单色、灰度和彩色三种,价格由低到高,单色LCD 的点
阵只能显示亮和暗,通常只用于低端的不需显示图形的场合;带灰度级的LCD 常用的有2bit
4 级灰度和4bit 16 级灰度,可以显示简单的带有层次的图形或图象;彩色LCD 的色彩以颜
色数为标准。彩色LCD 分为有源(Active)及无源(Passive)型两种,有源型就是常见的
TFT(Thin Film Transistor,薄膜晶体管)LCD,特点是显示清晰、分明、视角大,但价格高。
之所以如此,是因为有源LCD 更新屏幕的频率较快,而且它屏幕上的每个象素,分别是由
一个独立的晶体管控制的(无源的就不是)。这样,也导致了有源矩阵LCD 的一个缺点,就
是这种显示器要使用相当多的晶体管,造价也就高。无源型就是常见的STN(super-twist ed
nematic,超扭曲向列型) LCD,最显著优点是造价低。
按背光将液晶分类,有透射式、反射式、半反半透式液晶三类,因为液晶为被动发光
型显示器,所以必须有外界光源,液晶才会有显示,透射式液晶必须加上背景光,反射式
液晶需要较强的环境光线,半反半透式液晶要求环境光线较强或加背光。
字符类液晶,带背光的一般为LED 背光,以黄颜色(红、绿色调)为主。一般为+5V 驱
动。单色STN 中小点阵液晶,多用LED 或EL 背光,EL 背光以黄绿色(红、绿、白色调)
- 9 -
常见。一般用400—800Hz、70—100V 的交流驱动,常用驱动需要约1W 的功率。中大点阵
STN 液晶和TFT 类液晶,多为冷阴极背光灯管(CCFL/CCFT),背光颜色为白色(红、绿、
蓝色调)。一般用25k—100kHz,300V 以上的交流驱动。
1.1.3.2. 触摸屏
嵌入式系统中的触摸屏分为电阻式、电容式和电感式三种,其中电阻式触摸屏最为常用。
电阻触摸屏的工作部分一般由三部分组成,如图1.1.所示:两层透明的阻性导体层、
两层导体之间的隔离层、电极。阻性导体层选用阻性材料,如铟锡氧化物(ITO)涂在衬
底上构成,上层衬底用塑料,下层衬底用玻璃。隔离层为粘性绝缘液体材料,如聚脂薄膜。
电极选用导电性能极好的材料(如银粉墨)构成,其导电性能大约为ITO 的1000 倍。
图1.1. 电阻触摸屏结构
触摸屏工作时,上下导体层相当于电阻网络,如图1.2.所示。当某一层电极加上电压
时,会在该网络上形成电压梯度。如有外力使得上下两层在某一点接触,则在电极未加电
压的另一层可以测得接触点处的电压,从而知道接触点处的坐标。比如,在顶层的电极
(X+,X-)上加上电压,则在顶层导体层上形成电压梯度,当有外力使得上下两层在某一点
接触,在底层就可以测得接触点处的电压,再根据该电压与电极(X+)之间的距离关系,知
道该处的X 坐标。然后,将电压切换到底层电极(Y+,Y-)上,并在顶层测量接触点处的
电压,从而知道Y 坐标。这就是所有电阻技术触摸屏共同的最基本原理。对电阻式触摸屏
的控制有专门的芯片,如BB(Burr-Brown)公司生产的芯片ADS7843。很显然,控制芯片要
完成两件事情:其一,是完成电极电压的切换;其二,是采集接触点处的电压值(即A/D)。
电容式触摸屏是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂一层ITO,最外层是
只有0.0015mm 厚的矽土玻璃保护层,夹层ITO 涂层作工作面,四个角引出四个电极,内层
ITO 为屏层以保证工作环境。当用户触摸电容屏时,由于人体电场,用户手指和工作面形成
一个耦合电容,因为工作面上接有高频信号,于是手指会吸收一个很小的电流,这个电流分
别从屏的四个角上的电极中流出,且理论上流经四个电极的电流与手指头到四角的距离成比
例,控制器通过对四个电流比例的精密计算,得出位置。
电感式触摸屏的工作原理是在触摸笔中安装LC 谐振线圈,通过改变与安装有激励线圈
及感应线圈的触摸屏之间的空间距离,使电磁场发生变化从而计算出触点的位置。因为这种
触摸屏是安装在液晶显示屏的后面,而普通的电阻式和电容式触摸屏需要安装在液晶显示屏
的前面,两者相比,使用电感式触摸屏,输入笔不必接触屏幕,可以减少对屏幕的磨损,同
时大大提高输入的灵敏度。由于触摸屏安装在显示屏的后面,也增加显示的清晰度和亮度,
减少背光的使用,进而可以减少系统功耗。
- 10 -
图1.2. 工作时的导体层
表1.3. 三种触摸屏技术的比较
触摸屏类型 工作原理 触摸方式 安装方式 透明度 易用性
电阻式 电压测量 笔、手指点压显示屏前 一般 好
电容式 电容耦合 金属笔尖、手
指接触
显示屏前 比电阻式好 一般
电感式 电磁谐振 笔尖接近感
应
显示屏后 好 好
1.1.3.3. 语音输入输出技术
用户不断地要求所用的嵌入式装置更小、更轻便同时又更易于使用,能解决这三方面问
题的一种可行技术就是语音识别。这种技术由于去掉了传统的输入器件,故具有更小和更轻
便的特点。语音识别输入的实现可以在嵌入式处理器功能足够强大时用相应的软件实现,也
可以使用专用芯片增加一个硬件功能模块。前者对嵌入式系统硬件配置的要求较高,如处理
器的速度和存储器的容量等。后者则通过专门的DSP 芯片来完成语音识别输入过程中的所
有运算工作,不会加重系统主处理器的负担。这种专用的语音识别芯片现在已经有多种产品
出现了。如sensory 公司的语音识别芯片系列,内部采用神经网络技术来识别训练过的单词
或短语,准确度高于99%。并且芯片高度集成化,减少了所需外部元器件的数目。可以快
速和方便地嵌入到现存的和新设计的产品中,适用于多种需要语音控制的嵌入式产品。
语音识别技术以识别方法来分,有模板匹配法、随机模型法和概率语法分析法。这三种
方法都属于统计模式识别方法。它的识别过程大致如下:首先选定语音的特征作为识别参数
的模板,然后采用一可以衡量未知模式和参考模式(即模板)的似然度的测量函数,最后选
用一种最佳准则及专家知识作为识别策略,对识别候选者作最后判决,得到最好的识别结果
作为输出。以识别范围来分,分为语音从属(speaker-dependent) 模式和语音独立
(speaker-independent)模式。语音从属意味着必须有培训系统,而且通常它只可识别培训
系统的人所讲的词。语音独立系统则可识别几乎所有讲话人的词。从目前水平来看,语音从
- 11 -
属模式下的模板匹配法用得比较广泛。
语音识别技术在嵌入式系统上的使用,不仅可以通过声音命令来控制设备,还可将
输入的声音转换为文本,使得用户就能用声音口述需要输入的文本。如果再加上语音合成
输出功能,就可以在嵌入式系统中实现书面语言和口头语言的双向转换,从而构成完整的语
音输入输出功能。
1.1.3.4. 键盘
键盘输入作为最常用的输入设备仍有其不可替代的作用。
首先,对传统键盘作一个简单的介绍。