基于ARM嵌入式的bootloader的设计与实现.doc

上传人:仙人指路1688 文档编号:2392664 上传时间:2023-02-17 格式:DOC 页数:53 大小:674.50KB
返回 下载 相关 举报
基于ARM嵌入式的bootloader的设计与实现.doc_第1页
第1页 / 共53页
基于ARM嵌入式的bootloader的设计与实现.doc_第2页
第2页 / 共53页
基于ARM嵌入式的bootloader的设计与实现.doc_第3页
第3页 / 共53页
基于ARM嵌入式的bootloader的设计与实现.doc_第4页
第4页 / 共53页
基于ARM嵌入式的bootloader的设计与实现.doc_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《基于ARM嵌入式的bootloader的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于ARM嵌入式的bootloader的设计与实现.doc(53页珍藏版)》请在三一办公上搜索。

1、基于ARM嵌入式系统的通用bootloader的设计与实现摘要随着移动设备的流行和发展,嵌入式系统已经成为一个热点。它并不是最近出现的新技术,只是随着微电子技术和计算机技术的发展,微控制芯片功能越来越大,而嵌入微控制芯片的设备和系统越来越多,从而使得这种技术越来越引人注目。它对软硬件的体积大小、成本、功耗和可靠性都提出了严格的要求。嵌入式系统的功能越来越强大,实现也越来越复杂,随之出现的就是可靠性大大降低。最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,可以是嵌入式的Linux,WINCE等等。相应地,这也给处理器提出了要求。当今,众多

2、的半导体厂商都生产基于ARM体系结构的通用微处理芯片,ARM技术已经在当今的嵌入式微处理器领域中占据了它的领先地位。究其原因,它的精简指令构架为主又不放弃与复杂指令平衡的设计,使得在获得高性能的同时又能做到低功耗。本文所要研究的就是基于ARM嵌入式系统通用bootloader的设计与实现。Bootloader是嵌入式系统中执行在内核操作系统前的一段代码,它的基本作用就是加载内核镜像。在实践平台上,本课题硬件上采用了Intel Xscale系列的PXA255作为处理器,Xscale核心是与ARM V5TE构架兼容的,因此具有一定的代表性,并以此来搭建课题的硬件实践平台,软件上以Linux作为操作

3、系统。而在具体的实现上目标是除了实现bootloader的基本功能外,还将它实现成一个更加复杂的系统,即增加对硬件电路板的支持,以方便开发人员进行调试以及开发。因此,本文重点阐述了实践上具体的设计,具体的实现以及简单评估了它的作用。最后,对实现的bootloader进行了扩展:即在阐明ARM嵌入式系统中bootloader的一些共同点之后,介绍了如何对其他ARM系统进行移植,以做到通用性。关键词:嵌入式系统 ARM Bootload目录摘要IAbstractII目录III绪言1. 背景2. 主要研究工作3. 主要内容第一章ARM简介1.1 ARM 简介1.1.1 ARM处理器介绍1.2 ARM

4、处理器的优势特点1.2.1 RISC指令集1.2.2 低功耗第二章 ARM体系结构介绍2.1 ARM core描述2.2 编程模型介绍2.2.1 ARM处理器模式2.2.2 ARM寄存器组介绍2.2.3 ARM存储系统2.2.4 ARM指令集介绍2.2.5 ARM体系的异常中断2.3 ARM最小系统描述2.4 Intel Xscale系统构架2.4.1 PXA255介绍第三章 Bootloader的概念3.1 Bootloader的基本概念3.2 Bootloader的操作模式3.3 Bootloader的概念扩展3.4 ARM Bootloader的共性第四章 Bootloader的设计与实

5、现4.1 研究的平台环境4.1.1 硬件平台4.1.2 软件环境以及软件开发工具4.2 Bootloader的总体设计4.2.1 阶段设计4.2.2 地址规划设计4.2.3 模式设计4.3 Bootloader的具体实现4.3.1 阶段1的代码实现4.3.2 阶段2的代码实现4.3.3 代码的编译4.3.4 目标文件的链接与转换4.4 代码组织结构4.5 使用操作第五章实验结果与测评5.1 实验结果5.1.1 基本功能的实现结果5.1.2 扩展功能的实现结果5.2 程序性能5.2.1 扩展功能的功能性测试数据5.2.2 程序的可移植性第六章 总结与展望绪言1.研究背景随着人民生活水平提高带来巨

