arm启动过程分析及应用研究学士学位论文.docx
《arm启动过程分析及应用研究学士学位论文.docx》由会员分享,可在线阅读,更多相关《arm启动过程分析及应用研究学士学位论文.docx(9页珍藏版)》请在冰豆网上搜索。
![arm启动过程分析及应用研究学士学位论文.docx](https://file1.bdocx.com/fileroot1/2023-1/2/0b25055a-b234-4a74-a0e9-34518c2ba6cd/0b25055a-b234-4a74-a0e9-34518c2ba6cd1.gif)
arm启动过程分析及应用研究学士学位论文
长沙师范专科学校
电子信息工程系计算机应用专业级
毕业论文(设计)
题目:
ARM启动过程分析及应用研究
姓名:
宋政艳学号:
2009540830139
指导教师(签名):
年月日
前言
自从电子技术发展起来之后,ARM因其体积小、低功耗、低成本高性能的优势,正以惊人的速度向前发展,在工业控制,浪费类电子产品和成像安全产品、无线网络与通讯等领域得到了广泛应用,极大地改进了这些行业的生产效率、提高了生产力、除此之外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用,ARM技术在许多不同领域的地位日益巩固。
本文以嵌入式系统设计作为具体的研究对象,选取ARM微处理器作为嵌入和式设计的核心,系统地介绍了ARM和嵌入式操作系统、工作原理和启动过程分析。
目录
前言
第一章ARM概述1
1.1ARM简介1
1.1.1RISC结构特性2
1.1.2常用ARM处理器系列3
1.2ARM微处理器的应用领域及特点7
1.2.1ARM微处理器的应用领域7
1.2.2ARM处理器的特点8
第二章ARM9简述8
2.1ARM9简介9
2.2ARM9体系结构9
2.2.1ARM工作状态9
2.2.2ARM9处理器的主要结构及其特点10
第三章ARM9分析启动11
3.1ARM9启动过程11
第四章总结15
第一章ARM概述
1.1ARM简介
ARM(AdvancedRISCMachines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。
目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。
ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。
目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,更具有竞争力。
1.1.1RISC结构特性
ARM内核采用精简指令集计算机(RISC)体系结构,它是一个小门数的计算机,其指令集和相关的译码机制比复杂指令集计算机(CISC)要简单得多,其目标就是设计出一套能在高时钟频率下单周期执行,简单而有效地的指令集。
RISC的设计重点在于降低处理器中指令执行部件的硬件复杂度,这是因为软件比硬件更容易提供更大的灵活性和更高的智能化,因此ARM具备了非常典型的RISC结构特性:
(1)具有大量的通用寄存器;
(2)通过装载/保存(load-store)结构使用独立的load和store指令完成数据在寄存器和外部存储器之间的传送,处理器只处理寄存器中的数据,从而可以避免多次访问存储器;
(3)寻址方式非常简单,所有装载/保存的地址都只由寄存器内容和指令域决定;
(4)使用统一和固定长度的指令格式。
此外,ARM体系结构还提供:
(1)每一条数据处理指令都可以同时包含算术逻辑单元(ALU)的运算和移位处理,以实现对ALU和移位器的最大利用;
(2)使用地址自动增加和自动减少的寻址方式优化程序中的循环处理;
(3)load/store指令可以批量传输数据,从而实现了最大数据吞吐量;
(4)大多数ARM指令是可“条件执行”的,也就是说只有当某个特定条件满足时指令才会被执行。
通过使用条件执行,可以减少指令的数目,从而改善程序的执行效率和提高代码密度。
这些在基本RISC结构上增强的特性使ARM处理器在高性能、低代码规模、低功耗和小的硅片尺寸方面取得良好的平衡。
从1985年ARM1诞生至今,ARM指令集体系结构发生了巨大的改变,还在不断地完善和发展。
为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号V1~V7表示。
1.1.2常用ARM处理器系列
ARM公司开发了很多系列的ARM处理器核,应用比较多的是ARM7系列、ARM9系列、ARM10系列、ARM11系列、Intel的Xscale系列和MPCore系列,还有针对低端8位MCU市场最新推出的Cortex-M3系列,其具有32位CPU的性能、8位MCU的价格。
1.CortexTM-M3处理器
ARMCortexTM-M3处理器是一个面向低成本,小管脚数目以及低功耗应用,并且具有极高运算能力和中断响应能力的一个处理器内核。
其问世于2006年,第一个推向市场的是美国LuminaryMicro半导体公司的LM3S系列ARM。
CortexTM-M3处理器采用了纯Thumb2指令的执行方式,使得这个具有32位高性能的ARM内核能够实现8位和16位处理器级数的代码存储密度,非常适用于那些只需几K存储器的MCU市场。
在增强代码密度的同时,该处理器内核是ARM所设计的内核中最小的一个,其核心的门数只有33K,在包含了必要的外设之后的门数也只为60K。
这使它的封装更为小型,成本更加低廉。
在实现这些的同时,它还提供性能优异的中断能力,通过其独特的寄存器管理并以硬件处理各种异常和中断的方式,最大程度的提高了中断响应和中断切换的速度。
2.CortexTM-R4处理器
CortexTM-R4处理器是首款基于ARMv7架构的高级嵌入式处理器,其目标主要为产量巨大的高级嵌入式应用方案,如硬盘,喷墨式打印机,以及汽车安全系统等等。
CortexTM-R4处理器在节省成本与功耗上为开发者们带来了关键性的突破,在与其他处理器相近的芯片面积上提供了更为优越的性。
CortexTM-R4采用了90纳米生产工艺,最高运行频率可达400MHz,该内核整体设计的侧重点在于效率和可配置性。
3.CortexTM-R4F处理器
CortexTM-R4F处理器在CortexTM-R4处理器的基础上加入了代码错误校正(ECC)技术、浮点运算单元(FPU)以及DMA综合配置的能力,增强了处理器在存储器保护单元,缓存,紧密耦合存储器,DMA访问以及调试方面的能力。
4.CortexTM-A8处理器
CortexTM-A8是ARM公司所开发的基于ARMv7架构的首款应用级处理器,同时也是ARM所开发的同类处理器中性能最好、能效最高的处理器。
CortexTM-A8是ARM公司首个超量处理器,其特色是运用了可增加代码密度和加强性能的技术、可支持多媒体以及信号处理能力的NEONTM技术、以及能够支持JAVA和其他文字代码语言(byte-codelanguage)的提前和即时编译的Jazelle®RCT(Run-timeCompilationTarget运行时编译目标代码)技术。
ARM最新的Artisan®Advantage-CE库以其先进的泄漏控制技术使CortexTM-A8处理器实现了优异的速度和能效。
5.ARM7系列
ARM7TDMI是ARM公司1995年推出的第一个处理器内核,是目前用量最多的一个内核。
ARM7系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。
该系列处理器提供Thumb16位压缩指令集和EmbeddedICEJTAG软件调试方式,适合应用于更大规模的SoC设计中。
其中ARM720T高速缓存处理宏单元还提供8KB缓存、读缓冲和具有内存管理功能的高性能处理器,支持Linux和WindowsCE等操作系统。
6.ARM9系列
ARM9系列于1997年问世,ARM9系列有ARM9TDMI、ARM920T和带有高速缓存处理器宏单元的ARM940T。
所有的ARM9系列处理器都具有Thumb压缩指令集和基于EmbeddedICEJTAG的软件调试方式。
ARM9系列兼容ARM7系列,而且能够比ARM7进行更加灵活的设计。
7.ARM10系列
ARM10发布于1999年,ARM10系列包括ARM1020E和ARM1022E微处理器核。
其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能,为用户界面的2D和3D图形引擎应用夯实基础,如视频游戏机和高性能打印机等。
8.ARM11系列
ARM1136J-S发布于2003年,是针对高性能和高能效的应用而设计的。
ARM1136J-S是第一个执行ARMv6架构指令的处理器,它集成了一条具有独立的load-store和算术流水线的8级流水线。
ARMv6指令包含了针对媒体处理的单指令多数据流(SIMD)扩展,采用特殊的设计以改善视频处理性能。
ARM1136JF-S就是为了进行快速浮点运算,而在ARM1136J-S增加了向量浮点单元。
9.Xscale
Xscale处理器将Intel处理器技术和ARM体系结构融为一体,致力于为手提式通信和消费电子类设备提供理想的解决方案。
并提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令和集成数字信号处理(DSP)指令。
1.2ARM微处理器的应用领域及特点
1.2.1ARM微处理器的应用领域
到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域。
(1)工业控制领域:
作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
(2)无线通信领域:
目前已有85%以上的无线通信设备采用了ARM技术,ARM以其高性能和低成本的特点,在该领域的地位日益巩固。
(3)网络应用:
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。
(4)消费类电子产品:
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
(5)成像和安全产品:
现在流行的数码相机和打印机中绝大部分采用ARM技术。
手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多其他领域,并会在将来取得更加广泛的应用。
1.2.2ARM处理器的特点
采用RISC架构的ARM微处理器一般具有如下特点。
(1)体积小、低功耗、低成本、高性能;
(2)支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件;
(3)大量使用寄存器,指令执行速度更快;
(4)大多数数据操作都在寄存器中完成;
(5)寻址方式灵活简单,执行效率高;
(6)指令长度固定。
第二章ARM9简述
2.1ARM9简介
ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI和ARM9E-S等系列。
以手机应用为例,2G手机只需提供语音及简单的文字短信功能,而目前的2.5G和未来的3G手机除了提供这两项功能外,还必须提供各种其他的应用功能。
主要包括:
(1)无线网络设备:
手机上网、电子邮件及其他定位服务等功能;
(2)PDA功能:
含有用户操作系统(WindowsCE、SymbianOS、Linux等)及其他功能;(3)高性能功能:
音频播放器、视频电话、手机游戏等。
在2.5G和3G的应用中ARM9已经全面替代了ARM7。
因为ARM9的新特性能够满足各种新需求的同时减少产品研发时间并降低研发费用
新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。
这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。
2.2ARM9体系结构
2.2.1ARM工作状态
•从编程者角度看ARM9有两种工作状态,并且可相互切换
•ARM状态,处理执行32位的ARM指令字对齐
•Thumb状态,处理执行16位的Thumb指令半字对齐
如果在1K的存储空间中,可以放32条ARM指令,就可以放64条Thumb指令,因此在存放Thunb指令时,代码密度高
2.2.2ARM9处理器的主要结构及其特点
ARM9是哈佛结构
(1)32b定点RISC处理器,改进型ARM/Thumb代码交织,增强性乘法器设计,支持实时(real-time)调试;
(2)片内指令和数据SRAM,而且指令和数据的存储器容量可调;
(3)片内指令和数据高速缓冲器(Cache)容量从4KB~lMB:
(4)设置保护单元(ProtoctionUnit),非常适合嵌入式应用中对存储器进行分段和保护;
(5)采用AMBAAHB总线接口,为外设提供统一的地址和数据总线;
(6)支持外部协处理器,指令和数据总线有简单的握手信令支持;
(7)支持标准基本逻辑单元扫描测试方法;
(8)支持BIST(Built-in-self-test);
(9)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。
第三章ARM9分析启动
3.1ARM9启动过程
在ARM设计开发中,启动代码的编写是一个极重要的过程。
然而启动代码随具体的目标系统和开发系统有所区别,但通常包含以下部分:
·向量表定义
·地址重映射及中断向量表的转移
·堆栈初始化
·设置系统时钟频率
·中断寄存器的初始化
·进入C应用程序
下面就结合PHILIPS的LPC2119的启动代码来分析与说明ARM7处理器的启动代码的编写。
1.1向量表定义
ARM芯片上电或复位后,系统进入管理模式、ARM状态、PC(R15寄存器)指向0x00000000地址处。
中断向量表为每一个中断设置1个字的存储空间,存放一条跳转指令,通过这条指令使PC指针指向相应的中断服务程序入口,继而执行相应的中断处理程序。
LPC2119的中断向量表和其它基于ARM核的芯片中断向量表较类似,只要注意LPC2119要使向量表所有数据32位累加和为零(0x00000000-0x0000001C的8个字的机器码累加),才能使用户的程序脱机运行。
LPC2119的中断向量表如图1所示。
1.2地址重映射及中断向量表的转移
ARM7处理器在复位后从地址0读取第一条指令并执行,因此系统上电后地址0必须是非易失的ROM/FLASH,这样才能保证处理器有正确可用的指令。
为了加快对中断的处理以及实现在不同操作系统模式下对中断的处理,这就需要重新映射中断向量表、Bootblock和SRAM空间的一小部分。
ARM具有非常灵活的存储器地址分配特性。
ARM处理器的地址重映射机制有两种情况:
①由专门的寄存器完成重映射(Remap),只需对相应的Remap寄存器相应位设置即可。
②没有专门的Remap控制寄存器需要重新改写用于控制存储器起始地址的块(Bank)寄存器来实现Remap。
在LPC2119上的重映射,可以通过存储器映射控制器来实现。
实现REMAP操作的程序实现如下:
MOVR8,#0x40000000; /设置新向量表起始地址/
LDRR9,=Interrupt_Vector_Table; /读原向量表源地址/
LDMIAR9!
(R0-R7); /复制中断向量表及中断处理程序的入口地址到RAM中(64字节)/
STMIAR8!
(R0-R7)
LDMIAR9!
(R0-R7)
STMIAR8!
(R0-R7)
LDRR8,=MEMMAP; /REMMAP操作/
MOVR9,#0x02
STRR9,[R8]
1.3堆栈初始化
启动代码中各模式堆栈空间的设置是为中断处理和程序跳转时服务的。
当系统响应中断或程序跳转时,需要将当前处理器的状态和部分重要参数保存在一段存储空间中,所以对每个模式都要进行堆栈初始化工作,给每个模式的SP定义一个堆栈基地址和堆栈的容量。
堆栈的初始化有两种方法:
第一种方法是结合ADS开发套件中的分散加载文件来定义堆栈。
第二种方法是最简单也是最常用的一种就是直接进入对应的处理器模式,为SP寄存器指定相应的值。
下面给出了用第二种方法初始化管理模式和中断模式堆栈的程序:
MSRCPSR_c,#0xD3; /切换到管理模式,并初始化管理模式的堆栈/
LDRSP,Stack_Svc
MSRCPSR_c,#0xD2; /切换到IRQ模式,并初始化IRQ模式的堆栈/
LDRSP,Stack_Irq
…
1.4系统部分时钟初始化
时钟是芯片各部分正常工作的基础,应该在进入main()函数前设置。
部分ARM7片子内部集成有PLL(锁相环)电路,用户可以用低频率的晶振通过PLL电路获得一个较高频率的时钟。
LPC2119内部的PLL电路接受的输入时钟频率范围为10~25MHz,输入频率通过一个电流控制振荡器(CCO)倍增到范围10~60MHz。
同时为了使高速的ARM处理器与低速的外设正常通讯和降低功耗(降低外设运行速度使功耗降低),LPC2119又集成了一个额外的分频器。
PLL的激活是由PLLCON寄存器控制。
PLL倍频器和分频器的值由PLLCFG寄存器控制。
对PLLCON或PLLCFG寄存器的更改必须遵循严格的顺序,否则所作更改是无法生效的(在连续的VPB周期内向PLLFEED寄存器写入0xAA、0x55,在此期间中断必须是被禁止的。
)
1.5中断初始化
ARM7的向量中断控制器(VectoredInterruptController)可以将中断编程为3类:
FIQ、向量IRQ、非向量IRQ。
FIQ中断请求的优先级最高,其次是IRQ中断请求,非向量IRQ的优先级最低。
VIC具有32个中断请求输入,但在LPC2219中只占用了17个中断输入。
对于这17个中断源的IRQ/FIQ选择,由VICIntSelect寄存器控制,当对应位设置位1时,则此中断为FIQ中断,否则为IRQ中断。
若再将IRQ中断设置到向量控制寄存器(VICVectCntIn)中,则此中断为向量IRQ中断,否则为非向量IRQ中断。
FIQ中断是专门用来处理那些需要及时响应的特殊事件,尽可能地只给FIQ分配一个中断源。
1.6进入C应用程序
至此,系统各部分的初始化基本完成,可以直接从启动代码转入到应用程序的main()函数入口。
从启动代码转入到应用程序的实例代码如下:
IMPORTmain
LDRR0,=main
BXR0
第四章总结
论文的写作是一个长期的过程,需要不断的进行精心的修改,不断地去研究各方面的文献,认真总结。
历经了这么久的努力,终于完成了毕业论文。
在这次毕业论文的写作的过程中,我拥有了无数难忘的感动和收获。
写作毕业论文是我们每个大学生必须经历的一段过程,也是我们毕业前的一段宝贵的回忆。
当我们看到自己的努力有收获的时候,总是会有那么一点点自豪和激动。
任何事情都是这样子,需要我们脚踏实地的去做,一步一个脚印的完成,认真严谨,有了好的态度才能做好一件事情,一开始都觉得毕业论文是一个很困难的任务,大家都难免会有一点畏惧之情,但是经过长时间的努力和积累,经过不断地查找资料后总结,我们都很好的按老师的要求完成了毕业论文的写作,这种收获的喜悦相信每个人都能够体会到。
这是一次意志的磨练,是对我实际能力的一次提升,相信对我未来的学习和工作有很大的帮助。
在这次毕业论文中同学之间互相帮助,共同商量相关专业问题,这种交流对于即将面临毕业的我们来说是一次很有意义的经历,大学四年都一起走过了,在最后我们可以聚在一起讨论学习,研究专业问题,进而更好的了解我们每个人的兴趣之所在,明确我们的人生理想,进而在今后的生活和工作中更好的发挥自己的优势,学好自己的专业,成为一个对于社会有用的人.
在此更要感谢我的专业老师,是您的细心指导和关怀,使我能够顺利的完成毕业论文。
老师对于学生总是默默的付出,尽管很多时候我们自己并没有特别重视论文的写作,没有按时完成老师的任务,但是老师还是能够主动的和我们联系,告诉我们应该怎么样修改论文,怎么样按要求完成论文相关的工作。
老师的检查总是很仔细的,可以认真的看论文的每一个细小的格式要求,认真的读每一个同学的论文,然后提出最中肯的意见,这是很难得的。