系统引导程序Bootloader的设计与实现毕业设计说明书

上传人:无*** 文档编号:62153161 上传时间:2022-03-14 格式:DOC 页数:51 大小:596KB
收藏 版权申诉 举报 下载
系统引导程序Bootloader的设计与实现毕业设计说明书_第1页
第1页 / 共51页
系统引导程序Bootloader的设计与实现毕业设计说明书_第2页
第2页 / 共51页
系统引导程序Bootloader的设计与实现毕业设计说明书_第3页
第3页 / 共51页
资源描述:

《系统引导程序Bootloader的设计与实现毕业设计说明书》由会员分享,可在线阅读,更多相关《系统引导程序Bootloader的设计与实现毕业设计说明书(51页珍藏版)》请在装配图网上搜索。

1、毕业设计说明书 系统引导程序(Boot-loader)的设计与实现 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(

2、论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 摘 要随着移动设备的流行和发展,嵌入式系统已经成为一个热点。它并不是最近出现的新技术,只是随着微电子技术和计算机技术的发展,微控制芯片功能越来越强大,而嵌入微控制芯片的设备和系统越来越多,从而使得这种技术越来越引人注目。它对软硬件的体积大小、成本、功耗和可靠性都提出了严格的要求。嵌入式系统的功能越来越强大,实现也越来越复杂,随之出现的就是可靠性大大降低。最近的一种趋

3、势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,可以是嵌入式的Linux,WINCE等等。相应地,这也给处理器提出了要求。当今,众多的半导体厂商都生产基于ARM体系结构的通用微处理芯片,ARM技术已经在当今的嵌入式微处理器领域中占据了它的领先地位。究其原因,它的以精简指令构架为主又不放弃与复杂指令平衡的设计,使得在获得高性能的同时又能做到低功耗。本文所要研究的就是基于ARM嵌入式系统bootloader的设计与实现。Bootloader是嵌入式系统中执行在内核操作系统前的一段代码,它的基本作用就是加载内核镜像。在实践平台上,本课题硬件上采用了ARM

4、9系列的S3C2440A作为处理器,具有一定的代表性,并以此来搭建课题的硬件实践平台,软件上以Linux作为操作系统。关键词 : 嵌入式系统; ARM; BootloaderABSTRACT With the popularity of mobile devices and development of embedded systems has become a hot spot.It is not a recent emergence of new technology, but with the microelectronics and computer technology, more

5、and more micro-control chip functions, and embedded micro-controller chip devices and systems more and more, making this technology moreand more noticeable.The volume of its hardware and software size, cost, power consumption and reliability have made stringent requirements.More powerful embedded sy

6、stems to achieve more and more complex, the resulting reliability is greatly reduced.A more recent trend is a powerful embedded systems usually require an operating system to support this operating system is already mature and stable, can be embedded Linux, WINCE and so on. Accordingly, it also made

7、 a request to the processor.Today, many semiconductor manufacturers are producing generic architecture based on ARM micro-processing chip, ARM technology has in todays embedded microprocessors occupy its leading position.The reason is mainly that its reduced instruction set architecture and complex

8、instructions not to give a balanced design, makes do while achieving high performance with low power consumption. This paper is to study the ARM-based embedded system design and implementation of bootloader.Bootloader is the implementation of embedded systems in the period before the operating syste

9、m kernel code, and its basic function is to load the kernel image. In practice platform, the subject of hardware S3C2440A used as the ARM9 family processor, with a certain representation, and in order to build a practical platform hardware issues, software to Linux as the operating system.Keywords:

10、embedded system; ARM; Bootloader目 录摘 要IABSTRACTII1 绪言11.1 研究背景11.2 主要研究工作21.3 主要内容22 ARM处理器简介32.1 ARM处理器32.1.1 ARM处理器介绍32.2 ARM处理器的优势72.2.1 RISC指令集72.2.2 低功耗83 ARM体系结构介绍103.1 ARM core描述103.2 ARM处理器工作状态及模式113.2.1 ARM处理器模式113.2.2 ARM寄存器组介绍123.2.3 ARM存储系统153.2.4 ARM指令集介绍163.2.5 ARM体系的异常中断173.3 ARM最小系统描

11、述194 Bootloader的概念204.1 Bootloader的基本概念204.2 Bootloader的操作模式214.3 Bootloader的概念扩展214.4 ARM Bootloader的共性225 Bootloader的设计与实现245.1 课题研究的平台环境245.1.1 硬件平台245.1.2 软件环境以及软件开发工具255.2 Bootloader的总体设计265.2.1 阶段设计265.2.2 地址规划设计265.2.3 模式设计275.3 Bootloader的具体实现305.3.1 阶段1的代码实现305.3.2 阶段2的代码实现345.3.3 代码的编译376

12、总结与展望40参考文献41致 谢421 绪言1.1 研究背景随着人民生活水平提高带来巨大的消费需求、信息化进程的推进、电信运营业的发展,信息产业市场空间将得到进一步拓展。在这良好的经济环境下,嵌入式系统领域得到进一步的拓宽与发展。嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁来适应系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各行业的具体应用相结合后的产物,它是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统广泛地应用在信息终端、工业控制和信息家电等领域。在嵌入式系统的开发中,嵌入式软件是实

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

14、的各种微处理器遍及各类产品市场。ARM技术以其较高的性能和功效,使得在嵌入式系统中得到广泛应用。世界上几乎所有的主要半导体厂商都生产基于ARM体系结构的通用芯片,如TI,Motorola,Intel,NS,Ateml,Philips,SAMSUNG等。目前,ARM芯片广泛应用于汽车电子、保安设备、无线通信、智能手机等多个领域。应该说,ARM无处不在。随着嵌入式产品中高端微处理器ARM的加入以及软件上操作系统的支持,使得整个嵌入式系统拥有了完整的构架。现在,专门为嵌入式产品开发的各个操作系统层出不穷,WINDOW CE,POCKET PC,Linux等等,各界关注地也特别多。然而,如何进行加载操

15、作系统这个问题却很少有人提出。这就产生了另一个相关主题bootloader。Bootloader本身的功能就是引导与加载内核镜像。如何实现bootloader的基本功能,如何针对基于ARM体系的微处理器来实现bootloader,就成为本课题的一个基本论题。1.2 主要研究工作本文的题目尽管涉及到ARM系统,但是,由于bootloader的特殊性以及个别性,即bootloader与具体的处理器以及具体的硬件系统紧密联系在一起,需要实际的完整硬件系统支持,而基于ARM 920T体系的芯片实在太多,每款芯片除了具有基本的ARM体系结构的通性外,通常还具有各自独特的特性,还需分别处理。因此,在真正的

16、开发环节上,本课题主要基于ARM 920T体系构架的S3C2440A处理器,很具有代表性,并由此在理论上扩展到整个ARM系统。在实现过程中具体研究开发如下: 选择基于ARM 920T构架的S3C2440A芯片作为处理器,并以此构建一套硬件开发系统 与实际项目接轨,选择GNU的linux作为系统的操作系统 在上述软硬件开发系统上实现基于S3C2440A的bootloader的基本功能,即引导加载内核镜像的功能 在ARM920T的构架基础上在理论上扩展到ARM系统,分析对于ARM系统,bootloader实现的一些共性以及一些限制 分析对于实现bootloader,移植到其他ARM平台的相关处理1

17、.3 主要内容根据所涉及的主要研究工作,本文的内容主要包括一下几个部分:第2章简要叙述ARM世界的一些主流处理器以及其优势特点;紧接着第3章则详细描述了ARM的体系结构,指令系统;第4章的内容是介绍bootloader的概念,并专门针对ARM bootloader进行了详细说明;第5章在介绍软硬件平台之后详细介绍了bootloadr的实现;最后一章进行一下总结与展望。2 ARM处理器简介嵌入式系统的核心部件是各种类型的嵌入式处理器。目前据不完全统计,全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30多个系列。嵌入式微处理目前主要有Am186/88、386EX、SC-400、P

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

36、为协处理方式与ARM相连,并通过协处理指令的解释来执行。5. 控制器:ARM的控制器采用的是硬接线的可编程逻辑阵列PLA。6. 寄存器:具体参考下节相关介绍。 不同的ARM core可能还有所不同。因此,图2.1描述的仅仅针对一般而言。 图 2.1 ARM构架图3.2 ARM处理器工作状态及模式本节主要简单介绍ARM处理器模式,ARM寄存器组,ARM存储系统,ARM指令集,ARM体系异常中断等内容。3.2.1 ARM处理器模式ARM处理器共有7种运行模式,如表2.1所示:表格 3.1 ARM处理器模式 除了用户模式之外的其他6种处理器模式称为特权模式(Privileged Modes)。在这些

37、模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除系统模式外,其他5种特权模式又称为异常模式。处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下,这时,应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式的切换时,应用程序可以产生异常处理,在异常处理过程中进行模式的切换。这种体系结构可以使操作系统控制整个系统的资源。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模

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

39、已经说过,ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器。任意时刻(也就是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0R14)、一个或者两个状态寄存器以及程序计数器(PC)。在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有些寄存器是各模式自己拥有的独立的物理寄存器。图3.1表示了各处理器模式下的可见寄存器:图3.1 ARM状态下的寄存器组从图3.1中可以看出,通用寄存器R0R7在所有的处理器模式下指的都是同一个物理寄存器,而对于R8R12寄存器组,除了在快速中断模式下有自己专有的物理寄存器,其它模式下也共有统一物理寄存器。R13寄存器对应6

40、个不同的物理寄存器,即除了前面提过的用户模式与系统模式共用一个寄存器外,其它模式都有相应的物理寄存器;一般地,R13寄存器在ARM中通常用作栈指针,在ARM指令中这只是一种习惯的用法,并没有任何指令强制性的使用R13作为栈指针。R14寄存器又被称为连接寄存器(Link Register,LR),在ARM体系中有下面两种特殊的作用: 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过跳转指令调用子程序时,R14被设置为该子程序的返回地址;在子程序中,把R14的指赋值到程序计数器PC中时,子程序返回。 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对

41、于有些异常模式,R14的值可能与将返回的地址有个常数的偏移量。 程序计数器R15又被记作PC。由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第1位总为0。CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。它包含了标志位、中断禁止位、当前处理器模式标志以及其它的一些控制和状态位。每一种处理器异常模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断

42、返回退出时,可以用SPSR种保存的值来恢复CPSR。由于用户模式和系统模式不是异常中断模式,所以它们没有SPSR。当用户模式或者系统模式中访问SPSR,将会产生不可预知的结果。SPSR与CPSR的格式相同,CPSR的格式如图3.2所示:图3.2程序状态寄存器N(Negative)、Z(Zero)、C(Carry)、V(Overflow)统称为标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位来选择性地执行。各条件标志位的具体含义如下:N:当两个补码表示的有符号整数运算时,N1表示运算的结果为负数;N0表示运算结果为正数或零;Z:Z1表示运算结果为零;Z0表示运算的结果不为零;C:在加

43、法指令中,当结果产生了进位,则C1;其他情况下C0; 在减法指令中,当运算中发生借位,则C0;其他情况下C0;V:对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V1表示符号位溢出。 CPSR的低8位称为控制位,当异常中断发生时这些位发生改变。在特权模式下,软件可以修改这些控制位: I:普通中断禁止位;I1时禁止IRQ中断。 F:快速中断禁止位;F1时禁止FIQ中断。T:对于ARMv4以及更高的版本的T系列的ARM处理器 T0表示执行ARM指令T1表示执行Thumb指令 对于ARMv5以及更高版本的非T系列的ARM处理器 T=0表示执行ARM指令 T1表示强制下一条执行

44、的指令产生为定义指令中断 Modes位控制处理器模式,在这不再赘述。3.2.3 ARM存储系统这里仅仅介绍ARM编程模型中与存储系统相关的一些概念。(1)ARM体系中的存储空间ARM体系中使用单一的平板地址空间。该地址空间的大小232个8位字节。这些字节单元的地址是一个无符号的32位数值,其取值范围为0到2321。ARM的地址空间也可以看作是230个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址的低两位为0b00。地址为A的字数包括地址A、A+1、A+2、A+3这4个字节单元的内容。(2)ARM的存储器格式在ARM体系中,每个字单元中包含4个字节单元或者两个半字单元,其中1个半字

45、单元中包含两个字节单元。但是在字单元中,4个字节哪一个是高位字节,哪一个是低位字节,则有两种不同的格式:big-endian格式和little-endian格式。在big-endian格式中,对于地址为A的字单元包括字节单元A、A+1、A+2、A+3,其中字节单元由高位到低位字节顺序为A、A+1、A+2、A+3;地址为A的字单元包括半字单元A、A+2,其中半字单元由高位到低位字节顺序为A、A+2;地址为A的半字单元包括字节单元A、A+1,其中字节单元由高位到低位字节顺序为A、A+1。这种存储器格式如下图所示: 图3.3 big-endian格式的存储系统在little-endian格式中,地址

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

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

48、b指令 ARM在有的版本支持16位Thumb指令。Thumb指令集的整体执行速度比ARM32位指令集快,而且提高了代码密度。 具有RISC指令的特点 由于ARM指令属于RISC指令,所以多具有RISC指令的特点,指令少,且等长,便于充分利用流水线技术,使用多寄存器,且为简单的Load和Store指令。ARM指令按功能大致可以分为跳转指令、数据处理指令、乘法类指令、数据传送指令、协处理器类指令以及杂项指令(包括状态寄存器传送指令、乘法类指令、软件中断指令和断点指令)。ARM指令字长为固定的32位,一条典型的ARM指令编码格式如下:图3.5 数据处理指令编码其中: Cond位2831,执行指令的条

49、件编码。 I位25,决定operand2的格式。 opcode 位2124,操作码。 S位20,表示结果是否影响状态寄存器标志位:1影响,0不影响。 Rn位1619,第一操作数的寄存器编码。 Rd位1215,目标寄存器编码。 operand2位011,表示第二操作数编码。ARM指令包括60多个指令,并且支持多种寻址方式:寄存器寻址、立即数寻址、寄存器间接寻址、寄存器变址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址以及相对寻址等。对于具体的指令集,可以参考相关文档。3.2.5 ARM体系的异常中断 在ARM体系中通常有以下3种方式控制程序的执行流程: 在程序正常执行过程种,每执行一条ARM指令,程序

50、计数器寄存器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器的值加2个字节。整个过程是按顺序执行。 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。ARM体系中中断向量表中指定了各异常中断及处理程序的对应关系。它可以放在存储地址的低端,也可以放在存储地址的高端。异常中断向量表的大小位32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。每个异常中断对应的中断向量表中的4个字节的空间中

51、放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。下面是ARM体系中各异常中断向量的描述表:表格3.2 异常中断向量表 ARM处理器对异常中断的响应过程如下: 保存处理器当前状态、中断屏蔽位以及各条件标志位。这是通过将当前程序状态寄存器CPSR的内容保存到将要执行的异常中断对应的SPSR寄存器中实现的。 设置当前的程序状态寄存器CPSR中相应的位,包括设置CPSR中的位,使处理器进入相应的执行模式;设置CPSR中的位,禁止IRQ中断,当进入FIQ模式时,禁止FIQ模式。 将寄存器lr_mode设置成返回地址。 将程序计数器值PC

52、设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。 3.3 ARM最小系统描述对于任何一个系统,都希望不是一个虚拟系统,也就是说系统都希望是特定系统,即有具体的CPU,有具体的存储芯片以及有各种具体的外围控制模块。对于本课题来说,最终的bootloader也必须在具体的系统上运行起来。但是,任何一个ARM系统,在没有特定指定的条件下,仍然可以将通用特性(一些通用基本控制模块)描述出来,在此称之为ARM最小系统,见下图:图3.6 ARM最小系统 从上图中,可以了解一个基本的ARM最小系统通常包括以下几个部分: ARM core 存储控制器:通过它系统可以接入各种DRAM以及

53、ROM 总线桥接:系统总线与外围总线的连接器 中断控制器:供各种设备提供中断服务 串口 GPIO控制模块:供各种外设以及系统扩充使用对于一些复杂系统,还可以有更多的功能性模块,特别是随着网络通信的发展,ARM系统中包括了更多的通讯控制模块。4 Bootloader的概念本文在实现以及验证上都以开放源代码的linux为操作系统,因此,在众多举例以及图表描述中,多以linux系统为例子。但是,这并不防碍对许多概念的解释,其本质在任何操作系统中都是一致的,所不同的仅仅是实现形式。4.1 Bootloader的基本概念一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:引导加载序、Linux内

54、核、文件系统、用户应用程序。图 4.1 嵌入式Linux系统组成 引导加载程序是系统加电后运行的第一段代码。我们熟悉的PC中的引导程序一般由BIOS和位于MBR的OS bootloader(例如LILO或者GRUB)一起组成。然而在嵌入式系统中通常没有像BIOS那样的固件程序(有的嵌入式CPU有),因此整个系统的加载启动任务就完全由bootloader来完成。在嵌入式Linux中, 图4.1中的引导加载程序即等效为bootloader。简单地说,bootloader就是在操作系统内核运行前运行地一段小程序。通过这段小程序,我们可以初始化必要的硬件设备,创建内核需要的一些信息并将这些信息通过相关

55、机制传递给内核,从而将系统的软硬件环境带到一个合适的状态,最终调用操作系统内核,真正起到引导和加载内核的作用。bootloader是依赖于硬件而实现的,特别是在嵌入式系统中。不同的体系结构需求的bootloader是不同的;除了体系结构,bootloader还依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们基于相同的CPU构建,运行在其中一块电路板上的bootloader,未必能够运行在另一块电路开发板上。Bootloader的启动过程可以是单阶段的,也可以是多阶段的。通常多阶段的bootloader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动

56、的bootloader大多数是二阶段的启动过程,也即启动过程可以分为stage 1和stage 2两部分。4.2 Bootloader的操作模式 大多数bootloader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别对于开发人员才有意义。但从最终用户的角度看,bootloader的作用永远就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载模式:这种模式也称为“自主”模式,即bootloader从目标机上的某个固体存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入。这种模式是bootloader的正常工作模式,因此当以嵌入式产品发布

57、的时候,bootloader必须工作在这种模式下。下载模式:在这种模式下,目标机上的bootloader将通过串口或者网络连接或者其它通信手段从主机下载文件,比如:下载内核镜像和根文件系统镜像等。从主机下载的文件通常首先被bootloader保存到目标机的RAM中,然后被bootloader写到目标机上的FLASH类固态存储设备中。Bootloader的这种模式通常在第一次安装内核与根文件系统时使用;此外,以后的系统更新也会使用bootloader的这种工作模式。工作于这种模式下的bootloader通常都会向它的中断用户提供一个简单的命令行接口。4.3 Bootloader的概念扩展 Boo

58、tloader最主要的功能是引导加载内核镜像。但是随着嵌入式系统的发展,bootloader已经逐渐在基本功能的基础上,进行了扩展,bootloader可以更多地增加对具体系统的板级支持,即增加一些硬件模块功能上的使用支持,以方便开发人员进行开发和调试。从这个层面上看,功能扩展后的bootloader可以虚拟地看成是一个微小的系统级的代码包。4.4 ARM Bootloader的共性 从上面bootloader的基本概念可以看出,bootloader的设计与实现是与具体的CPU以及具体的硬件系统紧密相关的,从上一章的实现就可以看出,要实现一个通用的ARM bootloader,即要适合所有的A

59、RM处理器以及硬件系统,是不太可能的事情。另外,不同的操作系统,可能对具体的bootloader还会有另外额外的要求。但是,我们还是可以根据ARM的体系结构,从理论上总结出一些ARM系统bootloader实现的共性,而这仅仅局限于理论上。至于涉及到具体的设计与实现,可以参看第5章的具体内容,并根据自己的硬件系统进行移植,也不是一件困难的事情。 对于ARM bootloader的一些共同特性,理论上只局限于bootloader的基本功能,因为扩展功能众多,可以有串口、USB、以太网接口、IDE、CF等,无法进行归纳与总结。 对于一个ARM系统来说,本质上,bootloader作为引导与加载内核镜像的“工具”,在实现上,必须提供以下几个功能,更确切地说,必须做到以下几点:(1)初始化RAM(必需):bootloader必须能够初始化RAM,因为将来系统要通过它保存一些Volatile数据,但具体地实现要依赖与具体的CPU以及硬件系统。(2)初始化串口(可选,推荐):bootloader应该要初始化以及使能至少一个串口,通过它与控制台联系进行一些debug的工作;甚至与PC通信。(3)创建内核参数列表(针对linux操作系统,推荐)。(4)启动内核镜像(必需):根据内核镜像保存的存储介质不同,可以有两种启动方式:FA

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!