6、大的消费需求、信息化进程的推进、电信运营业的发展,信息产业市场空间将得到进一步拓展。在这良好的经济环境下,嵌入式系统领域得到进一步的拓宽与发展。嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁来适应系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各行业的具体应用相结合后的产物,它是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统广泛地应用在信息终端、工业控制和信息家电等领域。在嵌入式系统的开发中,嵌入式软件是实现各种系统功能的关键,也是计算机技术最活跃的研究方向之一。不同应用对嵌入式软件系统有不

7、同的要求,并且随着计算机技术的发展,这些要求也在不断变化。通常,应用系统对嵌入式软件的基本要求是体积小、执行速度快、具有较好的可剪裁性和可移植性。特别地,现在对嵌入式软件来说,都需要操作系统的支持。简单的嵌入式系统根本没有操作系统,而只是一个控制循环。但是,当系统变得越来越复杂时,就需要一个嵌入式操作系统来支持,否则应用软件就会变得过于复杂,使开发难度过大,安全性和可靠性都难以保证。嵌入式软件,特别是操作系统的支持,使得对硬件的要求越来越高。针对嵌入式系统的各种微处理器遍布各个角落。特别是采用ARM技术IP核的各种微处理器遍及各类产品市场。ARM技术以其较高的性能和功效,使得在嵌入式系统中得到

8、广泛应用。世界上几乎所有的主要半导体厂商都生产基于ARM体系结构的通用芯片,如TI,Motorola,Intel,NS,Ateml,Philips,SAMSUNG等。目前,ARM芯片广泛应用于无线产品、PDA、GPS、网络、消费电子产品、STB及智能卡。应该说,ARM无处不在。随着嵌入式产品中高端微处理器ARM的加入以及软件上操作系统的支持,使得整个嵌入式系统拥有了完整的构架。现在,专门为嵌入式产品开发的各个操作系统层出不穷,WINDOW CE,POCKET PC,Linux等等,各界关注地也特别多。然而,如何进行加载操作系统这个问题却很少有人提出。这就产生了另一个相关主题bootloader

9、。Bootloader本身的功能就是引导与加载内核镜像。如何实现bootloader的基本功能,如何针对基于ARM体系的微处理器来实现bootloader,就成为本课题的一个基本论题。,除了基本功能,bootloader还能有什么更加具体的扩展功能来方便各个系统开发者,都属于本课题讨论的范畴。2.主要研究工作本文的题目尽管涉及到ARM系统,但是,由于bootloader的特殊性以及个别性,即bootloader与具体的处理器以及具体的硬件系统紧密联系在一起,需要实际的完整硬件系统支持,而基于ARM体系的芯片实在太多,每款芯片除了具有基本的ARM体系结构的通性外,通常还具有各自独特的特性,还需分

10、别处理。因此,在真正的开发环节上,本课题主要基于Intel Xscale体系构架的PXA255处理器,Xscale本身是与ARM V5TE构架兼容的,因此很具有代表性,并由此在理论上扩展到整个ARM系统。在实现过程中具体研究开发如下:l 选择基于Intel Xscale构架的PXA255芯片作为处理器,并以此构建一套硬件开发系统l 与实际项目接轨,选择GNU的linux作为系统的操作系统l 在上述软硬件开发系统上实现基于PXA255的bootloader的基本功能,即引导加载内核镜像的功能l 在实现bootloader基本功能的基础上,增加bootloader的扩展功能,包括:通过串口打印调试

