ARM启动原理分析与实现

ARM启动原理分析与实现

ID:41587853

大小:64.67 KB

页数:4页

时间:2019-08-28

ARM启动原理分析与实现_第1页
ARM启动原理分析与实现_第2页
ARM启动原理分析与实现_第3页
ARM启动原理分析与实现_第4页
资源描述:

《ARM启动原理分析与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、科技信息ARM启动原理分析与实现洛阳师范学院计算机系郝红旗田斌(摘要]本文介绍了启动代码的作用,以及启动代码屮的向量表定义、堆栈初始化、系统破件初始化,然后重点分析了分散加载机制的目的和实现。并利用模块化设计给出了一个基于LPC2210处理器心动代码的实现。引言—174—随着ARM芯片逐渐占据32位市场,越来越多的开发人员开始转向使用ARM芯片。但是ARM公司只设计内核,并不生产芯片,只是把内核授权给其他厂商。•其他厂商购买了授权后加入自己的外设,生产出各具特色的芯片。这样一方面促进了基于一ARM处理器核芯片的多

2、元化,另一方面使各种芯片的启动代码差别较人,不易编写统一的启动代码。但是启动代码还是有些共性的,因此了解这些共性,对开发具体的应用至关重要。启动原理在32位的ARM芯片的程序开发屮,一般要釆用C语言编一程,在运行C程序之而,要对系统初始化,就像PC机的BIOS一样,这部分代码就是启动代码。启动代码-般要实现以下功能:异常向量表的定义、各模式堆栈的初始化.系统变量初始化.屮一断系统初始化和地址重映射等。ARM芯片复位后,系统进入管理模式,ARM状态,PC(R15)寄存器的值为0x00000000。因此必须保证用户的

3、向量表代码定位在0x00000000处。但是可以通过分散加载以及重映射技术把这部分代码映射到具体的位置。本试验板釆用LPC2210芯片,由于英片上只有16KB的RAM,资源有限,所以外扩了两片存储器,一片作为FLASH,另一片作为RAMo这样存储器空间分配为:0x40000000〜0x40003fff片内RAM0x80000000〜0x8007ffff外扩RAM0x81000000〜0x8107ffff外扩FLASH本文具以调试状态的分散加载和重映射来说明,所以只用到了片内RAM和外扩RAM,参考本文,可以衆容易

4、写illFLASH的代码。分散加载描述文件如下:ROMLOAD0x80000000{ROMEXEC0x80000000{vcctors.o(Vcct,+First)————3(+RO)I—ERAM0x80040000——{3(+RW,+ZI))HEAP+0UNINIT—{heap.o(+ZI)—}_STACKS0x40004000UNINIT{stacks.o(+ZI)——}——建立中断向量表一一一一系统上电复位后,首先执行0x80000000处的代码,结果是一将外部RAM0x80000000重映射(REMAP)

5、为逻辑地址————0x()0000000.或者说当系统执行0x0000000处的代码时,实际执一一行的是0x80000000处的代码。因此对0x80000000处程序的编0是我们编程的开始,这部分开始的32个字节就是屮断向量求。送样当I异常发生时卜系统自动跳转到相,範的并常执衍樫序。Aim纲沁⑼wd.hup:wwwskim例如,当有外部中断发牛时,系统就跳到0x18执行程序。屮断向量衣屮,0x00〜OxlC的这段程序只存放每个屮断的入口,程序从这个入口跳转到各口的异常处理程序。建立中断向量表的代码如下:Rcsct

6、LDRPC,RcsctAddr;跳转到程序复位LDRPC,UndefinedAddr;跳转到未定义指令LDRPC,SWIAddr;跳转到软件中断LDRPC,PrefetchAddr;跳转到指令预取异常LDRPC,DataAbortAddr;跳转到数据界常DCD0xb9205f80;保留LDRPC,(PC,#-OxffO1;跳转到IRQ中断LDRPC,FIQAddr;跳转到FIQ中断RcsctAddrDCDRcsctInitUndefinedAddrDCDUndefinedSWIAddr程序正常复位后,首先执行UL

7、DRPC,ResetAddf这条指令的含义是把ResetAddr的值加载到程序计数器(PC),而ResetAdd「的值通过后面的一条伪指令“RcsctAddrDCDResetIniL得到了定义。初始化各模式堆栈ARM处理器共有7中模式:①用八模式正常程序工作模式,不能切换到其他模式②快速中断模式支持高速数据处理及通道处理、FIQ异常响应时,进入此模式③中断模式川于通川中断处理,IRQ响应时,进入此模式④管理模式操作系统保护代码.系统复位和软件屮断响应时,进入此模式⑤中止模式川于虚拟内存6存储保护⑥未定义模式支持

8、硕件协处理器的软件仿真,未定义异常响应时,进入此模式⑦系统模式用于支持操作系统的特权任务等,与用户模式类似,但具有特权ARM在不同的工作模式下,系统所要求的堆栈空间不同,因此耍分别进行初始化。程序代码如K:InitStackLDRR0,=bottomofhe叩;设置管理模式堆栈MSRCPSRc,#0xd3SUBSP,R1,#OffsetSVCStack;设置屮断模式堆栈;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。