基于ARM嵌入式系统的通用bootloader的设计与实现_第1页
基于ARM嵌入式系统的通用bootloader的设计与实现_第2页
基于ARM嵌入式系统的通用bootloader的设计与实现_第3页
基于ARM嵌入式系统的通用bootloader的设计与实现_第4页
基于ARM嵌入式系统的通用bootloader的设计与实现_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、介绍1.2 ARM处理器的优势特点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的共性第四章 Bootload

5、er的设计与实现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。Bootloader本身的功能

9、就是引导与加载核镜像。如何实现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的扩展功能,包括:通过串口打印调试信息、通过串口更新镜像、通过USB接口

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

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

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

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

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

16、处理器介绍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指令 V5构架(ARM10)带有和交换的转移BLX指令

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

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

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

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

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

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

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

25、特点采用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位和16位RISC/CISC处理器具有更好的代码密度,而芯片面积只增加

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

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

30、1mW。第二章 ARM体系结构介绍在介绍具体的ARM Bootloader的实现之前,首先介绍一下ARM的体系结构,因为Bootloader是与处理器芯片紧密相连的。为了更好的在后面篇幅中介绍实现,先简单介绍相关的体系结构以与相关指令集。2.1ARM core描述尽管本本文实现主要涉与软件上的开发,但是软件上代码的实现更多的都涉与芯片构架,因此在这里简要介绍一下一般ARM core构架。下图所示的是ARM构架图。它由32位ALU、若干个32位通用寄存器以与状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码以与控制逻辑、指令流水线和数据/地址寄存器组成。1 A

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

32、控制器: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_fiqR13_svcR14_svcR13_abtR14_abtR13_undR14_undR13_irqR14_irqSPSR_undSPSR_

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

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

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

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

41、发生时这些位发生改变。在特权模式下,软件可以修改这些控制位: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位字节。这些

42、字节单元的地址是一个无符号的32位数值,其取值围为0到2321。ARM的地址空间也可以看作是230个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址的低两位为0b00。地址为A的字数包括地址A、A+1、A+2、A+3这4个字节单元的容。ARM的存储器格式在ARM体系中,每个字单元中包含4个字节单元或者两个半字单元,其中1个半字单元中包含两个字节单元。但是在字单元中,4个字节哪一个是高位字节,哪一个是低位字节,则有两种不同的格式:big-endian格式和little-endian格式。在big-endian格式中,对于地址为A的字单元包括字节单元A、A+1、A+2、A+3,其中字节

43、单元由高位到低位字节顺序为A、A+1、A+2、A+3;地址为A的字单元包括半字单元A、A+2,其中半字单元由高位到地位字节顺序为A、A+2;地址为A的半字单元包括字节单元A、A+1,其中字节单元由高位到低位字节顺序为A、A+1。这种存储器格式如下图所示: 31 24 23 16 15 8 7 0字单元A半字单元A半字单元A2字节单元A字节单元A1字节单元A2字节单元A3 图2.4 big-endian格式的存储系统在little-endian格式中,地址为A的字单元包括字节单元A、A+1、A+2、A+3,其中字节单元由高位到低位字节顺序为A3、A+2、A+1、A;地址为A的字单元包括半字单元A

44、、A+2,其中半字单元由高位到地位字节顺序为A2、A;地址为A的半字单元包括字节单元A、A+1,其中字节单元由高位到低位字节顺序为A1、A。这种存储器格式如下图所示: 31 24 23 16 15 8 7 0字单元A半字单元A2半字单元A字节单元A3字节单元A2字节单元A1字节单元A 图2.5 little-endian格式的存储系统2.2.4 ARM指令集介绍ARM指令系统属于RISC指令系统。标准的ARM指令每条都是32位,有些ARM核还可以执行16位的Thumb指令集。一般地,ARM指令具有以下特点9:l 指令的条件执行ARM指令都是条件执行,条件标志位位于程序代码字节的cond位(位2

45、831,下文会介绍)。根据cond的不同编码,可以选择根据条件码标志决定指令的执行。l 灵活的第二操作数ARM指令的另一个重要的特点是数据处理类指令有灵活的第二操作数operand2(位与程序代码的位011)。它既可以是立即数,也可以是逻辑运算数,使得ARM指令可以在读取数值的同时进行算术和移位操作。l 协处理器的作用ARM核可提供协处理接口,通过扩展协处理器完成更加复杂的功能。因此ARM指令中还包括了多条协处理器指令,使用多达16个协处理器,允许将其他处理器通过协处理器接口进行紧耦合;ARM还包括几种存管理单元的变种,包括简单的存保护到复杂的页面层次。l Thumb指令ARM在有的版本支持1

46、6位Thumb指令。Thumb指令集的整体执行速度比ARM32位指令集快,而且提高了代码密度。l 具有RISC指令的特点由于ARM指令属于RISC指令,所以多具有RISC指令的特点,指令少,且等长, 便于充分利用流水线技术,使用多寄存器,且为简单的Load和Store指令。ARM指令按功能大致可以分为跳转指令、数据处理指令、乘法类指令、数据传送指令、协处理器类指令以与杂项指令(包括状态寄存器传送指令、乘法类指令、软件中断指令和断点指令)。ARM指令字长为固定的32位,一条典型的ARM指令编码格式如下9: 31 28 27 26 2524 21 20 19 16 15 12 11 0Cond 0

47、0 Iopcode S RnRdoperand2图2.6其中:l cond位2831,执行指令的条件编码。l I位25,决定operand2的格式。l opcode 位2124,操作码。l S位20,表示结果是否影响状态寄存器标志位:1影响,0不影响。l Rn位1619,第一操作数的寄存器编码。l Rd位1215,目标寄存器编码。l operand2位011,表示第二操作数编码。ARM指令包括60多个指令,并且支持多种寻址方式:寄存器寻址、立即数寻址、寄存器间接寻址、寄存器变址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址以与相对寻址等。对于具体的指令集,可以参考相关文档。2.2.5 ARM体系的异常中断在ARM体系常有以下3种方式控制程序的执行流程6:l 在程序正常执行过程种,每执行一条ARM指令,程序计数器寄存器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器的值加2个字节。整个过程是按顺序执行。l 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。l 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在异常中断处理程序执行完成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论