11、信息、通过串口更新镜像、通过USB接口更新镜像、实现bootloader加载模式与下载模式的转换以及实现对FLASH的擦写操作支持l 在Xscale的构架基础上在理论上扩展到ARM系统,分析对于ARM系统,bootloader实现的一些共性以及一些限制l 分析对于实现bootloader,移植到其他ARM平台的相关处理3.主要内容根据所涉及的主要研究工作,本文的内容主要包括一下几个部分:第一章简要叙述ARM世界的一些主流处理器以及其优势特点;紧接着第二章则详细描述了ARM的体系结构,指令系统并在此基础上简单的描述了一下PXA255的相关结构;第三章的内容是介绍bootloader的概念,并专门

12、针对ARM bootloader进行了详细说明;第四章在首先介绍软硬件平台之后详细介绍了bootloadr的实现,包括基本功能,扩展功能等,以及软件上的编译连接的实现,代码组织结构等;第五章针对第四章的实现,对结果进行分析以及扩展功能的一些数据测试,以及如何在实现的bootloader基础上进行移植;最后一章进行一下总结与展望。第一章, 简单阐述ARM的发展,基于ARM体系的各类主流处理器以及ARM的优势特点。第二章, 详细描述了ARM的体系结构,包括ARM编程模型方面的内容,简单介绍了ARM core,ARM最小系统的组成以及硬件系统相关的PXA255处理器的介绍。第三章, 阐述bootlo

13、ader的一些基本概念以及ARM bootloader的一些共性。第四章, 简单介绍了其实现的软硬件平台,详细介绍了基于PXA255处理器的bootloader基本功能的实现以及扩展功能的实现以及软件上编译连接的处理。第五章, 实验结果的一些分析与测评,包括一些测试数据以及程序的稳定性与可移植性、剪裁性的分析。第六章, 总结与展望。第一章 ARM简介嵌入式系统的核心部件是各种类型的嵌入式处理器。目前据不完全统计,全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30多个系列。嵌入式微处理目前主要有Am186/88、386EX、SC-400、Power PC、MIPS、ARM系列等

14、。其中,ARM是一种今年来在嵌入式系统中有着强大影响力的微处理器设计商和制造商,ARM的设计非常适合与小的电源供电系统。特别是,随着近年来,微处理器结构由RISC(精简指令集)全面取代传统的CISC(复杂指令集),因为ARM是著名的RISC的拥护者。1.1 ARM 简介 ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术只是产权(IP)核的微处理器,即通常我们所说的ARM微处理器,已经遍及工业控制、消费类电子产品、通信系

15、统、无线系统等各类产品市场,基于ARM技术的微处理应用约占据了32位RISC微处理器75以上的市场份额,ARM技术正在逐步渗入我们生活的各个方面。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生长各具特色的芯片。世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使得整个系统成本降低,使产品更容易进入市场

16、被消费者所接受,更具有竞争力。1.1.1ARM处理器介绍ARM处理器目前包括下面几个系列的处理器产品以及其他厂商实现的基于ARM体系结构的处理器:ARM7系列、ARM9系列、ARM9E系列、 ARM10E系列、SecurCore系列、Intel的Xscale系列、Intel的StrongARM系列。ARM体系有变种,也就是说有些版本具备特定功能,在各个版本的版本号上可以体现出来,说明如下5:T: 支持16位压缩指令集Thumb;D: 支持片上Debug;M:内嵌硬件乘法器(Multiplier),增加用于长乘法操作的指令;I: 嵌入式ICE,支持片上断点和调试点;E:增强型DSP指令;ARM构

17、架诞生至今,已经产生了多次变革,每一次都带来性能上的极大飞跃,其过程包括: V1构架(ARM1)基本的数据处理指令(无乘法)字节、半字和字的Load/Store指令转移指令,包括子程序的调用和链接指令软件中断指令寻址空间64MB V2构架(ARM2,ARM3)增加乘法和乘法指令增加支持协处理器的操作增加快速中断模式增加SWP/SWPB的存储器和寄存器交换指令 V3构架(ARM6)增加了MRS/MSR指令,访问新增的CPSR/SPSR寄存器增加了异常处理返回寻址空间4GB V4构架(ARM7, ARM9)增加符号化和非符号化半字及符号化字节的存取指令增加16位的Thumb指令完善软件中断SWI指

