《基于ARM处理器和嵌入式操作系统uClinux的web-server实现.pdf》由会员分享,可在线阅读,更多相关《基于ARM处理器和嵌入式操作系统uClinux的web-server实现.pdf(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、上海交通大学硕士学位论文基于ARM处理器和嵌入式操作系统uClinux的web-server实现姓名:杜展申请学位级别:硕士专业:通信与信息系统指导教师:胡逢曜20031201 -4-摘要 嵌入式应用由来已久随着像蜂窝电话磁盘驱动器调制解调器和传呼机这类对功耗要求极其严格的嵌入式控制应用的需求越来越大 人们需要性能更高同时功耗极小的处理器结合了 Thumb 指令集的 ARM7TDMI 32 位精简指令RISC处理器核满足了这种要求与此同时应用的复杂性要求使得嵌入式操作系统得到广泛应用uClinux 是一种开放源码的优秀嵌入式操作系统本文描述了利用 uClinux 和 ARM7TDMI 平台开发
2、应用程序的方法和相关理论做为实例本文在一块 ARM 开发板上实现了一个网页服务器软件 本文主要包含以下几个方面 1.ARM 处理器和嵌入式操作系统?介绍了 ARM 处理器的工作原理并着重介绍了 ARM7TDMI 的结构特性?介绍了嵌入式操作系统 uClinux 的工作原理及特性 2.Linux 上 web-server Boa介绍以及 CGI 程序的实现?介绍了网页服务器软件 Boa 的配置方法?本文研究了 CGI 程序的编写方法并实现了一个可用于餐饮订单的CGI 程序 3.ARM 开发板的介绍包括硬件配置和电路模块分析 4.uClinux 编译原理 本文跟踪了 uClinux 生成可用机器代
3、码的编译过程 解析了 uClinux 的工作原理框架结构 5.实验板的 bios 设计 本文介绍了实验板 bios 的编写原理并实现了 bios 程序 6.用户应用程序的嵌入化方法 本文给出 tftp 即时传输NFS 加载和嵌入式编译三种方法其中嵌入式 -5-编译以 Boa 为例 使得用户程序可以顺利工作在 uClinux ARM 体系中 7.实例演示 给出了 Boa 在 ARM 开发板上的运行效果 关键词ARMuClinux精简指令CGI网页服务器软件 -6-Abstract Engineers have worked on embeded application for a long ti
4、me.Because the power restriction of cell phone,disk driver and modem is a great challenge to embeded application,people need stronger and lower power-consumption systems.ARM7TDMI kernel containing Thumb instruction set can meet this requirement.in the mean time,the complex situation met in applicati
5、ons makes embeded OS(Operating System)widely used.uClinux is an excellent and open-sourced Embeded OS.this article describes methodologies and theories to develop application using uClinux and ARM7TDMI platform.for an instance,the author realizes a web-server on the ARM board.This article concludes
6、following aspects:1.ARM MCU and Embeded OS?Introduce ARM MCUs working theory and emphasize on ARM7TDMIs structure and features?Introduce Embeded OS-uClinuxs working theory and features 2.free web-server software Boa introduction and realization of CGI program?Introduce Boa and its configuration?This
7、 article discusses how to write a CGI program and realize a CGI program which eases an ordering process.3.introduction to ARM board:hardware configuration and circuits module analysis.4.uClinuxs compilation theory:this article traces uClinuxs compilation procedure,analyzes uClinuxs working theory an
8、d architeture.5.ARM boards bios realiztion:This article dicusses how to develop a bios for the ARM board.6.methodology to embed users application:this article provides 3 methodstftp real-time download,NFS download and -7-Embeded Compilation to make users application smoothly run in uClinux and ARM p
9、latform.7.experiment demostration:Show the experiment phenomina when realizing Boa on the ARM board.KEY WORDS:ARMuClinuxCGI(Common Gateway Interface)Web-server -2-上海交通大学 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完
10、全意识到本声明的法律结果由本人承担。学位论文作者签名:杜 展 日期:2004 年 1 月 10 日 -3-上海交通大学 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权上海交通大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。保密,在 年解密后适用本授权书。本学位论文属于 不保密。(请在以上方框内打“”)学位论文作者签名:杜 展 指导教师签名:胡逢曜 日期:2 0 0 4 年 1 月 1 0 日 日期:2 0
11、 0 4 年 1 月 1 0 日 -1-第一章 引言 1.1 嵌入式系统的发展前景 嵌入式系统被定义为以应用为中心以计算机技术为基础软件硬件可裁剪对功能可靠性成本体积功耗严格要求的专用计算机系统 嵌入式系统是将先进的计算机技术半导体技术和电子技术和各个行业的具体应用相结合后的产物这一点就决定了它必然是一个技术密集资金密集高度分散不断创新的知识集成系统 大到油田的集散控制系统和工厂流水线小到家用 VCD 机或手机甚至组成普通 PC 终端设备的键盘鼠标软驱硬盘显示卡显示器Modem网卡声卡等均是由嵌入式处理器控制的嵌入式系统市场的深度和广度由此可见一斑尽管如此它的市场价值也许仍然超过了您的想象今天
12、嵌入式系统带来的工业年产值已超过了 1 万亿美元 1.2.嵌入式系统工业Embedded System Industry,ESI的特点和要求 1.2.1 嵌入式系统工业是不可垄断的高度分散的工业 从某种意义上来说通用计算机行业的技术是垄断的占整个计算机行业90%的 PC 产业80%采用 Intel的 8x86 体系结构芯片基本上出自 Intel,AMD,Cyrix 等几家公司在几乎每台计算机的操作系统和文字处理器方面Microsoft的 Windows 及 Word 占 80 90%,凭借操作系统还可以搭配其它应用程序因此当代的通用计算机工业的基础被认为是由 WintelMicrosoft 和
13、 Intel 90 年代初建立的联盟垄断的工业 嵌入式系统则不同它是一个分散的工业充满了竞争机遇与创新没有哪一个系列的处理器和操作系统能够垄断全部市场 即便在体系结构上存在着主流 但各不相同的应用领域决定了不可能有少数公司 少数产品垄断全部市场因此嵌入式系统领域的产品和技术必然高度分散留给各个行业的中小规模高技术公司的创新余地很大另外社会上的各个应用领域是在不断向前发展的要求其中的嵌入式处理器核心也同步发展 这也构成了推动嵌入式工业发展的强 -2-大动力 嵌入式系统工业的基础是以应用为中心的芯片设计和面向应用的软件产品开发 1.2.2 嵌入式系统具有的产品特征 嵌入式系统是面向用户面向产品面向
14、应用的和通用计算机不同嵌入式系统的硬件和软件都必须高效率地设计量体裁衣去除冗余力争在同样的硅片面积上实现更高的性能 这样才能在具体应用对处理器的选择面前更具有竞争力嵌入式处理器要针对用户的具体需求对芯片配置进行裁剪和添加才能达到理想的性能 但同时还受用户订货量的制约因此不同的处理器面向的用户是不一样的可能是一般用户行业用户或单一用户 嵌入式系统和具体应用有机地结合在一起 它的升级换代也是和具体产品同步进行因此嵌入式系统产品一旦进入市场具有较长的生命周期嵌入式系统中的软件一般都固化在只读存储器中而不是以磁盘为载体可以随意更换所以嵌入式系统的应用软件生命周期也和嵌入式产品一样长另外各个行业的应用系
15、统的对应产品和通用计算机软件不同很少发生突然性的跳跃嵌入式系统中的软件也因此更强调可继承性和技术衔接性发展比 较稳定 嵌入式处理器的发展也体现出稳定性一个体系一般要存在 810 年的时间 1.2.3 嵌入式系统软件的特征 嵌入式处理器的应用软件是实现嵌入式系统功能的关键对嵌入式处理器系统软件和应用软件的要求也和通用计算机有所不同 1软件要求固态化存储 为了提高执行速度和系统可靠性嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中而不是存贮于磁盘等载体中 2 软件代码高质量高可靠性 尽管半导体技术的发展使处理器速度不断提高片上存储器容量不断增加但在大多数应用中存储空间仍然是宝贵的还存在实时性
16、的要求为此要求程序编写和编译工具的质量要高以减少程序二进制代码长度提高执行速度 3系统软件(OS)的高实时性是基本要求 -3-在多任务嵌入式系统中对重要性各不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键 单纯通过提高处理器速度是无法完成和没有效率的 这种任务调度只能由优化编写的系统软件来完成因此系统软件的高实时性是基本要求 1.2.4 嵌入式系统开发需要开发工具和环境 通用计算机具有完善的人机接口界面在上面增加一些开发应用程序和环境即可进行对自身的开发 而嵌入式系统本身不具备自由开发能力即使设计完成以后用户通常也是不能对其中的程序功能进行修改的 必须有一套开发工具和环境才能进行
17、开发 这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪混合信号示波器等 1.2.5 嵌入式系统软件需要 RTOS 开发平台和专业的开发人员 通用计算机具有完善的操作系统应用程序接口(API)它是计算机基本组成不可分离的一部分应用程序的开发以及完成后的软件都在 OS 平台上面运行但一般不是实时的嵌入式系统则不同应用程序可以没有操作系统直接在芯片上运行但是为了合理地调度多任务利用系统资源系统一般以成熟的实时操作系统作为开发平台 这样才能保证程序执行的实时性 可靠性 并减少开发时间保障软件质量 通用计算机的开发人员一般是计算机科学或计算机工程方面的专业人士而嵌入式系统则是要和各个不
18、同行业的应用相结合的 要求更多的计算机以外的专业知识其开发人员往往是各个应用领域的专家因此开发工具的易学易用可靠高效是基本要求 1.3 嵌入式处理器分类与现状 嵌入式系统的核心部件是各种类型的嵌入式处理器目前据不完全统计全世界嵌入式处理器的品种总量己经超过1000多种 流行体系结构有30几个系列其中 8051 体系的占有多半生产 8051 单片机的半导体厂家有 20 多个共 350多种衍生产品仅 Philips 就有近 100 种现在几乎每个半导体制造商都生产嵌入式处理器越来越多的公司有自己的处理器设计部门嵌入式处理器的寻址空 -4-间一般从 64KB 到 1632 MB,处理速度从 0.1M
19、IPS 到 2000MIPS,常用封装从 8个引脚到 144 个引脚根据其现状嵌入式计算机可以分成下面几类 1.3.1 嵌入式微处理器Embedded Microprocessor unit,EMPU 嵌入式微处理器的基础是通用计算机中的 CPU在应用中将微处理器装配在专门设计的电路板上只保留和嵌入式应用有关的母板功能这样可以大幅度减小系统体积和功耗为了满足嵌入式应用的特殊要求嵌入式微处理器虽然在功能上和标准微处理器基本是一样的但在工作温度成本功耗可靠性健壮性等方面和工业控制计算机相比嵌入式微处理器具有体积小重量轻成本低可靠性高的优点但是在电路板上必须包括 ROM,RAM,总线接口各种外设等器
20、件从而降低了系统的可靠性技术保密性也较差嵌入式处理器目前主要有 Am186/88,386Ex,SC-400,Power PC,68000,MIPS,ARM系列等 1.3.2 嵌入式微控制器(Microcontroller UnitMCU)嵌入式微控制器又称单片机顾名思义就是将整个计算机系统集成到一块芯片中嵌入式微控制器一般以某一种微处理器内核为核心芯片内部集成ROM/EPROMRAM总线总线逻辑定时计数器WatchDog I/O串行口脉宽调制输出A/D D/A Flash RAMEEPROM 等各种必要功能和外设为适应不同的应用需求一般一个系列的单片机具有多种衍生产品每种衍生产品的处理器内核都
21、是一样的 不同的是存储器和外设的配置及封装这样可以使单片机最大限度地和应用需求相匹配功能不多不少从而减少功耗和成本 嵌入式微控制器目前的品种和数量最多 比较有代表性的通用系列包括 8051,P51XA WS 25t,WS 96/t96/296,Ct66/t67,MC68HC05/II/l2/I6,68300 等另外还有许多半通用系列如支持 USB接口的 MCD8XC930/931,C540,C541;支持 I2C,CANBus,LCD 及众多专用 MCO 和兼容系列 目前 MCU占嵌入式系统约 70%的市场份额 1.3.3 DSP 处理器Embedded Digital Signal Proc
22、essor)DSP 处理器对系统结构和指令进行了特殊设计使其适合于执行 DSP 算法编译效率较高指令执行速度也较高在数字滤波FFT谱分析等方面 DSP算法正在大量进入嵌入式领域DSP 应用正从在通用单片机中以普通指令实现 -5-DSP 功能过渡到采用嵌入式 DSP 处理器 1.3.4 嵌入式片上系统(System On Chip)随着 EDI 的推广和 VLSI 设计的普及化及半导体工艺的迅速发展在一个硅片上实现一个更为复杂的系统的时代己来临这就是 System On Chip(SOC)各种通用处理器内核将作为 SOC 设计公司的标准库和许多其它嵌入式系统外设一样成为 VLSI 设计中一种标准
23、的器件用标准的 VHDL 等语言描述存储在器件库中用户只需定义出其整个应用系统仿真通过后就可以将设计图交给半导体工厂制作样品 这样除个别无法集成的器件以外整个嵌入式系统大部分均可集成到一块或几块芯片中去应用系统电路板将变得很简洁对于减小体积和功耗提高可靠性非常有利 1.4 嵌入式网页服务器 Boa 的优点 提到 web-server不得不提到 Apache它提出了 web-server 的很多标准而且功能强大 据统计 商业网站使用的 web-server 有 64是 Apache 尽管 Apache是如此优秀但是它并不适合嵌入式应用 首先Apache 体积巨大它在 unix 平台上源码达 25
24、.5MB在 winNT 平台上的安装文件近 6MB安装后文件占用 22MB 空间根本无法应用在嵌入式系统中 嵌入式系统一般用 flash 放置操作系统和应用程序 而使用的 flash 一般 12MB不少应用只有几百 KB其次Apache 对系统要求过高在 win2000P4平台下无访问任务时运行 Apche 时就需消耗 3.8M 内存当外部访问量较大时对内存和 CPU 占用率消耗极大而且Apache 移植困难因为它支持众多功能而且文件链接库繁多要裁减和移植要消耗极大的工作量 比较起来 Boa 有嵌入式优势首先它的源码极小只有 200KB左右编译好的可执行文件加上配置文件只有 50KB左右这可以
25、适应嵌入式存储环境其次 Boa 对系统要求不高 测试表明 Boa 可以在 20MHz 的 386/SX 上能承受每秒几十次的主页点击这对于一般只有 50MHz 左右的嵌入式处理器是很不错的表现而且Boa 由于代码精悍而且都是用 C 语言写成容易移植Boa 虽然体积小但是功能强大它可以支持负责的静态页面体系它还支持 CGI 程序 -6-用户可以自行编写 CGI 程序实现 BBS订单等功能至于安全方面Boa 可以设置成对连接使用 SSL(Secure Sockets Layer)在本文中实现了嵌入式 Boa 它可以方便的制成火柴盒大小的产品 该产品只需要一块 S3C4510B 芯片一块 1 到 2
26、MB 的 flash 以太网控制器和 5 伏电源即可 当给它一个 IP 地址并连接到 internet 上就可以提供网页访问服务用户若是要更改网页或 CGI 程序也很方便 只需在 PC 机上重新编译好二进制代码再烧入 flash 即可整个嵌入式 web-server 功耗只有几十毫瓦成本也极低不足百元该产品可以为家庭小企业提供网页服务器 1.5 嵌入式应用程序开发方法 嵌入式产业是一个不可垄断的产业这意味着存在着众多的嵌入式处理器和嵌入式操作系统但是嵌入式开发方法基本一样主要分软件与硬件来考虑 硬件方面主要根据应用需要选择芯片 然后根据芯片开发商提供的评估板进行裁减 降低成本 获得想要的硬件支
27、持调试停当后要针对硬件配置编写bios不仅要对芯片和开发板初始化还要提供界面和网络传输工具传送二进制代码 软件方面首先要选取合适的嵌入式操作系统这里主要参考指标是实时性要求和代码容量对选好的操作系统需要仔细分析例如分析它的架构库函数的作用与用户程序的接口等等然后编写应用程序这时需要选择工具是用GNU 交叉编译器还是第三方集成开发环境最后需要调试程序现在大多嵌入式处理器支持在线 debug当然也可以依靠 ICE 等器件方便跟踪调试成功后可以把二进制文件烧写入 flash 中当考虑产品化时还可以对开发板精简如精简dram 大小去掉多余的 I/O 口等等尽量节约成本最终可获得小巧又满足开发要求的产品
28、 本课题的意义不仅仅在于实现一个 web-server更旨在体现嵌入式开发的过程本文选择了 ARM 和 uClinux上面描述的流程基本都涵盖了下面的章节将会看到 实验开发板剪裁适当以运行 uClinux;作者编写了 bios 分析了 uClinux下如何将操作系统内核与应用程序结合成可用二进制代码还指出了 uClinux 下 -7-应用程序调试方法由于硬件条件限制本文无法介绍在线调试采用了交叉编译在线校验的办法测试 Boa 以及 CGI 程序是否可以顺利运行 Linux 上有无数优秀的源程序和驱动程序用户可以方便的移植到 uClinux 上实现诸如 lcd 驱动GUIroutermp3 播放
29、等等功能这些已经被很多厂商的工程师实现了这些软件的开发工序基本一样只是软件硬件的裁减移植时考虑的细节不同这里的 Boa 开发实例只是抛砖引玉罢了 1.6 本文研究的目的及下面的章节安排 本文在介绍了嵌入式系统的发展前景特点以及嵌入式处理器的基础上选用了 uClinux 嵌入式操作系统和目前应用十分广泛的 ARM 处理器分析了嵌入式开发的过程实现了一个拥有 CGI 处理功能的 Web-server 下面的章节安排如下 第二章 介绍 ARM(尤其是 ARM7TDMI)架构和特性 ARM 是本论文讨论的硬件平台这里对 ARM 的两种处理器状态寄存器异常等进行了介绍 由于本次实验使用的开发板采用了基于
30、 ARM7TDMI 架构的S3C4510B 芯片为此简要介绍了 ARM7TDMI 的特性和 S3C4510B 的芯片配置情况 第三章 介绍了嵌入式操作系统 uClinux 这里先简要介绍了嵌入式操作系统和开发工具接着介绍了 uClinux它是本文讨论的软件平台也是标准 Linux 的嵌入式改进版本论文在 uClinux 的内存管理进程管理文件系统方面进行了详细的分析并与标准 Linux 进行了比较 第四章 BOA 与 CGI 的介绍与实现 本文旨在嵌入式软件开发开发实例选用了 Linux 下优秀的 web-server 软件Boa它不仅支持静态页面显示还支持 CGI 程序CGI 使得客户端通过
31、网页与服务器端进行数据操作交互本文讨论了 CGI 的实现机理实现了一个可用于订单操作的 CGI 程序 第五章 在实验板上实现了 uClinux 和 web-server并对实现的原理与过程进行了分析 -8-这里主要涉及四个方面 1.uClinux 编译原理 本文选用的 uClinux 是官方的 uClinux-dist 版本这个开发包集成了 uClinux内核源程序以及一些已经移植成功的应用程序 其中包括 Boa对 uClinux 进行编译可以获得 image.ram 和 image.rom 两个文件前者可置于 ARM 开发板的sdram 中需要 bios 加载才可以运行后者需要置于开发板的
32、flash 中上电后即可运行本文跟踪了 uClinux 生成可用机器代码的编译过程解析了 uClinux的工作原理框架结构 2.实验板的 bios 设计 芯片的初试化工作交给 bios 完成image.rom 虽然含有开发板启动代码但烧写 flash 耗时对应用开发很不利bios 主要对应 image.ram 的加载它包括运行 image.rom 时的初始化代码 bootloader 还提供宿主机与目标板的交互支持为此本文讨论了开发板对应 bios 的设计方法 3.用户应用程序的嵌入化方法 本文给出了 tftp 即时传输NFS 加载和嵌入式编译三种方法其中嵌入式编译以 Boa 为例使得用户程序
33、可以顺利工作在 uClinuxARM 体系中 4在以上工作的基础上本文给出了 web-server 的演示程序该演示成功的在实验板上展示了 Boa 对静态网页CGI 程序的支持 -9-第二章 ARM7TDMI 架构和特性介绍 2.1 ARM 的发展历史 C I S C 体系由于指令集庞大 指令长度不固定指令执行周期有长有短使指令译码和流水线的实现在硬件上非常复杂 给芯片的设计开发和成本的降低带来了极大困难 针对这些明显的弱点美国加州大学伯克利分校的研究生团队设计和实现了伯克利R I S C 处理器他们在此基础之上又发展了后来S U N 公司的S P A R C 系列R I S C 处理器 并使
34、得采用该处理器的S U N 工作站名振一时与此同时 斯坦福大学也在R I S C 研究领域取得了重大进展开发并产业化了M I P S 系列R I S C 处理器被这两种R I S C 处理器所取得的巨大成功所鼓舞英国的A c o r n 计算机公司在1 9 8 3 到1 9 8 5 年之间也开发出了第一代A R M R I S C 处理器当时A R M 还只是A c o r n R I S C M a c h i n e 的缩写之后于1 9 9 0 年公司又把名字改为简单的A d v a n c e d R I S C M a c h i n e 的缩写经过这么多年的发展A R M 已经形成了
35、如下系列的大家族 C o r e A r c h i t e c t u r e A R M 1 V 1 A R M 2 V 2 A R M 2 a S A R M 3 V 2 a A R M 6 A R M 6 0 0 A R M 6 1 0 V 3 A R M 7 A R M 7 0 0 A R M 7 1 0 V 3 A R M 7 T D M I A R M 7 1 0 T A R M 7 2 0 T A R N 7 4 0 T V 4 T A R M 8 A R M 8 1 0 S t r o n g A R M V 4 A R M 9 T D M I A R M 9 2 0 T A
36、 R M 9 4 0 T V 4 T A R M 9 E-S V 5 T E A R M 1 0 T D M I A R M 1 0 2 0 E V 5 T E T a b l e 2.1 A R M 的家族谱系 T a b l e 2.1 中的核心C o r e 包括处理器核P r o c e s s o r C o r e(A R M 7 T D M I A R M 8S t r o n g A R M A R M 9 T D M I&A R M 1 0 T D M I 和C P U C o r e 其它C P U C o r e 实际上是在 -10-各种相应的处理器核的基础之上集成和优化
37、了C a c h e 和M M U 内存管理单元后形成的它能以单独的C P U 芯片提供给用户更高的性能而各种处理器核P r o c e s s o r C o r e 则可用软I P 模块或者硬I P 模块的方式嵌入到各种用户不同的应用之中 形成相应的S O C S y s t e m O n C h i p 系统芯片这不仅节省了功耗和成本还最大限度的节省了用户的开发时间另外特别值得一提的是S t r o n g A R M 它原来是D E C 公司和A R M 公司合作开发的1 9 9 8 年I n t e l 收购了D E C 的半导体部门此后I n t e l 又开发和生产出S A 1
38、 1 0 S A 1 1 0 0 S A 1 1 1 0 等一系列S t r o n g A R M 高性能嵌入式处理器 特别是S A 1 1 1 0本身就是一个非常典型的S O C 芯片已经把液晶控制器外设接口U S B I r D A U A R T P C M C I A音频编解码器C o r d e c 等和C P U 集成到了同一个芯片内可以很方便地嵌入于各种掌上设备 2.2 ARM 处理器结构介绍 2.2.1 ARM是 RISC 处理器 A R M 处理器实现加载/存储体系结构是典型的R I S C 处理器只有加载和存储指令可以访问存储器数据处理指令只对寄存器的内容进行操作1 A
39、R M 的R I S C 特点如下 指令规整对称简单指令小于1 0 0 条基本寻址方式2 3 种 单周期指令和流水线体系设计 指令字长度一致单拍完成便于流水操作 A R M 7 三级流水线取指译码执行 -A R M 9 五级流水线 -A R M 1 0 六级流水线 大量的寄存器寄存器不少于3 2 个数据处理器的指令只对寄存器的内容操作只有加载/存储可以访问存储器 2.2.2 ARM和 Thumb 状态 A R M 体系结构V 4 T 及其以上版本定义了称为T h u m b 指令集的1 6 位指令集T h u m b指令集的功能是3 2 位A R M 指令集的功能子集 T h u m b 在性
40、能和代码大小之间提供了 -11-出色的折中 正在执行T h u m b 指令集的处理器是工作在T h u m b 状态下正在执行A R M 指令集的处理器是工作在A R M 状态下 在A R M 态下的处理器不能执行T h u m b 指令在T h u m b 状态下的处理器不能执行A R M 指令每个指令集都包括切换处理器状态的指令 A R M 处理器总是在A R M 态下开始执行代码 A R M 处理器支持7 种处理器模式1 用户模式正常程序执行模式;F I Q-F a s t I n t e r r u p t r e Q u e s t 中断模式支持高速数据传送或通道处理;I R Q-
41、I n t e r r u p t R e Q u e s t 中断模式用于通用中断处理;管理模式操作系统保护模式;中止模式实现虚拟存储器和/或存储器保护;系统模式运行特权操作系统任务;未定义支持硬件协处理器的软件仿真 在软件控制下可以改变模式外部中断或异常处理也可以引起模式发生改变 大多数应用程序在用户模式下执行当处理器工作在用户模式时正在执行的程序不能访问某些被保护的系统资源 也不能改变模式 除非异常(e x c e p t i o n)发生这允许适当编写操作系统来控制系统资源的使用 除用户模式以外的所有模式均用特权模式表示它们可以自由的访问系统资源和改写模式其中的5 种称为异常模式即F
42、I Q I R Q 管理中止未定义当特定的异常出现时进入相应的模式每种模式都有一些附加的模式以避免异常出现时用户模式的状态不可靠 剩下的模式是系统模式仅A R M 体系结构V 4 及以上版本有该模式它与用户模式有完全相同的寄存器而它是特权模式不受用户模式的限制它供需要访问系统资源的操作系统任务使用 2.2.3 ARM 寄存器的分配及功能 A R M 处理器有3 7 个寄存器1 3 1 个通用寄存器包括程序计数器(P C)这些寄存器是3 2 位的 -12-6 个状态寄存器这些寄存器也是3 2 位的但只用了其中的1 2 位 寄存器被安排成部分重叠的组(o v e r l a p p i n g b
43、 a n k)每种处理器模式都有不同的寄存器组如图F i g 2.1 所示分组的寄存器在处理处理器异常和特权操作时可以得到快速的上下文切换 通用寄存器可分成3 类不分组寄存器R 0-R 7;分组寄存器R 8-R 1 4;程序计数器R 1 5 R 0-R 7 在所有处理器模式下都真正通用 R 8-R 1 2 各有两组寄存器 一组为F I Q 模式 另一组为除F I Q 以外的其它模式 R 1 3 R 1 4 各有6 个分组的物理寄存器1 个用于用户模式和系统模式而其它5 个分别用于5 种异常模式 通常寄存器R 1 3 做为堆栈指针 在用户模式下R 1 4 用做链接寄存器(L R)在子程序调用时来
44、保存返回地址在异常处理模式下R 1 4 用来保存异常的返回地址程序计数器用R 1 5(P C)访问在A R M 状态下每条指令加1 个字(4 个字节)在T h u m b 状态下每条指令加2 个字节在执行时R 1 5 不包含当前执行指令的地址典型情况下当前执行指令的地址在A R M 态下是P C-8 T h u m b 态下是P C-4 用户系统管理中止未定义中断快中断R 0R 0R 0R 0R 0R 0R 0R 1R 1R 1R 1R 1R 1R 1R 2R 2R 2R 2R 2R 2R 2R 3R 3R 3R 3R 3R 3R 3R 4R 4R 4R 4R 4R 4R 4R 5R 5R 5
45、R 5R 5R 5R 5R 6R 6R 6R 6R 6R 6R 6R 7R 7R 7R 7R 7R 7R 7R 8R 8R 8R 8R 8R 8R 8 _ F I QR 9R 9R 9R 9R 9R 9R 9 _ F I QR 1 0R 1 0R 1 0R 1 0R 1 0R 1 0R 1 0 _ F I QR 1 1R 1 1R 1 1R 1 1R 1 1R 1 1R 1 1 _ F I QR 1 2R 1 2R 1 2R 1 2R 1 2R 1 2R 1 2 _ F I QR 1 3R 1 3R 1 3 _ S V CR 1 3 _ A B TR 1 3 _ U N DR 1 3 _ I
46、R QR 1 3 _ F I QR 1 4R 1 4R 1 4 _ S V CR 1 4 _ A B TR 1 4 _ U N DR 1 4 _ I R QR 1 4 _ F I QP CP CP CP CP CP CP CC P S RC P S RC P S RC P S RC P S RC P S RC P S RS P S R _ S V CS P S R _ A B TS P S R _ U N DS P S R _ I R QS P S R _ F I Q模式特权模式异常模式 Fig2.1 ARM的寄存器组织 -13-在所有处理器模式下都可以访问当前程序状态寄存器C P S R C
47、 P S R 包含条件码标志中断禁止位当前处理器模式以及其它状态和控制信息每种异常模式有一个程序状态保存寄存器S P S R 当异常出现时S P S R 用于保留C P S R 的状态 C P S R 和S P S R 的格式如下 NZCVQD N M(R A Z)IFTMMMMM从左到右是高位到低位 N Z C V位被称为条件码标志 分别表示Negative Zero Carry oVerflow这些标志可由大多数指令检测以决定指令是否执行 标志Q用于指出在增强型DSP指令中是否出现溢出或饱和 当IF置1时分别禁止IRQFIQ中断 标志位T在v4及以上版本指示目前的指令状态是ARM态或Thu
48、mb态 M 4 0 是模式位用于决定处理器的工作模式如T a b l e 2.2 所示 M 4:0 模式可访问的寄存器0 b 1 0 0 0 0用户P C,R 1 4-R 0,C P S R0 b 1 0 0 0 1F I QP C,R 1 4 _ F I Q-r 8 _ F I Q,R 7-R 0,C P S R,S P S R _ F I Q0 b 1 0 0 1 0I R QP C,R 1 4 _ I R Q,R 1 3 _ I R Q,R 1 2-R 0,C P S R,S P S R _ I R Q0 b 1 0 0 1 1管理P C,R 1 4 _ S V C,R 1 3 _ S
49、V C,R 1 2-R 0,C P S R,S P S R _ S V C0 b 1 0 1 1 1中止P C,R 1 4 _ A B T,R 1 3 _ A B T,R 1 2-R 0,C P S R,S P S R _ A B T0 b 1 1 0 1 1未定义P C,R 1 4 _ U N D,R 1 3 _ U N D,R 1 2-R 0,C P S R,S P S R _ U N D0 b 1 1 1 1 1系统P C,R 1 4-R 0,C P S R(A R M v 4 及以上版本)Table 2.2 ARM的用户模式位配置 并非所有的模式位组合都能定义一个有效的处理器模式其它组
50、合的结果不可预知 程序状态寄存器的其它位保留用做以后的扩展 T h u m b 态下的寄存器集是A R M 态下寄存器集的子集程序员可以直接访问8 个通用寄存器(R 0-R 7)P C S P L R C P S R 每一种特权模式都有一组S P L R 和S P S R 详见F i g 2.2.-14-2.2.4 ARM和 Thumb 指令集概述 所有A R M 指令是3 2 位长度指令以字对准保存这样A R M 状态指令地址的最低2 位总是零 具有8 位1 6 位3 2 位带符号或无符号数传送能力 所有T h u m b 指令是1 6 位长度在存储器中半字对准保存因此指令的最低有效位在T