8EARM嵌入式系统的通用bootloader的设计与实现》.docx
《8EARM嵌入式系统的通用bootloader的设计与实现》.docx》由会员分享,可在线阅读,更多相关《8EARM嵌入式系统的通用bootloader的设计与实现》.docx(71页珍藏版)》请在冰豆网上搜索。
8EARM嵌入式系统的通用bootloader的设计与实现》
基于ARM嵌入式系统的通用bootloader的设计与实现
摘要
随着移动设备的流行和发展,嵌入式系统已经成为一个热点。
它并不是最近出现的新技术,只是随着微电子技术和计算机技术的发展,微控制芯片功能越来越大,而嵌入微控制芯片的设备和系统越来越多,从而使得这种技术越来越引人注目。
它对软硬件的体积大小、成本、功耗和可靠性都提出了严格的要求。
嵌入式系统的功能越来越强大,实现也越来越复杂,随之出现的就是可靠性大大降低。
最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,可以是嵌入式的Linux,WINCE等等。
相应地,这也给处理器提出了要求。
当今,众多的半导体厂商都生产基于ARM体系结构的通用微处理芯片,ARM技术已经在当今的嵌入式微处理器领域中占据了它的领先地位。
究其原因,它的精简指令构架为主又不放弃与复杂指令平衡的设计,使得在获得高性能的同时又能做到低功耗。
本文所要研究的就是基于ARM嵌入式系统通用bootloader的设计与实现。
Bootloader是嵌入式系统中执行在内核操作系统前的一段代码,它的基本作用就是加载内核镜像。
在实践平台上,本课题硬件上采用了IntelXscale系列的PXA255作为处理器,Xscale核心是与ARMV5TE构架兼容的,因此具有一定的代表性,并以此来搭建课题的硬件实践平台,软件上以Linux作为操作系统。
而在具体的实现上目标是除了实现bootloader的基本功能外,还将它实现成一个更加复杂的系统,即增加对硬件电路板的支持,以方便开发人员进行调试以及开发。
因此,本文重点阐述了实践上具体的设计,具体的实现以及简单评估了它的作用。
最后,对实现的bootloader进行了扩展:
即在阐明ARM嵌入式系统中bootloader的一些共同点之后,介绍了如何对其他ARM系统进行移植,以做到通用性。
关键词:
嵌入式系统ARMBootload
绪言
1.研究背景
随着人民生活水平提高带来巨大的消费需求、信息化进程的推进、电信运营业的发展,信息产业市场空间将得到进一步拓展。
在这良好的经济环境下,嵌入式系统领域得到进一步的拓宽与发展。
嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁来适应系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各行业的具体应用相结合后的产物,它是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
嵌入式系统广泛地应用在信息终端、工业控制和信息家电等领域。
在嵌入式系统的开发中,嵌入式软件是实现各种系统功能的关键,也是计算机技术最活跃的研究方向之一。
不同应用对嵌入式软件系统有不同的要求,并且随着计算机技术的发展,这些要求也在不断变化。
通常,应用系统对嵌入式软件的基本要求是体积小、执行速度快、具有较好的可剪裁性和可移植性。
特别地,现在对嵌入式软件来说,都需要操作系统的支持。
简单的嵌入式系统根本没有操作系统,而只是一个控制循环。
但是,当系统变得越来越复杂时,就需要一个嵌入式操作系统来支持,否则应用软件就会变得过于复杂,使开发难度过大,安全性和可靠性都难以保证。
嵌入式软件,特别是操作系统的支持,使得对硬件的要求越来越高。
针对嵌入式系统的各种微处理器遍布各个角落。
特别是采用ARM技术IP核的各种微处理器遍及各类产品市场。
ARM技术以其较高的性能和功效,使得在嵌入式系统中得到广泛应用。
世界上几乎所有的主要半导体厂商都生产基于ARM体系结构的通用芯片,如TI,Motorola,Intel,NS,Ateml,Philips,SAMSUNG等。
目前,ARM芯片广泛应用于无线产品、PDA、GPS、网络、消费电子产品、STB及智能卡。
应该说,ARM无处不在。
随着嵌入式产品中高端微处理器ARM的加入以及软件上操作系统的支持,使得整个嵌入式系统拥有了完整的构架。
现在,专门为嵌入式产品开发的各个操作系统层出不穷,WINDOWCE,POCKETPC,Linux等等,各界关注地也特别多。
然而,如何进行加载操作系统这个问题却很少有人提出。
这就产生了另一个相关主题bootloader。
Bootloader本身的功能就是引导与加载内核镜像。
如何实现bootloader的基本功能,如何针对基于ARM体系的微处理器来实现bootloader,就成为本课题的一个基本论题。
,除了基本功能,bootloader还能有什么更加具体的扩展功能来方便各个系统开发者,都属于本课题讨论的范畴。
2.主要研究工作
本文的题目尽管涉及到ARM系统,但是,由于bootloader的特殊性以及个别性,即bootloader与具体的处理器以及具体的硬件系统紧密联系在一起,需要实际的完整硬件系统支持,而基于ARM体系的芯片实在太多,每款芯片除了具有基本的ARM体系结构的通性外,通常还具有各自独特的特性,还需分别处理。
因此,在真正的开发环节上,本课题主要基于IntelXscale体系构架的PXA255处理器,Xscale本身是与ARMV5TE构架兼容的,因此很具有代表性,并由此在理论上扩展到整个ARM系统。
在实现过程中具体研究开发如下:
●选择基于IntelXscale构架的PXA255芯片作为处理器,并以此构建一套硬件开发系统
●与实际项目接轨,选择GNU的linux作为系统的操作系统
●在上述软硬件开发系统上实现基于PXA255的bootloader的基本功能,即引导加载内核镜像的功能
●在实现bootloader基本功能的基础上,增加bootloader的扩展功能,包括:
通过串口打印调试信息、通过串口更新镜像、通过USB接口更新镜像、实现bootloader加载模式与下载模式的转换以及实现对FLASH的擦写操作支持
●在Xscale的构架基础上在理论上扩展到ARM系统,分析对于ARM系统,bootloader实现的一些共性以及一些限制
●分析对于实现bootloader,移植到其他ARM平台的相关处理
3.主要内容
根据所涉及的主要研究工作,本文的内容主要包括一下几个部分:
第一章简要叙述ARM世界的一些主流处理器以及其优势特点;紧接着第二章则详细描述了ARM的体系结构,指令系统并在此基础上简单的描述了一下PXA255的相关结构;第三章的内容是介绍bootloader的概念,并专门针对ARMbootloader进行了详细说明;第四章在首先介绍软硬件平台之后详细介绍了bootloadr的实现,包括基本功能,扩展功能等,以及软件上的编译连接的实现,代码组织结构等;第五章针对第四章的实现,对结果进行分析以及扩展功能的一些数据测试,以及如何在实现的bootloader基础上进行移植;最后一章进行一下总结与展望。
第一章,简单阐述ARM的发展,基于ARM体系的各类主流处理器以及ARM的优势特点。
第二章,详细描述了ARM的体系结构,包括ARM编程模型方面的内容,简单介绍了ARMcore,ARM最小系统的组成以及硬件系统相关的PXA255处理器的介绍。
第三章,阐述bootloader的一些基本概念以及ARMbootloader的一些共性。
第四章,简单介绍了其实现的软硬件平台,详细介绍了基于PXA255处理器的bootloader基本功能的实现以及扩展功能的实现以及软件上编译连接的处理。
第五章,实验结果的一些分析与测评,包括一些测试数据以及程序的稳定性与可移植性、剪裁性的分析。
第六章,总结与展望。
第一章ARM简介
嵌入式系统的核心部件是各种类型的嵌入式处理器。
目前据不完全统计,全世界嵌入式处理器的品种总量已经超过1000多种,流行体系结构有30多个系列。
嵌入式微处理目前主要有Am186/88、386EX、SC-400、PowerPC、MIPS、ARM系列等。
其中,ARM是一种今年来在嵌入式系统中有着强大影响力的微处理器设计商和制造商,ARM的设计非常适合与小的电源供电系统。
特别是,随着近年来,微处理器结构由RISC(精简指令集)全面取代传统的CISC(复杂指令集),因为ARM是著名的RISC的拥护者。
1.1ARM简介
ARM(AdvancedRISCMachines),既可以认为是一个公司的名字,也可以是对一类微处理器的通称,还可以认为是一种技术的名字。
1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。
目前,采用ARM技术只是产权(IP)核的微处理器,即通常我们所说的ARM微处理器,已经遍及工业控制、消费类电子产品、通信系统、无线系统等各类产品市场,基于ARM技术的微处理应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入我们生活的各个方面。
ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生长各具特色的芯片。
世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。
目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使得整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。
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构架诞生至今,已经产生了多次变革,每一次都带来性能上的极大飞跃,其过程包括:
-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指令
计数前导零CLZ指令
BRK中断指令
增加了一些信号处理的指令
-V6构架
增加了SIMD功能扩展,为包括音频/视频处理在内的应用系统提供优化功能
接下来就简要介绍一下各主要系列处理器的特点。
(1)ARM7微处理器系列[5]
ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。
ARM7微处理器系列具有如下特点:
-具有嵌入式ICE-RT逻辑,调试开发方便。
-极低的功耗,适合对功耗要求较高的应用,如便携式产品。
-能够提供0.9MIPS/MHz的三级流水线结构。
-代码密度高并兼容16位的Thumb指令集。
-对操作系统的支持广泛,包括WindowsCE、Linux、PalmOS等。
-指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级。
-主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。
ARM7系列微处理器的主要应用领域为:
工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。
ARM7系列微处理器包括如下几种类型的核:
ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。
其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。
(2)ARM9微处理器系列[5]
ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。
具有以下特点:
-5级整数流水线,指令执行效率更高。
-提供1.1MIPS/MHz的哈佛结构。
-支持32位ARM指令集和16位Thumb指令集。
-支持32位的高速AMBA总线接口。
-全性能的MMU,支持WindowsCE、Linux、PalmOS等多种主流嵌入式操作系统。
-MPU支持实时操作系统。
-支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。
(3)ARM9E微处理器系列[5]
ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。
ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。
ARM9E系列微处理器的主要特点如下:
-支持DSP指令集,适合于需要高速数字信号处理的场合。
-5级整数流水线,指令执行效率更高。
-支持32位ARM指令集和16位Thumb指令集。
-支持32位的高速AMBA总线接口。
-支持VFP9浮点处理协处理器。
-全性能的MMU,支持WindowsCE、Linux、PalmOS等多种主流嵌入式操作系统。
-MPU支持实时操作系统。
-支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
-主频最高可达300MIPS。
ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。
ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。
(4)ARM10E微处理器系列[5]
ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。
ARM10E系列微处理器的主要特点如下:
-支持DSP指令集,适合于需要高速数字信号处理的场合。
-6级整数流水线,指令执行效率更高。
-支持32位ARM指令集和16位Thumb指令集。
-支持32位的高速AMBA总线接口。
-支持VFP10浮点处理协处理器。
-全性能的MMU,支持WindowsCE、Linux、PalmOS等多种主流嵌入式操作系统。
-支持数据Cache和指令Cache,具有更高的指令和数据处理能力
-主频最高可达400MIPS。
-内嵌并行读/写操作部件。
ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。
ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S三种类型,以适用于不同的应用场合。
(5)StrongArm微处理器系列
IntelStrongARMSA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。
它融合了Intel公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。
IntelStrongARM处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品
(6)IntelXscale微处理器系列
有关IntelXscale微处理器系列,会在后面相关篇幅中进行介绍。
1.2ARM处理器的优势特点
采用RISC结构的ARM微处理器一般具有如下特点:
1.体积小、低功耗、低成本、高性能;
2.支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8/16位器件;
3.大量使用寄存器,指令执行速度更快;
4.大多数数据操作都在寄存器中完成;
5.寻址方式灵活简单,执行效率高;
6.指令长度固定;
ARM处理器之所以能够广泛应用于各个领域,与以上所列的各个特点密切相关,综合起来,主要包括以下几点。
1.2.1RISC指令集
传统的CISC(ComplexInstructionSetComputer,复杂指令集计算机)结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂,然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。
而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。
基于以上的不合理性,1979年美国加州大学伯克利分校提出了RISC(ReducedInstructionSetComputer,精简指令集计算机)的概念,RISC并非只是简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。
RISC结构优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。
到目前为止,RISC体系结构也还没有严格的定义,一般认为,RISC体系结构应具有如下特点:
-采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。
-使用单周期指令,便于流水线操作执行。
-大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。
ARM主要使用32位的RISC指令,但是指令代码利用率低,ARM为了弥补此不足,在新型ARM构架(V4T版本以上)定义了16位的Thumb指令集。
Thumb指令集比通常的8位和16位RISC/CISC处理器具有更好的代码密度,而芯片面积只增加6%,可使程序存储器更小。
另外,为了加速通信和多媒体中有关数字信号的处理,ARM处理器在RISC的基础上增加了许多原属DSP核中的关键部件。
双核协同工作,各用所长,有效地提高了数据处理能力核传输速度,但是RISC+DSP分立的双核结构存在两核之间互相通信的困难和分别编程的麻烦,为此发展了两核融合在一起的单核结构,同时将指令集也合二为一,简化编程提高效率,将CPU提升到可快速运算多媒体的算法,实现许多音视频的解码功能。
1.2.2低功耗
由于ARM架构的处理器主要用于手持式嵌入式系统之中,因此ARM构架在设计中十分注意低电压、低功耗这一点,因而在手持式嵌入式系统得到广泛的应用。
ARM架构的设计采用了以下一些措施:
-降低电源电压
-减少门的翻转次数,当某个功能电路不需要时,禁止门翻转
-减少门的数目,即降低芯片的集成度
-降低时钟频率
ARM还其他采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积:
-所有的指令都可以根据前面的执行结果决定是否被执行,从而提高指令的执行效率;
-可用加载/存储指令批量传输数据,以提高数据的传输效率;
-可在一条数据处理指令中同时完成逻辑处理和移位处理;
-在循环处理中使用地址的自动增减来提高运行效率;
ARM的低功耗,使得ARM在专门针对嵌入式系统的处理器市场中始终处于有利的地位。
一组典型数据是:
对于ARM7系列处理器,当核电压是3.3V时,每MHz,其功耗只为1.1mW。
第二章ARM体系结构介绍
在介绍具体的ARMBootloader的实现之前,首先介绍一下ARM的体系结构,因为Bootloader是与处理器芯片紧密相连的。
为了更好的在后面篇幅中介绍实现,先简单介绍相关的体系结构以及相关指令集。
2.1ARMcore描述
尽管本本文实现主要涉及软件上的开发,但是软件上代码的实现更多的都涉及芯片构架,因此在这里简要介绍一下一般ARMcore构架。
下图所示的是ARM构架图。
它由32位ALU、若干个32位通用寄存器以及状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。
1.ALU:
它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。
2.桶形移位寄存器:
ARM采用了32×32位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以一次完成。
3.高速乘法器:
乘法器一般采用“加一移位”的方法来实现乘法。
ARM为了提高运算速度,则采用两位乘法的方法,根据乘数的2位来实现“加一移位”运算;ARM高速乘法器采用32×8位的结构,这样,可以降低集成度(其相应芯片面积不到并行乘法器的1/3)。
4.浮点部件:
浮点部件是作为选件供ARM构架使用。
FPA10浮点加速器是作为协处理方式与ARM相连,并通过协处理指令的解释来执行。
5.控制器:
ARM的控制器采用的是硬接线的可编程逻辑阵列PLA。
6.寄存器:
具体的介绍参考下节的相关介绍。
不同的ARMcore可能还有所不同。
因此,图2.1[7]描述的仅仅针对一般而言。
A[31:
0]控制
地址寄存器
指令译码及控制
增值器
寄存器堆
A
L
U
总乘法器
线线
总
A
桶式B
移位器总
线
ALU
数据输出寄存器数据输入寄存器
D[31:
0]
图2.1ARM构架图
2.2编程模型介绍
对于ARM编程,需要了解的一下几个方面:
2.2.1ARM处理器模式
ARM处理器共有7种运行模式,如表2.1[6]所示:
处理器模式
处理器模式描述
用户模式(User,usr)
正常程序执行的模式
快速中断模式(FIQ,fiq)
用于高速数据传输和通道处理
普通中断模式(IRQ,irq)
用于通常的中断处理
监管模式(Supervisor,svc)
供操作系统使用的一种保护模式
数据访问中止模式(Abort,abt)
用于虚拟存储及存储保护
未定义指令中止模式(Undefined,und)
用于支持通过软件方针硬件的协处理器
系统模式(System,sys)
用于运行特权级的操作系统任务
表格2.1
除了用户模式之外的其他6种处理器模式称为特权模式(PrivilegedModes)。
在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。
其中,除系统模式外,其他5种特权模式又称为异常模式。
处理器模式可以通过软件控制进行