嵌入式系统的构建 试用教材 清华大学自动化系 2003年1月
嵌入式系统的构建 试用教材 清华大学自动化系 2003 年 1 月
刖言 第一章嵌入式系统的硬件构成 1.1.嵌入式系统硬件 1.1.1.嵌入式处理器 1.1.1.1.嵌入式微处理器( Embedded Microprocessor Unit,EMPU)… 1.1.1.2.嵌入式微控制器( Microcontroller Unit, MCU 1.1.1.3.嵌入式DSP处理器( mbedded Digital Signal Processor,EDSP) 1.1.14.嵌入式片上系统( System On Chip) 33334455 1.1.1.5.嵌入式处理器的选择 1.1.2.存储器 1.12.1.ROM 122.RAM. 1.1.3.输入输出设备 1.1.31.液晶显示 677889 1.1.32.触摸屏 1.1.3.3.语音输入输出技术 1.1.34.键盘 1.14.电源转换与管理 1.141.电源IC分类 1.142.电源IC的特点 143.电源IC选用指南 2.嵌入式系统硬件开发相关技术 12.1.接口技术 12.1.1.并行接口 1.2.12.串口 12.1.3.USB H33445566789 1.2.14. PCMCIA和CF 12.1.5.红外线接口 22.总线 22.1.ISA 12.2.2.PCI 1223.DC总线 1224.SPI总线 1.22.5.PC104总线 1226.CAN总线 123.嵌入式系统开发常用的硬件调试和编程技术 12.3.1.微代码支持的串口调试 1232.编程技术 123.3.JATG与IEE1149协议简介 124.3.3V和5V装置的互连 13.嵌入式系统开发示例——EZ开发板 13.1.系统性能 1.3.2.系统硬件设计 1.32.1.CPU与存储器模块 222
- i - 前 言.................................................................................................................................................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
1.322.LCD显示模块 1.3,2.3.串口模块 1.3.24.电源模块 13.2.5.进入 BOOTSTRAP电路模块 1.3.3.TQFP和LQFP器件的焊接方法 1.34.硬件调试 第二章操作系统. 2.1.基础知识 2.1.1.操作系统功能 2.1.2.操作系统发展史 2.1.3. Linux与嵌入式Linu 3222234 22.操作系统内核 22.1.内存管理 221.1.内存管理功能 221.2.内存分割 221.3.虚拟内存 22.14 Linux的内存管理机制 222.进程与中断管理 222.1.进程描述与控制 2222.并发控制:互斥与同步 22.2.3.并发控制:死锁处理 2224.中断及中断处理 222.5.Linuⅸx的进程与中断管理机制 223.调度机制 22.3.1.调度类型 22.3.2.单处理器调度 223.3.多处理器调度 223.4.实时调度 69 223.5. Linux的调度机制 224.O设备 2241.IO设备描述参数 2242.IO技术的演变 2243.LO设备逻辑描述 2244IO缓冲技术 2245.磁盘调度 225.文件管理 2251.文件与文件系统 2444579228 22.52.文件组织与访问 22.53.文件共享 22.54.记录分块 2255.外围存储设备管理 2256. Linux的文件系统管理 23.用户界面 2.3.1.图形用户界面
- 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
2.3.1.1.基本知识 23.12.关键技术 3.2.智能化用户界面 232.1. Agent技术 2322. Agent技术与用户界面的结合 233. Linux下的用户界面 2331. X Window简介 233.2.X服务器 23.3.3.窗口管理器 第三章嵌入式 Linux 100 3.1.嵌入式 Linux内核 100 3.1.1嵌入式 Linux综述 3.1.2 u CLinux 3.1.2.1 uClinux的内存管理 000 3.1.22 uCLinux内核结构 3123内存保护 3.1,24编程接口的改变 3.1.25 uCLinux的应用程序库 3.126 uCLinux内核运行方式 3.127. uClinux支持的文件系统 104 3.2.嵌入式设备的文件系统 321.闪存( Flash Memory)介绍 322.第二版扩展文件系统Ext2fs( Extended2 Filesystem) 323.临时文件系统mpfs( Temporary Filesystem) 3.24.日志闪存文件系统版本2-JFFS2( Journalling Flash Filesystem) 3241概述 3242.JFFS的设计原理 3.3嵌入式用户界面 331.GUI开发工具综述 331.1. Free864X(带帧缓冲区支持的XlR64) 000000 3.3.1.2. Microwindows 3.3.1.3.FLTK 3.3. 1.4. Qt/Embedded 110 332 Micro windows剖析 111 332.1.分层设计 3.322.设备驱动层 3.323.设备无关的图形引擎层 l11 3324.API(基于Win32) 112 3325.消息传递机制 3326.窗口操作 3.327.客户区域和绝对坐标 3328.设备上下文 113 3.33. Microwindows的移植和中文化 333.1.针对 uClinux所作的修改
- 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
3332.中文化处理 334.应用实例一电子文本阅读器 115 3.341功能要求以及方案选择: 3342具体实现 第四章交叉编译 4.1.编译原理 4.1.1.基础知识 .17 4.1.1.1.编译的一般过程 117 4.1.1.2.与编译器相关的程序 4.1.1.3.编译器的移植 l19 41.2.词法分析 119 41.2.1.词法的形式化描述 119 41.22.词法分析程序的设计 41.3.语法分析 41.3.1.自顶向下的语法分析 41.32.自底向上的语法分析 126 41.4.中间代码 128 4.1.5.代码优化 42.交叉编译技术 133 42.1.交叉编译 42.2.GCC交叉编译器 42.2.1.GCC编译流程. 42.22. Linux环境下的GCC交叉编译器 第五章嵌入式 Linux的软件开发环境 5.1.交叉编译环境 142 5.1.1.编译开发环境的建立 5.1.1.1安装交叉编译环境 142 51.1.2.添加设备驱动和内核模块 142 51.2.可执行文件 51.2.1.Co文件格式 51.2.2.elf文件格式 51.2.3.flat文件格式 52.调试技术 521.常见调试方法 522.内存调试 522.系统调用跟踪 148 523.程序调试 149 53.系统引导和内核启动 531. Bootloader程序的设计与实现 531.1.硬件平台的通信 531.2.硬件平台初始化程序 53.1.3.硬件平台监控程序 532. uCLinux移植. 532.1.第一阶段
- 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
5322.第二阶段 第六章设备驱动程序 6.1.概述 6.1.1.设备类型 6.1.2.设备号 6.1.3.模块化编程. 163 62.设备文件接口 621.用户访问接口 622.文件操作 622.1. file operations结构 6222.file结构 167 623.O操作 167 63.中断处理 63.1.注册中断处理程序 632.实现中断处理程序 64.应用实例 641.字符型设备 64.1.1.按键 641.2.触摸屏 642.网络设备 642.1.网络驱动的框架 6422.网卡驱动程序的加载方法 6423CS8900A芯片特点 6424CS8900A芯片驱动程序的实现 642.5.网络设备驱动程序的编译 6426.网络驱动程序的测试 附录 A.参考文献 19 B.参考网站
- 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)设计方法,即使用统一的方法和工具对软
- 1 - 前 言 近些年来,随着以计算机技术,通讯技术为主的信息技术的快速发展和 Internet 的广泛 应用,传统的控制学科正在发生变革,出现了许多新的生长点。伴随而来的一个现象是控制 专业的相当多的学生在毕业后进入了计算机,通讯行业,以致有人说学控制没有用,自动 化专业可以取消了。这些情况的出现使我们控制教育工作者反复思考,传统的控制应如何 拓宽它的领域?控制专业应该教什么才使学生感到有用? 近些年我们在嵌入式系统及其应用的科研工作中采用了信息产业中的最新技术,打破 了学科之间的界限,感到控制的出路原来很多,尽管处处是挑战。过去我们熟悉的“控制” 有很大的局限性.:一是不考虑硬件的限制, 二是不考虑控制器的复杂性及计算能力, 三是 不注重实用性和效益。在微处理器,微传感器和微型执行元件不断推出新产品的形势下, 控制的思路与手段正经历着巨大的变化。在经过一番艰苦的实践摸索之后,我们对控制学 科的研究和教学有了一些新的认识。本教材就是在我们这些年科研工作的基础上总结出来 的,它还比较粗糙,还需要今后花大力气把它完善与提高。现在拿出来作为试用教材供大 家参考,希望能为控制学科教学内容的更新作出我们的一点贡献。 嵌入式系统的定义 嵌入式系统是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、 微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系 统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各 种自动化处理任务。嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和 通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以满足系统对功 能、成本、体积和功耗等要求。 最简单的嵌入式系统仅有执行单一功能的控制能力,在唯一的 ROM 中仅有实现单一功 能的控制程序,无微型操作系统。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电 脑(HPC)等,具有与 PC 几乎一样的功能。实质上与 PC 的区别仅仅是将微型操作系统与应 用软件嵌入在 ROM、RAM 和/或 FLASH 存储器中,而不是存贮于磁盘等载体中。很多复杂的 嵌入式系统又是由若干个小型嵌入式系统组成的。 嵌入式系统的硬件/软件特征 嵌入式系统的硬件必须根据具体的应用任务,以功耗,成本,体积, 可靠性,处理能力等 为指标来选择。嵌入式系统的核心是系统软件和应用软件,由于存储空间有限,因而要求 软件代码紧凑,可靠,大多对实时性有严格要求。 早期的嵌入式系统设计方法,通常是采用“硬件优先”原则。即在只粗略估计软件任 务需求的情况下,首先进行硬件设计与实现。然后,在此硬件平台之上,再进行软件设计。 因而很难达到充分利用硬件软件资源,取得最佳性能的效果。同时,一旦在测试时发现问 题,需要对设计进行修改时,整个设计流程将重新进行,对成本和设计周期的影响很大。 这种传统的设计方法只能改善硬件/软件各自的性能,在有限的设计空间不可能对系统做出 较好的性能综合优化,在很大程度上依赖于设计者的经验和反复实验。 90 年代以来随着电子系统功能的日益强大和微型化,系统设计所涉及的问题越来越 多,难度也越来越大。同时硬件和软件也不再是截然分开的两个概念,而是紧密结合、相 互影响的。因而出现了软硬件协同(codesign)设计方法,即使用统一的方法和工具对软
件和硬件进行描述、综合、和验证。在系统目标要求的指导下,通过综合分析系统软硬件 功能及现有资源,协同设计软硬件体系结构,以最大限度地挖掘系统软硬件能力,避免由 于独立设计软硬件体系结构而带来的种种弊病,得到高性能低代价的优化设计方案。 嵌入式操作系统 目前流行的嵌入式操作系统可以分为两类:一类是从运行在个人电脑上的操作系统向 下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的 Windows CE及其新版本 SUN公司的Java操作系统,朗讯科技公司的 Inferno,嵌入式 Linux等。这类系统经过个 人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发 方式已被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。 另一类是实时操作系统,如 WindRiver公司的 VxWorks,ISI的pSOS,QNX系统软件 公司的QNX,AI的 Nucleus,中国科学院凯思集团的 Hopen嵌入式操作系统等,这类产 品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了精巧 的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控 制等领域中。 Linux是90年代以来逐渐成熟的一个开放源代码的操作系统。PC机上的 Linux版本 在全球数以百万计爱好者的合力开发下,得到了非常迅速的发展。90年代末 uClinux, RTLinux等相继推出,在嵌入式领域得到了广泛的关注,它拥有大批的程序员和现成的应 用程序,是我们研究开发工作的宝贵资源 学习嵌入式系统的意义 从控制意义上说,嵌入式系统涉及系统最底层的,芯片级的信息处理与控制。在某种 意义上,对这些“微观”世界的了解与驾驭正是控制的真正目的。嵌入式系统与通常意义 上的控制系统在设计思路和总体架构方面有许多不同之处,而这些不同之处恰恰是传统控 制学科教学中较少教给学生的。在当今信息化社会中,嵌入式系统在人们的日常工作和生 活中所占的份额,可能已超过传统意义的控制系统,这就是为什么我们的学生感到学的没 有用,而有用的又没有学的原因。在嵌入式系统及开发环境方面,目前仍有许多问题尚在 研究发展之中,如,嵌入式系统的硬件软件协同设计方法;面向多目标,多任务的微内核 嵌入式操作系统;分布嵌入式系统的实时性问题,分布式计算,分布式信息交互与综合处 理;以及嵌入式系统的多目标交叉编译和交叉调试工具的研究等。我们希望通过这本教材 再配合我们的实验开发平台,学习嵌入式系统的一些基本理论和硬件软件综合设计的方法 与技能,亲自动手,实现一个嵌入式系统的解决方案,为今后的深入研究打下一个初步基 “嵌入式系统”作为自动化学科一门理论与实际密切结合的,知识与技术含量较高的综 合性专业课程,必将随着信息产业的发展而逐渐趋于成熟 本教材第一章由刘森同学执笔,第二,四章由杨占敏同学执笔,陈清阳同学参与编写了 其中一部分,第三,五章由钟忻同学执笔,第六章由杜威,李强同学执笔。沈卓立,郭东 航,桂伟力,陈建平等同学的工作成果和经验许多被吸收到本教材中。在此,向他们表示 诚挚的谢意。 全书由慕春棣策划和组织编写,并负责审校。由于我们的水平有限,许多问题还在摸索 之中,加之编写比较仓促,教材中肯定有许多错误和不确切之处,恳请读者批评指正。 慕春棣 2003年1月于清华园
- 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 月于清华园
第一章嵌入式系统的硬件构成 1.1.嵌入式系统硬件 嵌入式系统是以应用为中心,计算机技术为基础,软硬件可裁剪,适用于应用系统对功 能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统硬件一般包括处 理器、存储器、外设器件和电源等 1.1.1.嵌入式处理器 嵌入式系统的核心部件是各种类型的嵌入式处理器,据不完全统计,到2000年全世界 嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30几个系列,其中8051体 系的占有多半。生产8051单片机的半导体厂家有20多个,共350多种衍生产品,仅 Philips 就有近100种。现在几乎每个半导体制造商都生产嵌入式处理器,越来越多的公司有自己的 处理器设计部门。嵌入式处理器的寻址空间一般从64kB到16MB,处理速度从0. 1 MIPS到 2000MPS,常用封装从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、MPS、ARM 系列等。 嵌入式微处理器又可分为CISC和RSC两类。大家熟悉的大多数台式PC都是使用CISC 微处理器,如 Intel的x86。RISC结构体系有两大主流: Silicon Graphics公司(硅谷图形公 司)的MPS技术,ARM公司的 Advanced Risc machines技术。此外 Hitachi(日立公司) 也有自己的一套RISC技术 SuperH。 RISC和CISC是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结 构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效 的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有: (1)指令系统:RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有 简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC机器 上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进 和弥补。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因 此,处理特殊任务效率较高
- 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 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因 此,处理特殊任务效率较高
(2)存储器操作:RIsC对存储器操作有限制,使控制简单化;而CISC机器的存储器 操作指令多,操作直接。 (3)程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂, 不易设计;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序社设 计相对容易,效率较高 (4)中断:RISC机器在一条指令执行的适当地方可以响应中断:而CISC机器是在一 条指令执行结束后响应中断 (5)CPU: RISC CPU包含有较少的单元电路,因而面积小、功耗低;而 CISC CPU包 含有丰富的电路单元,因而功能强、面积大、功耗大。 (6)设计周期:RSC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技 术;CISC微处理器结构复杂,设计周期长。 7)用户使用:RSC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC 微处理器结构复杂,功能强大,实现特殊功能容易。 (8)应用范围:由于RSC指令系统的确定与特定的应用领域有关,故RISC机器更适 合于专用机:而CISC机器则更适合于通用机 1112.嵌入式微控制器( Microcontroller unit,MCU 嵌入式微控制器又称单片机,顾名思义,就是将整个计算机系统集成到一块芯片中, 嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成 ROM/EPROM、RAM、 总线、总线逻辑、定时/计数器、 WatchDog、IO、串行口、脉宽调制输出、AD、D/A、 Flash RAM、 EEPROM等各种必要功能模块。为适应不同的应用需求,一般一个系列的单片机 具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配 置及封装。这样可以使单片机最大限度地和应用需求相匹配,从而减少功耗和成本 和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗 和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上资源 一般比较丰富,适合于控制,因此称微控制器。 嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、 MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300等。另外还有许多半 通用系列,如支持USB接口的MCU8XC930/931、C540、C541。目前MCU占嵌入式系统 约70%的市场份额 特别值得注意的是近年来提供ⅹ86微处理器的著名厂商AMD公司,将 ml86CC/CH/CU等嵌入式处理器称之为 Microcontroller, MOTOROLA公司把以 Power PC 为基础的PPC505和PPC555亦列入单片机行列。T1公司亦将其TMS320C2XXX系列DSP 做为MCU进行推广 1113.嵌入式DSP处理器( Embedded digital signal processor, EDSP) DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率 较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌 入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式 DSP处理器。嵌入式DSP处理器有两个发展来源,一是DSP处理器经过单片化、EMC改 造、增加片上外设成为嵌入式DSP处理器,TI的TMS320C2000C5000等属于此范畴;二
- 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 等属于此范畴;二