18、令 V5构架(ARM10)带有链接和交换的转移BLX指令计数前导零CLZ指令BRK中断指令增加了一些信号处理的指令 V6构架增加了SIMD功能扩展,为包括音频/视频处理在内的应用系统提供优化功能接下来就简要介绍一下各主要系列处理器的特点。(1)ARM7微处理器系列5ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点: 具有嵌入式ICERT逻辑,调试开发方便。 极低的功耗,适合对功耗要求较高的应用,如便携式产品。 能够提供0.9MIPS/MHz的三级流水线结构。 代码密度高并兼容16位的Thumb指令集。 对操作系统的

19、支持广泛,包括Windows CE、Linux、Palm OS等。 指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级。 主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。(2)ARM9微处理器系列5ARM9系列微处理器

20、在高性能和低功耗特性方面提供最佳的性能。具有以下特点: 5级整数流水线,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。 MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于

21、不同的应用场合。 (3)ARM9E微处理器系列5ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。ARM9E系列微处理器的主要特点如下: 支持DSP指令集,适合于需要高速数字信号处理的场合。 5级整数流水线,指令执行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 支持VFP9浮点处理协处理器。 全性能的MMU,支持Windows CE、Linux

22、、Palm OS等多种主流嵌入式操作系统。 MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 主频最高可达300MIPS。ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。(4)ARM10E微处理器系列5ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50,同时,ARM10E系列微处理器采用了两

23、种先进的节能方式,使其功耗极低。ARM10E系列微处理器的主要特点如下: 支持DSP指令集,适合于需要高速数字信号处理的场合。 6级整数流水线,指令执行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 支持VFP10浮点处理协处理器。 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力 主频最高可达400MIPS。 内嵌并行读/写操作部件。ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领

24、域。ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S三种类型,以适用于不同的应用场合。(5)StrongArm微处理器系列Intel StrongARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intel公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。Intel StrongARM处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品(6)Intel Xscale微处理器系列有关Intel Xscale

25、微处理器系列,会在后面相关篇幅中进行介绍。1.2ARM处理器的优势特点采用RISC结构的ARM微处理器一般具有如下特点:1 体积小、低功耗、低成本、高性能;2 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8/16位器件;3 大量使用寄存器,指令执行速度更快;4 大多数数据操作都在寄存器中完成;5 寻址方式灵活简单,执行效率高;6 指令长度固定;ARM处理器之所以能够广泛应用于各个领域,与以上所列的各个特点密切相关,综合起来,主要包括以下几点。1.2.1 RISC指令集传统的CISC(Complex Instruction Set Computer,复杂指令集计算机)结构有其

26、固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂,然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20的指令会被反复使用,占整个程序代码的80。而余下的80的指令却不经常使用,在程序设计中只占20,显然,这种结构是不太合理的。基于以上的不合理性,1979年美国加州大学伯克利分校提出了RISC(Reduced Instruction Set Computer,精简指令集计算机)的概念,RISC并非只是简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。RISC结构优先选取使用频率最高的

27、简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。到目前为止,RISC体系结构也还没有严格的定义,一般认为,RISC体系结构应具有如下特点: 采用固定长度的指令格式,指令归整、简单、基本寻址方式有23种。 使用单周期指令,便于流水线操作执行。 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高指令的执行效率。ARM主要使用32位的RISC指令,但是指令代码利用率低,ARM为了弥补此不足,在新型ARM构架(V4T版本以上)定义了16位的Thumb指令集。Thumb指令集比通常的8位和

28、16位RISC/CISC处理器具有更好的代码密度,而芯片面积只增加6,可使程序存储器更小。另外,为了加速通信和多媒体中有关数字信号的处理,ARM处理器在RISC的基础上增加了许多原属DSP核中的关键部件。双核协同工作,各用所长,有效地提高了数据处理能力核传输速度,但是RISC+DSP分立的双核结构存在两核之间互相通信的困难和分别编程的麻烦,为此发展了两核融合在一起的单核结构,同时将指令集也合二为一,简化编程提高效率,将CPU提升到可快速运算多媒体的算法,实现许多音视频的解码功能。1.2.2低功耗由于ARM架构的处理器主要用于手持式嵌入式系统之中,因此ARM构架在设计中十分注意低电压、低功耗这一

