嵌入式系统论文
第一章 嵌入式系统的定义与发展历史
嵌入式系统诞生于微型机时代,经历了漫长的独立发展的单片机道路。给嵌入式系统寻求科学的定义,必须了解嵌入式系统的发展历史,按照历史性、本质性、普遍通用性来定义嵌入式系统,并把定义与特点相区分。由于嵌入式系统应用中,对象系统的广泛性与单片机的独主发展道路,使嵌入式系统应用在客观上存在两种模式,从学科建设上,可统一成嵌入式系统应用的高低端。 目前,在嵌入式系统应用领域中,不少人对什么是嵌入式系统不甚了解。有些人搞了十多年的单片机应用,不知道单片机就是一个最典型的嵌入式系统;也有些人在解释什么是嵌入式系统时,不是从定义出发,而是列举了嵌入式系统的一些特点,往往不知所云。因此,有必要从现代计算的发展历史,了解嵌入式系统的由来,从学科建设的角度来探讨嵌入式系统较为准确的定义。
1. 现代计算机的技术发展史
(1)始于微型机时代的嵌入式应用
电子数字计算机诞生于1946年,在其后漫长的历史进程中,计算机始终是供养在特殊的机房中,实现数值计算的大型昂贵设备。直到20世纪70年代,微处理器的出现,计算机才出现了历史性的变化。以微处理器为核心的微型计算机以其小型、价廉、高可靠性特点,迅速走出机房;基于高速数值解算能力的微型机,表现出的智能化水平引起了控制专业人士的兴趣,要求将微型机嵌入到一个对象体系中,实现对象体系的智能化控制。例如,将微型计算机经电气加固、机械加固,并配置各种外围接口电路,安装到大型舰船中构成自动驾驶仪或轮机状态监测系统。这样一来,计算机便失去了原来的形态与通用的计算机功能。为了区别于原有的通用计算机系统,把嵌入到对象体系中,实现对象体系智能化控制的计算机,称作嵌入式计算机系统。因此,嵌入式系统诞生于微型机时代,嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去,这些是理解嵌入式系统的基本出发点。
(2)现代计算机技术的两大分支
由于嵌入式计算机系统要嵌入到对象体系中,实现的是对象的智能化控制,因此,它有着与通用计算机系统完全不同的技术要求与技术发展方向。
通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。 而嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。
早期,人们勉为其难地将通用计算机系统进行改装,在大型设备中实现嵌入式应用。然而,对于众多的对象系统(如家用电器、仪器仪表、工控单元„„),无法嵌入通用计算机系统,况且嵌入式系统与通用计算机系统的技术发展方向完全不同,因此,必须独立地发展通用计算机系统与嵌入式计算机系统,这就形成了现代计算机技术发展的两大分支。
如果说微型机的出现,使计算机进入到现代计算机发展阶段,那么嵌入式计算机系统的诞生,则标志了计算机进入了通用计算机系统与嵌入式计算机系统两大分支并行发展时代,从而导致20世纪末,计算机的高速发展时期。
(3) 两大分支发展的里程碑事件
通用计算机系统与嵌入式计算机系统的专业化分工发展,导致20世纪末、21世纪初,计算机技术的飞速发展。计算机专业领域集中精力发展通用计算机系统的软、硬件技术,不必兼顾嵌入式应用要求,通用微处理器迅速从286、386、486到奔腾系列;操作系统则迅速扩张计算机基于高速海量的数据文件处理能力,使通用计算机系统进入到尽善尽美阶段。
嵌入式计算机系统则走上了一条完全不同的道路,这条独立发展的道路就是单芯片化道路。它动员了原有的传统电子系统领域的厂家与专业人士,接过起源于计算机领域的嵌入式系统,承担起发展与普及嵌入式系统的历史任务,迅速地将传统的电子系统发展到智能化的现代电子系统时代。
因此,现代计算机技术发展的两大分支的里程碑意义在于:它不仅形成了计算机发展的专业化分工,而且将发展计算机技术的任务扩展到传统的电子系统领域,使计算机成为进入人类社会全面智能化时代的有力工具。
2. 嵌入式系统的定义与特点
如果我们了解了嵌入式(计算机)系统的由来与发展,对嵌入式系统就不会产生过多的误解,而能历史地、本质地、普遍适用地定义嵌入式系统。
(1) 嵌入式系统的定义
按照历史性、本质性、普遍性要求,嵌入式系统应定义为:“嵌入到对象体系中的专用计算机系统”。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。
(2) 嵌入式系统的特点
嵌入式系统的特点与定义不同,它是由定义中的三个基本要素衍生出来的。不同的嵌入式系统其特点会有所差异。
与“嵌入性”的相关特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求。
与“专用性”的相关特点:软、硬件的裁剪性;满足对象要求的最小软、硬件配置等。
与“计算机系统”的相关特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。
另外,在理解嵌入式系统定义时,不要与嵌入式设备相混淆。嵌入式设备是指内部有嵌入式系统的产品、设备,例如,内含单片机的家用电器、仪器仪表、工控单元、机器人、手机、PDA 等。
(3)嵌入式系统的种类与发展
按照上述嵌入式系统的定义,只要满足定义中三要素的计算机系统,都可称为嵌入式系统。嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)、芯片级(MCU 、SoC )。
有些人把嵌入式处理器当作嵌入式系统,但由于嵌入式系统是一个嵌入式计算机系统,因此,只有将嵌入式处理器构成一个计算机系统,并作为嵌入式应用时,这样的计算机系统才可称作嵌入式系统。
嵌入式系统与对象系统密切相关,其主要技术发展方向是满足嵌入式应用要求,不断扩展对象系统要求的外围电路(如ADC 、DAC 、PWM 、日历时钟、电源监测、程序运行监测电路等),形成满足对象系统要求的应用系统。因此,嵌入式系统作为一个专用计算机系统,要不断向计算机应用系统发展。因此,
可以把定义中的专用计算机系统引伸成,满足对象系统要求的计算机应用系统。 3 . 嵌入式系统的独立发展道路
(1)单片机开创了嵌入式系统独立发展道路
嵌入式系统虽然起源于微型计算机时代,然而,微型计算机的体积、价位、可靠性都无法满足广大对象系统的嵌入式应用要求,因此,嵌入式系统必须走独立发展道路。这条道路就是芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。
在探索单片机的发展道路时,有过两种模式,即“Σ模式”与“创新模式”。“Σ模式”本质上是通用计算机直接芯片化的模式,它将通用计算机系统中的基本单元进行裁剪后,集成在一个芯片上,构成单片微型计算机;“创新模式”则完全按嵌入式应用要求设计全新的,满足嵌入式应用要求的体系结构、微处理器、指令系统、总线方式、管理模式等。Intel 公司的MCS-48、MCS-51就是按照创新模式发展起来的单片形态的嵌入式系统(单片微型计算机)。MCS-51是在MCS-48探索基础上,进行全面完善的嵌入式系统。历史证明,“创新模式”是嵌入式系统独立发展的正确道路,MCS-51的体系结构也因此成为单片嵌入式系统的典型结构体系。
(2)单片机的技术发展史
单片机诞生于20世纪70年代末,经历了SCM 、MCU 、SoC 三大阶段。 SCM 即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了
SCM 与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel 公司功不可没。
MCU 即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU 的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel 逐渐淡出MCU 的发展也有其客观因素。在发展MCU 方面,最著名的厂家当数Philips 公司。
Philips 公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel 和Philips 的历史功绩。
单片机是嵌入式系统的独立发展之路,向MCU 阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC 化趋势。随着微电子技术、IC 设计、EDA 工具的发展,基于SoC 的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
3. 嵌入式系统的两种应用模式
嵌入式系统的嵌入式应用特点,决定了它的多学科交叉特点。作为计算机的内含,要求计算机领域人员介入其体系结构、软件技术、工程应用方面的研究。然而,了解对象系统的控制要求,实现系统控制模式必须具备对象领域的专业知识。因此,从嵌入式系统发展的历史过程,以及嵌入式应用的多样性中,可以了解到客观上形成的两种应用模式。
(1) 客观存在的两种应用模式
嵌入式计算机系统起源于微型机时代,但很快就进入到独立发展的单片机时代。在单片机时代,嵌入式系统以器件形态迅速进入到传统电子技术领域中,以电子技术应用工程师为主体,实现传统电子系统的智能化,而计算机专业队伍并没有真正进入单片机应用领域。因此,电子技术应用工程师以自己习惯性的电子技术应用模式,从事单片机的应用开发。这种应用模式最重要的特点是:
软、硬件的底层性和随意性;对象系统专业技术的密切相关性;缺少计算机工程设计方法。
虽然在单片机时代,计算机专业淡出了嵌入式系统领域,但随着后PC 时代的到来,网络、通信技术得以发展;同时,嵌入式系统软、硬件技术有了很大的提升,为计算机专业人士介入嵌入式系统应用开辟了广阔天地。计算机专业人士的介入,形成的计算机应用模式带有明显的计算机的工程应用特点,即基于嵌入式系统软、硬件平台,以网络、通信为主的非嵌入式底层应用。
(2)两种应用模式的并存与互补
由于嵌入式系统最大、最广、最底层的应用是传统电子技术领域的智能化改造,因此,以通晓对象专业的电子技术队伍为主,用最少的嵌入式系统软、硬件开销,以8位机为主,带有浓重的电子系统设计色彩的电子系统应用模式会长期存在下去。因此,客观存在的两种应用模式会长期并存下去,在不同的领域中相互补充。电子系统设计模式应从计算机应用设计模式中,学习计算机工程方法和嵌入式系统软件技术;计算机应用设计模式应从电子系统设计模式中,了解嵌入式系统应用的电路系统特性、基本的外围电路设计方法和对象系统的基本要求等。
(3) 嵌入式系统应用的高低端
由于嵌入式系统有过很长的一段单片机的独立发展道路,大多是基于8位单片机,实现最底层的嵌入式系统应用,带有明显的电子系统设计模式特点。大多数从事单片机应用开发人员,都是对象系统领域中的电子系统工程师,加之单片机的出现,立即脱离了计算机专业领域,以“智能化”器件身份进入电子系统领域,没有带入“嵌入式系统”概念。因此,不少从事单片机应用的人,不了解单片机与嵌入式系统的关系,在谈到“嵌入式系统”领域时,往往理解成计算机专业领域的,基于32位嵌入式处理器,从事网络、通信、多媒体等的应用。这样,“单片机”与“嵌入式系统”形成了嵌入式系统中常见的两个独立的名词。但由于“单片机”是典型的、独立发展起来的嵌入式系统,从学科建设的角度出发,应该把它统一成“嵌入式系统”。考虑到原来单片机的电子系统底层应用特点,可以把嵌入式系统应用分成高端与低端,把原来的单片机应用理解成嵌入式系统的低端应用,含义为它的底层性以及与对象系统的紧耦合。
第二章 ARM 简介
如果说,“嵌入式”是2008年电子工程师谈论得最多的词之一,2009年谈论得最多的一个词就是“ARM ”。究竟什么是ARM 呢,他是英国一家电子公司的名字,全名的意思是Advanced RISC Machine。该公司成立于1990年11月,是苹果电脑,Acorn 电脑集团和VLSI Technology的合资企业。Acorn 曾推出世界上首个商用单芯片RISC 处理器,而苹果电脑当时希望将RISC 技术应用于自身系统,ARM 微处理器新标准因此应运而生。
80年代末90年代初半导体行业产业链刚刚出现分工,台积电,联电等半导体代工厂正悄悄崛起,美国硅谷中的一些fabless 公司也如雨后春笋一样涌现出来,所谓的fabless 公司自己设计芯片,但是生产过程则包给台积电等代工厂生产。而ARM 更是为天下先,19年前首创了chipless 的生产模式,即该公司既不生产芯片,也不设计芯片,而是设计出高效的IP 内核,授权给半导体公司使用,半导体公司在ARM 技术的基础上添加自己的设计并推出芯片产品,最后由OEM 客户采用这些芯片来构建基于ARM 技术的系统产品。这种方式有点象通信行业的高通和半导体行业的RAMBUS ,他们站在了半导体产业链上游的上游。19年前成立的ARM 可能面临着很大风险,因为没有人知道这条路能不能行得通,但是现在的事实已经证明,ARM 走了一条没人走过,却是正确的道路。,作为附加产品,他还让中国的行业人士从这个窗口认识到了英国的电子公司,ARM 的成功带动了英国的chipless 公司的发展。
因为ARM 的产品是IP Core,没有任何物理意义上的硬件或者软件实体,所以只能在中国注册成为“咨询”公司,尽管咨询只是其业务中很小的一块。ARM 的核心业务是销售芯片核心技术IP ,目前全球有103家巨型IT 公司在采用ARM 技术,20家最大的半导体厂商中有19家是ARM 的用户,包括德州仪器,意法半导体,Philips, Intel等。20大巨头中唯一没有购买ARM 授权的是Intel 的老对头AMD ,因为Intel 便携式处理器采用的是StrongARM ,而AMD 则收购了Alchemy 公司与之抗衡,采用的是MIPS 结构。
第三章 ARM 产品介绍
ARM 提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。典型的产品如下。
CPU 内核
ARM7:小型、快速、低能耗、集成式RISC 内核,用于移动通信。 ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb 扩展组合在一起,以减少内存容量和系统成本。同时,它还利用嵌入式ICE 调试技术来简化系统设计,并用一个DSP 增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。
ARM710系列,包括ARM710、ARM710T 、ARM720T 和ARM740T:低价、低能耗、封装式常规系统微型处理器,配有高速缓存(Cache )、内存管理、写缓冲和JTAG 。广泛应用于手持式计算、数据通信和消费类多媒体。
ARM7优化用于对价位和功耗敏感的消费应用的低功耗32位核,非常低的功耗;三段流水线和冯·诺依曼结构,提供0.9MIPS/MHz。
ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb 扩展、调试和Harvard 总线。在生产工艺相同的情况下,性能可达ARM7TDMI 的两倍之多。常用于连网和顶置盒。
ARM940T 系列低价、低能耗、高性能系统微处理器,配有、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。StrongARM:性能很高、同时满足常规应用需要的一种微处理器技术,与DEC 联合研制,后来授权给Intel 。SA110处理器、SA1100 PDA系统芯片和SA1500多媒体处理器芯片均采用了这一技术。
ARM920T, ARM922T, ARM940T,ARM966E-S,ARM968E-S,ARM996HS 有着高性能和低功耗领先的硬宏单元,5级流水线结构;哈佛结构提供1.1MIPS/MHz。ARM920T 和ARM922T 内置全性能的MMU 、指令和数据cache 和高速AMBA 总线接口。AMBA 片上总线是一个开放标准,已成为SoC 构建和IP 库开发的事实标准。
AMBA 先进的高性能总线(AHB)接口现由所有新的ARM 核支持,提供开发全综合设计系统。ARM940T 内置指令和数据cache 、保护单元和高速AMBA 总线接口。 ARM7500和ARM7500FE:高度集成的单芯片RISC 计算机,基于一个缓存式ARM7 32位内核,拥有内存和I/O控制器、3个DMA 通道、片上视频控制器和调色板以及立体声端口;ARM7500FE 则增加了一个浮点运算单元以及对EDO DRAM的支持。特别适合电视顶置盒和网络计算机(NC )。
ARM10 ARM1020E,ARM1022E,ARM1026EJ-S,系列是64位AHB 指令和数据接口;6级流水线结构;1.25MIPS/MHz;比同等的ARM9器件性能提高50%。添加了两种新的先进的节能方式得到了异常低的耗电。VFP10协处理器完善地依从ARM10器件提供高性能的浮点解决方案 ARM10有三个内核分别是:ARM1026EJ-S , ARM1020E , ARM1022E 。
ARM11 MPCore,ARM1136J(F)-S,ARM1176JZ(F)-S 这是高效率高性能的CPU, 国内还没有产品出现。
第四章 ARM 软件系统及操作系统概述
嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供 机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的 MCU 或者 SOC器件、存储器类型、通讯接口及 I/O、电源及其他的辅助设备等;软件部分主要涉及 OS porting 和应用程序的开发等,与此同时,软件中断调试和实时调试,代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。
ARM 对操作系统以及系统开发执行环境提供最广泛的选择,客户可以根据需要来选择最适应市场要求的基于 ARM 的嵌入式操作系统。可供选择的嵌入式操作系统有几十种,使用较多的有 Linux,WinCE,Palm,Symbian 等等。采用WinCE 更多的是 OEM,以及按需进行特定的嵌入式器件开发的,例如 GPS 导航设备。采用 Palm 操作系统的厂家有联想 三星 索尼,他们的出货量都非常巨大。Symbian 操作系统是先进的全球公开工业标准操作系统,基于Symbian 操作系统的手机有:BenQ ,DoCoMo ,Motorola ,Nokia ,Panasonic ,三星,索尼爱立信等。Linux 是源代码开放的操作系统,可以运行在包括 ARM 等多种主流处理器架构上。由于有一大批的工程师在开发开放源代码以及相关开发工具,Linux 可以更方便快捷的进行移植。
以 Linux 为例,选择基于 ARM 的 Linux,可以得到更多的开发源代码的应用,可以利用ARM 处理器的高性能开发出更广阔的网络和无线应用,ARM 的Jazelle 技术带来 Linux 平台下 Java 程序更好的性能表现。ARM 公司的系列开发工具和开发板,以及各种开发论坛的可利用信息带来更快的产品上市时
第五章 基于ARM7系统设计
1.ARM7系统中实现CF 卡存储的文件系统设计
随着微控制器性能的不断提高,嵌入式应用越来越广泛。但是目前市场上的大型商用嵌入式实时系统,价格昂贵,而且都针对特定的硬件平台。对于中小型系统开发,购买商用实时系统并不划算。
目前我们正着手将嵌入式系统软件应用于汽车卫星导航仪系统的一步开发。传统的嵌入式应用并不包括文件系统,而我们要实现的文件系统需要在车辆导航系统中实现地图数据文件的读写。因此它既要支持与MS-DOS 兼容的文件系统也要支持其它类型的文件系统。
另一方面,从数码相机到MP3播放机,从掌上电脑到数码摄像机,CF
(CompactFlash )卡由于具有体积小、兼容性强、价格相对低廉等诸多优点,在数码设备上的应用越来越广泛。但若想在CF 卡与PC 之间传递数据,通常不得不借助于专门的读卡器,这给PC 的用户带来了不小的麻烦。CompactFlash 卡全称为“标准闪存卡”,简称“CF卡”。CF 卡的应用空间比较广,最常见的是在数码照相机中用于照片的存储。由于CF 卡内部采用模拟硬盘控制器的设计,使得CF 卡可以比较容易地通过IDE 接口实现与电脑的连接,一定程度上可以起到移动存储的作用。
一般的嵌入式系统不会提供读写CF 卡的接口,所以需要在文件系统中专门设计一个驱动程序。
(1 ). 基本原理
在CF 卡中,主机系统的控制器接口允许数据从Flash 介质读写。CF 卡的存取方式有三种:Memory 方式、I/O方式以及True IDE方式。我们选择的是True IDE方式。需要注意的是,当主机电源一直接通时,拔插CF 卡将会使其从原来的True IDE方式重新配置成PC Card ATA方式。所以要让CF 卡一直工作在True IDE,需要在电源加电启动时将OE 输入信号接地。此方式也支持8
位存取,但我们选择了16位存取。一次最多存取的扇区数可由命令码Ech 中的第47参数字决定。
CF 卡跟硬盘的结构相同。在引导区中装有用于启动系统的代码,以及有关文件系统的重要信息,随后是记录所有磁盘空间的表,再下来就是根目录,然后是所有其它的东西。引导扇区在其末尾处包含有分区表。此表包含了用以标示每个分区开始和结束的表项,最多可以有四个分区,每个分区可包含不同的文件系统。紧随引导区之后的是FAT (文件分配表),用来记录设备中所有的磁盘空间的信息(此表与UNIX 中的I-node 表和空闲表具有相同的功能)。
设计软件时,同时考虑了通用性及可扩展性,目的在于使该文件系统无需分别修改便能够对CF 卡、IDE 硬盘、RAM Disk、电子盘、SD 等不同的存储介质进行操作;读出这些存储介质中的数据,并且可以将数据输送到不同存储设备上。
为了达到这些目的,我们针对不同CPU 的不同处理方法,对硬件操作程序进行分离,将设备有关的底层程序变成与设备无关的上层操作。这样,当系统新增功能之后,不必更改每个子程序,只需要在某些接口文件的数据结构中添加或者更改数据项即可;又考虑到用户对上层操作的透明性,我们采用面向对象的方法,上层结构中存取操作的driver 结构(含read 、write 数据项)是虚拟的,在底层才将它具体化为CF 卡的读写扇区命令(操作码为:20h 、30h )。 2 . 系统设计实现
根据上述原理,可完成软件设计,其基本框架如图4所示,分为六个主要部分。
其中,CF 卡驱动程序设计的关键是CF 卡的存取操作函数所采用的命令码有些不同。另外,我们使用驱动程序对象来代表CF 卡设备驱动程序。该驱动程序对象对于用户是部分不透明的,数据项包括读写函数的指针,这些函数由文件系统程序输出(包括两部分函数,用户可见API 函数调用和用户不见驱动存取函数)。此对象的数据结构声明如下:
typedef struct CF_XFILE_DRIVER{
BYTE driver_name; /*介质标示;CF 卡、IDE 硬盘、Flash 卡、RAMDISK 等,删除驱动的话,需要重新记录DRIVER 号*/
„„ /*IRP处理函数*/
}CF_XFILE_DRIVER;
如果有多个CF 卡,需要用另外一个特定的数据结构Next_Driver来把它们水平连接在一起。然后,用链表来管理这些数据结构,管理方式类似于WDM (Windows Driver Model)。
3 . 测试分析
经过调试运行,该文件系统性能良好。与我们之前已经移植过的Nucleus 、μC/OS-II、UNIX 的操作系统的文件系统相比,本文介绍的文件系统可移植性更强;除了文中着重介绍的CF 卡,经过对底层驱动的简单修改就可以应用于其它存储介质如RAMdisk 、IDE 硬盘、Flash 等。
2. 基于ARM7核处理器VxWorks 系统BSP 设计
该文主要介绍了SAMSUNG 公司的基于ARM7TDMI 核S3C4510B 微处理器,并详细介绍了利用该处理器所设计的嵌入式系统以及VxWorks 操作系统下BSP (Board Supported Package)的开发。
1. 介绍
S3C4510B 是三星公司推出的针对嵌入式应用的16/32 位嵌入式处理器,该微控制器专为以太网通信系统的集线器和路由器而设计,具有低成本和高性能的特点, S3C4510B中内置了ARM 公司设计的16/32位ARM7TDMI 处理器, 可以执行32位的ARM 指令,也可执行16位的THUMB 指令, 并集成了多种外围部件,主要有:
● 时钟频率50MHz
● 内核/IO电压3.3V
● 8KB的Cache/SRAM
● 一个10/100Mbps 以太网控制器,MII 接口
● 两个HDLC 通道,每个通道可支持10Mbps
● 两个UART 通道
● 两个DMA 通道
● 两个32位定时/计数器
● 18个可编程I/O口
● 中断控制器,支持21个中断源,包括4个外部中断
● 支持SDRAM ,EDO DRAM,SRAM ,Flash 等
● 具有扩展外部总线
● JTAG接口,支持软件开发 ,硬件调试
S3C4510B 支持目前常用的嵌入式操作系统,如VxWorks 、pSoS 、ucLinux 等,本文将主要介绍VxWorks 操作系统下的软件开发。
ARM7TDMI 是ARM 家族通用的一款32位微处理器,它主要为用户提供了高性能、低价格解决方案。
ARM7TDMI 具有三级流水线的32位RISC 处理器,处理器结构为冯·诺依曼Load/Store。该CPU 具有两种指令集,即ARM 和Thumb 指令集。ARM 指令集是32位,它可以利用CPU 最大性能;而Thumb 指令集则是16位指令集。
2. VxWorks操作系统下BSP 构建
在完成板上基本硬件的测试后,下面我就开始对vxWorks 操作系统下BSP 进行开发,开发前需要做一些准备工作,如准备开发工具等。
① 开发工具用的是Tornado2.2 for ARM;
② 参考资料有BSP Kit、S3C4510B DataSheet;
③ 参考Tornado2.2 for ARM下自带的wrSBCArm7 BSP;
④ 烧写程序采用编程器。
通常在开发BSP 的时候,我们需要在Tornado 原带BSP 目录下找一个与我们所用的处理器相同或相近。与BSP 相关的文件有:romInit.s 、sysAlib.s 、bootInit.c 、bootConfig.c 、sysLib.c 、config.h 、configNet.h 、makefile 以及与我们硬件相关的,如串口sysSerial.c 等。由于篇幅所限,具体的文件作用在此就不说了。下面主要根据S3C4510B 来阐述一下BSP 开发步骤。
(1)拷贝BSP
将wrSBCArm7 BSP拷贝一份并命名为4510BSP ,接下来的工作就是修改该目录下的文件,从而得到自己的BSP 。
(2)修改MakeFile 文件
修改4510BSP 目录下的makefile 文件,修改如下几行:
TARGET_DIR = 4510BSP # changed by caiyang
VENDOR = CAI # changed by caiyang
BOARD = MyArmBoard # changed by caiyang
ROM_TEXT_ADRS = 01000000 # ROM entry address
ROM_WARM_ADRS = 01000004 # ROM warm entry address
ROM_SIZE = 00080000 # number of bytes of ROM space
RAM_LOW_ADRS = 00006000 # RAM text/data address (bootrom)
RAM_HIGH_ADRS = 00486000 # RAM text/data address (bootrom)
MACH_EXTRA =
注解:ROM_TEXT_ADRS:BOOT ROM的入口地址。对大多数板来说,这就是ROM 地址区的首地址,然而也有的硬件配置使用ROM 起始的一部分地址区作为复位向量,因此需要根据此设置偏移量作为它的地址。这个偏移量因CPU 结构而定。
ROM_WARM_ADRS:BOOT ROM热启动入口地址。它通常位于固定的
ROM_TEXT_ADRS+4的地方。当需要热启动时,sysLib.c 文件中
sysToMonitor( )函数代码明确的跳转到ROM_WARM_ADRS地址处开始执行。
ROM_SIZE:ROM 实际大小。
RAM_LOW_ADRS:装载Vxworks 的地址。
RAM_HIGH_ADRS:将Boot Rom Image拷贝到RAM 的目的地址。
注意:RAM_LOW_ADRS 和 RAM_HIGH_ADRS 都是绝对地址,通常位于DRAM 起始地址的偏移量处,该偏移量取决于CPU 结构,这需要参考VxWorks 内存分布。对于ARM 的内存分布请看图3,从图3可以看出RAM_LOW_ADRS在DRAM +0x1000处。这些地址对于S3C4510B 来说都应该是重映射后的地址。
(3)修改config.h 文件
主要是修改ROM_BASE_ADRS、ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS和undef 掉不需要的部分。注意这些应该和makefile 文件中设置的一致。
(4)修改romInit.s 文件
CPU 一上电就开始执行romInit( )函数,因此在romInit.s 代码段中它必须是第一个函数。对于热启动,处理器将会执行romInit( )加上4后的代码(具体参考sysLib.c 中的sysToMonitor( )函数)。更多的硬件初始化在
sysLib.c 中sysHwInit( )函数中,romInit( )的工作就是做较少的初始化并把控制权交给romStart( )(在bootInit.c 文件)。
在S3C4510B 处理器中,romInit.s 文件主要做了以下几个工作:
① 禁止CPU 中断并切换到SVC32模式;
② 禁止中断控制器;
③ 初始化SYSCFG 、EXTDBWTH 、ROMCON0、ROMCON1、DRAMCON0等寄存器,同时初始化了FLASH 、SDRAM 、DM9008等外围设备;
④ 将FLASH 的内容拷贝到SDRAM 中;
⑤ 改变FLASH 和SDRAM 的基地址,将SDRAM 基地址改为0;
⑥ 初始化堆栈指针;
⑦ 跳转到C 程序romStart( )函数中。
在这里,只需要修改SYSCFG 、EXTDBWTH 、ROMCON0、ROMCON1、DRAMCON0等寄存器来设置FLASH 、SDRAM 、DM9008的基地址和大小即可。这需要根据板上的配置来修改,修改的内容在wrSbcArm7.h 文件中。
BSP 基本部分就已经修改完成,至于bootInit.c 和bootConfig.c 文件,我们一般不需要修改它,只是在调试过程中为了方便调试,可以将他们拷贝到BSP 目录下,然后修改makefile 文件,在makefile 文件中添加如下两句。
BOOTCONFIG = bootConfig.c
BOOTINIT = bootInit.c
(5)利用tsfs (target server file system)下载
要利用tsfs 下载VxWorks ,首先需要配置以下内容:
① 在config.h 文件中添加如下内容
/* Serial port configuration */
#define INCLUDE_SERIAL
#undef NUM_TTY
#define NUM_TTY N_SIO_CHANNELS
#undef CONSOLE_TTY
#define CONSOLE_TTY 0
#undef CONSOLE_BAUD_RATE
#define CONSOLE_BAUD_RATE 38400
/*** WDB ***/
#ifdef SERIAL_DEBUG
#define WDB_NO_BAUD_AUTO_CONFIG
#undef WDB_COMM_TYPE
#undef WDB_TTY_BAUD
#undef WDB_TTY_CHANNEL
#undef WDB_TTY_DEV_NAME
#define WDB_COMM_TYPE WDB_COMM_SERIAL /* WDB in Serial mode */ #define WDB_TTY_BAUD 38400 /* Baud rate for WDB Connection */ #define WDB_TTY_CHANNEL 1 /* COM PORT #2 */
#define WDB_TTY_DEV_NAME "/tyCo/1" /* default TYCODRV_5_2 device name */
#endif /* SERIAL_DEBUG */
/* tsfs added by caiyang */
#define INCLUDE_TSFS_BOOT
并修改引导行为
#define DEFAULT_BOOT_LINE \par "tsfs(0,0)host:vxWorks f=8
h=169.254.72.67 e=169.254.72.68 u=caiyang pw=caiyang"
② 配置target server
启动Tornado 开发环境,选择Tool ->target server菜单。在下拉菜单中选“target server file system”并选中Enable File System,然后目录指
向Vxworks 所在的地方。同时注意要把Tornado Registry打开,这样配置完后点击Launch 按钮即可连接成功,此后就可以通过串口2下载VxWorks 和调试。
一般情况下,我们首先调试好BSP ,然后在调试网卡。所以在调试网卡前,我们需要用串口来下载VxWorks 映像。
至此,我们的BSP 就开发完成。
4 . 结论
在没有调试BSP 的硬件工具如仿真器的时候,我们只能通过点灯或者串口输出来定位程序执行的正确性。这大大增加了调试难度和进程。对于BSP 开发,一般需要从一个模板来修改。BSP 开发的正确性直接影响到VxWorks 系统运行的稳定性。
第六章 ARM9处理器与ARM7处理器比较
ARM处理器是世界上最流行的嵌入式处理器,广泛应用于个人通信等嵌入式领域。ARM7处理器虽然功能强大,但是目前已经开退出主流应用领域,代替
它的是性能更加强大的ARM9系列处理器。
ARM9系列处理器是英国ARM 公司设计的主流嵌入式处理器,主要包括ARM9TDMI 和ARM9E-S 等系列。本文主要介绍它们与ARM7TDMI 的结构以及性能比较。
以手机应用为例,2G 手机只需提供语音及简单的文字短信功能,而目前的
2.5G 和未来的3G 手机除了提供这两项功能外,还必须提供各种其他的应用功能。主要包括:(1)无线网络设备:手机上网、电子邮件及其他定位服务等功能;
(2)PDA功能:含有用户操作系统(Windows CE、Symbian OS、Linux 等) 及其他功能;(3)高性能功能:音频播放器、视频电话、手机游戏等。在2.5G 和3G 的应用中ARM9已经全面替代了ARM7。因为ARM9的新特性能够满足各种新需求的同时减少产品研发时间并降低研发费用。
新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。
1 .时钟频率的提高
ARM7处理器采用3级流水线,而ARM9采用5级流水线,如图1、2、3所示。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在同样的加工工艺下,ARM9TDMI 处理器的时钟频率是ARM7TDMI 的
1.8~2.2倍。
2. 指令周期的改进
指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。
2.1 loads 指令矛n stores指令
指令周期数的改进最明显的是loads 指令和stores 指令。从ARM7到ARM9这两条指令的执行时间减少了30%。指令周期的减少是由于ARM7和ARM9两种处理器内的两个基本的微处理结构不同所造成的。
(1)ARM9有独立的指令和数据存储器接口,允许处理器同时进行取指和读写数据。这叫作改进型哈佛结构。而ARM7只有数据存储器接口,它同时用来取指令和数据访问。
(2)5级流水线引入了独立的存储器和写回流水线,分别用来访问存储器和将结果写回寄存器。
以上两点实现了一个周期完成loads 指令和stores 指令。
2.2 互锁(interlocks)技术
当指令需要的数据因为以前的指令没有执行完而没有准备好就会产生管道互锁。当管道互锁发生时,硬件会停止这个指令的执行,直到数据准备好为止。虽然这种技术会增加代码执行时间,但是为初期的设计者提供了巨大的方便。编译器以及汇编程序员可以通过重新设计代码的顺序或者其他方法来减少管道互锁的数量。
2.3 分枝指令
ARM9和ARM7的分枝指令周期是相同的。而且ARM9TDMI 和ARM9E-S 并没有对分枝指令进行预测处理。
3 .ARM9结构及特点
以ARM9E-S 为例介绍ARM9处理器的主要结构及其特点。其主要特点如下:
(1)32bit定点RISC 处理器,改进型ARM /Thumb 代码交织,增强性乘法器设计。支持实时(real-time)调试;
(2)片内指令和数据SRAM ,而且指令和数据的存储器容量可调;
(3)片内指令和数据高速缓冲器(cache)容量从4K 字节到1M 字节;
(4)设置保护单元(protcction unit),非常适合嵌入式应用中对存储器进行分段和保护;
(5)采用AMBA AHB总线接口,为外设提供统一的地址和数据总线;
(6)支持外部协处理器,指令和数据总线有简单的握手信令支持;
(7)支持标准基本逻辑单元扫描测试方法学,而且支持BIST(built-in-self-test) ;
(8)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。
4 .ARM9的典型应用
TI 公司的OMAP730是最新的无线通信基带信号处理器。该处理器是TI 的GPRS Class 12通信模块与专用于应用处理的ARM926通用处理器(GPP)的集成。由于GPP 的速度可达200MHz ,因此OMAP730具有两倍于上一代OMAP710处理器的应用处理性能。如同所有的OMAP 处理器一样,OMAP730可支持领先的移动操作系统,其中包括Microsoft 的智能电话与Pocket PC PhoneEdition、Svmbian OS与Series 60、Palm OS以及Linux 。
TI OMAP730结构如图5所示。其中ARM926TEJ 处理器的主要特性包括:(1)最高频率200MHz ;(2)16KB指令高速缓存,8KB 数据高速缓存;(3)硬件JAVA 加速;(4)扩展多媒体指令集结构。
ARM 微处理器是一种高性能、低功耗的32位微处器,它被广泛应用于嵌入式系统中。ARM9代表了ARM 公司主流的处理器,已经在手持电话、机顶盒、数码像机、GPS 、个人数字助理以及因特网设备等方面有了广泛的应用。
第七章 总结
AMR (Audio/MODEM Riser,声音/调制解调器插卡)是一套开放工业标准,它定义的扩展卡可同时支持声音及MODEM 功能。采用这种设计,可有效降低成本,同时解决声音与MODEM 子系统目前在功能上的一些限制。
人们其实早就想把MODEM 子系统集成到主板上,但由于存在电磁干扰以及另一些不方便的因素,所以MODEM 最重要的模拟I/O(编码/译码器和DAA )电路暂时还不能直接焊到主板上。Intel 公司之所以制订这套AMR 规则,很重要的一个目的就是解决这个问题,将模拟I/O电路转移到单独的插卡中,其他部件则留在主板上。
通过一个开放的、工业标准的插卡设计,系统厂商可采用标准或专用插槽,用极低的成本在主板上实现声音和MODEM 功能。由于具有更大的灵活性,主板上可集成更多的加速功能,这一切都要归功于AMR 接口。
基本的AMR 架构支持声音及MODEM 子系统的硬件加速。加速器位于预处理数据源与处理数据目的地之间,它直接从主内存取得预先处理好的数据,再通过AC 链路,将其直接传递给解码芯片。
正是由于硬件上的这种伸缩性,系统厂商可选择将哪个控制器作为AC 链路主控来使用。在可以预见的将来,越来越多的硬件设备会集成到一起,既能节约空间,也能降低成本。但这一切都要依赖业界通行的标准。由Intel 制订的AMR1.01规范只是迈出了一小步而已。在一些科幻小说中,已指出未来的CPU 将是一个各种功能的大杂烩,同时具有MODEM 、声卡、内存、显卡等功能。但愿这不是一个遥远的梦!
第八章 心得体会
这学期的学习真的是让我受益匪浅,有成长的快乐,有丰收的喜悦,有不懂的遗憾,还有即将离别的不舍。这几天的学习真的给我太多的感受,这学期的学习让我一生都受用无穷。将成为我人生旅途中最宝贵的收获。通过学习,感觉到自己有太多的计算机的知识不懂,比如:ARM 处理器内部结构、ARM 编译器对C 语言的扩展„„感受到不懂计算机,真的是太落后了,通过学习感受到自己又学到了很多的知识,在今后的学习中,我一定经常上机实验,争取早日驾驭电脑,学有所用。
参考文献: [1]邹思铁. 嵌入式Linux 设计与应用[M].2002
[2]田泽. 嵌入式系统开发与应用[M].北京航空航天大学出版
社.2005
[3]陈鑫. 嵌入式软件技术的现状与发展动向[M].软件世界.2001
[4]田泽. 嵌入式系统开发与应用实验教程[M].北京航空航天大
学出版社.2004