29、点,因而在手持式嵌入式系统得到广泛的应用。ARM架构的设计采用了以下一些措施: 降低电源电压 减少门的翻转次数,当某个功能电路不需要时,禁止门翻转 减少门的数目,即降低芯片的集成度 降低时钟频率ARM还其他采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积: 所有的指令都可以根据前面的执行结果决定是否被执行,从而提高指令的执行效率; 可用加载/存储指令批量传输数据,以提高数据的传输效率; 可在一条数据处理指令中同时完成逻辑处理和移位处理; 在循环处理中使用地址的自动增减来提高运行效率;ARM的低功耗,使得ARM在专门针对嵌入式系统的处理器市场中始终处于有利的地位。一组典型数据是:对于

30、ARM7系列处理器,当核电压是3.3V时,每MHz,其功耗只为1.1mW。第二章 ARM体系结构介绍在介绍具体的ARM Bootloader的实现之前,首先介绍一下ARM的体系结构,因为Bootloader是与处理器芯片紧密相连的。为了更好的在后面篇幅中介绍实现,先简单介绍相关的体系结构以及相关指令集。2.1ARM core描述尽管本本文实现主要涉及软件上的开发,但是软件上代码的实现更多的都涉及芯片构架,因此在这里简要介绍一下一般ARM core构架。下图所示的是ARM构架图。它由32位ALU、若干个32位通用寄存器以及状态寄存器、328位乘法器、3232位桶形移位寄存器、指令译码以及控制逻辑

31、、指令流水线和数据/地址寄存器组成。1 ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。2 桶形移位寄存器:ARM采用了3232位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以一次完成。3 高速乘法器:乘法器一般采用“加一移位”的方法来实现乘法。ARM为了提高运算速度,则采用两位乘法的方法,根据乘数的2位来实现“加一移位”运算 ;ARM高速乘法器采用328位的结构,这样,可以降低集成度(其相应芯片面积不到并行乘法器的1/3)。4 浮点部件:浮点部件是作为选件供ARM构架使用。FPA10浮点加速器是作为协处理方式与ARM相连,并通过协处理指令

32、的解释来执行。5 控制器:ARM的控制器采用的是硬接线的可编程逻辑阵列PLA。6 寄存器:具体的介绍参考下节的相关介绍。 不同的ARM core可能还有所不同。因此,图2.17描述的仅仅针对一般而言。 A31:0 控制地址寄存器 指令译码及控制 增值器 寄存器堆 A L U 总 乘法器 线 线 总 A 桶式 B 移位器 总 线 ALU 数据输出寄存器 数据输入寄存器 D31:0 图 2.1 ARM构架图2.2编程模型介绍对于ARM编程,需要了解的一下几个方面: 2.2.1 ARM处理器模式ARM处理器共有7种运行模式,如表2.16所示:处理器模式处理器模式描述用户模式(User,usr)正常程

33、序执行的模式快速中断模式(FIQ,fiq)用于高速数据传输和通道处理普通中断模式(IRQ,irq)用于通常的中断处理监管模式(Supervisor,svc)供操作系统使用的一种保护模式数据访问中止模式(Abort,abt)用于虚拟存储及存储保护未定义指令中止模式(Undefined,und)用于支持通过软件方针硬件的协处理器系统模式(System,sys)用于运行特权级的操作系统任务表格 2.1除了用户模式之外的其他6种处理器模式称为特权模式(Privileged Modes)。在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除系统模式外,其他5种特权模式又称

34、为异常模式。处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下,这时,应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式的切换时,应用程序可以产生异常处理,在异常处理过程中进行模式的切换。这种体系结构可以使操作系统控制整个系统的资源。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保证了程序运行状态)不被破坏。系统模式并不是通过异常过程进入的,它和用户模式具有完全

35、一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式的切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式下的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏6。2.2.2 ARM寄存器组介绍ARM处理器一般共有37个寄存器,其中包括5:l 31个通用寄存器,包括程序计数器(PC)在内,这些寄存器都是32位寄存器;l 6个状态寄存器,这些寄存器也是32位寄存器; 上一节已经说过,ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器。任意时刻(也就

36、是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0R14)、一个或者两个状态寄存器以及程序计数器(PC)。在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有些寄存器是各模式自己拥有的独立的物理寄存器。图3.1表示了各处理器模式下的可见寄存器: R0R1R2R3R4R5R6R7R8R9R10R11R12R13R14R15(PC) 用户模式和系统模式寄存器组 异常模式下的寄存器组R8_fiqR9_fiqR10_fiqR11_fiqR12_fiq R13_fiqR14_fiq R13_svcR14_svcR13_abtR14_abtR13_undR14_undR13_irqR14_

37、irqSPSR_undSPSR_abtSPSR_irqSPSR_fiqSPSR_svcCPSR 图2.2从表3.1中可以看出,通用寄存器R0R7在所有的处理器模式下指的都是同一个物理寄存器。而对于R8R12寄存器组,除了在快速中断模式下有自己专有的物理寄存器,其它模式下也共有统一物理寄存器。R13寄存器对应6个不同的物理寄存器,即除了前面提过的用户模式与系统模式共用一个寄存器外,其它模式都有相应的物理寄存器;一般地,R13寄存器在ARM中通常用作栈指针,在ARM指令中这只是一种习惯的用法,并没有任何指令强制性的使用R13作为栈指针。R14寄存器又被称为连接寄存器(Link Register,L

38、R),在ARM体系中有下面两种特殊的作用6:l 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过跳转指令调用子程序时,R14被设置为该子程序的返回地址;在子程序中,把R14的指赋值到程序计数器PC中时,子程序返回;l 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有个常数的偏移量。 程序计数器R15又被记作PC。由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位

39、和第1位总为0。CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。它包含了标志位、中断禁止位、当前处理器模式标志以及其它的一些控制和状态位。每一种处理器异常模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断返回退出时,可以用SPSR种保存的值来恢复CPSR。由于用户模式和系统模式不是异常中断模式,所以它们没有SPSR。当用户模式或者系统模式中访问SPSR,将会产生不可预知的结果。SPSR与CPSR的格式相同。CPSR的格式如图2.36所示: 31 30 29 28 27 8 7 6 5

40、 4 0NZCQUnused IFTModes图2.3N(Negative)、Z(Zero)、C(Carry)、V(Overflow)统称为标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位来选择性地执行。各条件标志位的具体含义如下:N:当两个补码表示的有符号整数运算时,N1表示运算的结果为负数;N0表示运算结果为正数或零;Z:Z1表示运算结果为零;Z0表示运算的结果不为零;C:在加法指令中,当结果产生了进位,则C1;其他情况下C0; 在减法指令中,当运算中发生借位,则C0;其他情况下C0;V:对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V1表示符号位溢出

41、CPSR的低8位称为控制位,当异常中断发生时这些位发生改变。在特权模式下,软件可以修改这些控制位:I:普通中断禁止位;I1时禁止IRQ中断。F:快速中断禁止位;F1时禁止FIQ中断。T:对于ARMv4以及更高的版本的T系列的ARM处理器l T0表示执行ARM指令l T1表示执行Thumb指令对于ARMv5以及更高版本的非T系列的ARM处理器l T=0表示执行ARM指令l T1表示强制下一条执行的指令产生为定义指令中断 Modes位控制处理器模式,在这不再赘述。2.2.3ARM存储系统这里仅仅介绍ARM编程模型中与存储系统相关的一些概念。ARM体系中的存储空间ARM体系中使用单一的平板地址空间。该地址空间的大小232个8位字节。这些字节单元的地址是一个无符号的32位数值,其取值范围为0到2321。ARM的地址空间也可以看作是230个32位的字单元。这些字单元的地址可

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号