ARM 启动代码详解.docx
《ARM 启动代码详解.docx》由会员分享,可在线阅读,更多相关《ARM 启动代码详解.docx(9页珍藏版)》请在第壹文秘上搜索。
1、ARM启动代码详解(Vectors.Ini1.s.Target.cTarget.h)2010-05-1516:03启动代码是芯片豆位后进入C语言的mainO函数前执行的一段代码,主要是为运行C语言程序提供根本运行环境,如初始化存储潺系统等。八RM公司只设计内核,不自C1.生产芯片,只是把内核授权给其它J.商,其它厂商购置了授权I1.参加自己的外设后生产出各具特色的芯片。这样就促进了基TARM处理器核的芯片多元化,但也使得每一种芯片的后动代码差异很大,不易编写出统一的启动代码,ADS(针对ARM处理器核的C语言编译器的策略是不提供完整的启动代码,启动代码缺乏局部或者由厂商提供,或者自己编写。启动
2、代码划分为4个文件:Vectors.C.Init.s.Target,c.Target.hoVeCtors.c包含异常向室表、堆栈初始化及中断效劳程序与C程序的接口。Init.s包含统初始化代码,并跳转到ADS提供的初始化代码.Targe1.C和Target.h包含目标板特殊的代码,包括异常处理程序和目标板初始化程序。这样做的目的是为了尽量减少正编代码,同时把不需要修改的代码独立出来以减少错误。4.2.1VeC1.Ors.c文件的编写4.2.1.1中断向量表nouscVectors1.DRPC.ResetAddr1.DRPC,UndefinedAddr1.DRPC,SW1.Addr1.DRPC,
3、PrefetchAddr1.DRPC,DataAbortAddrDCD0xb9205f801.DRPC,PC,K-OxffO1.DRPC,FQAddrResetAddrDCDResetUndefinedAddrDCDUndefinedSW1.AddrDCDSoftwareInterruptPrefetchAddrDCDPrefetchAbortDataAbortAddrDCDDatabortDCD0IRQ.AddrDCDIRQJIand1.erFIQ_AddrDCDFIQJIand1.er异常是由内部或外部源产生的以引起处理器处理的一个事件。八RM处理器核支持1种类型的异常。异常出现后,CPU
4、强制从异常类型对应的固定存储地址开始执行程序。这个固定的地址就是异常向员。向量从上到下依次为夏位、未定义指令异常、软件中断、预取指令中止、预取数据中止、保存的异常、IRQ和FIQ.IRQ向:ft“1.DRPC,PC,AOxffO*使用的指令与其它向下不同。在正常情况下这条指令所在地址为OXooOooO18。当CPU执行这条指令但还没有跳转时,PC的值为0X00000020,OXOoOoO020减去OXoOOOoFFo为OXFFFFFO30,这是向量中断控制器(VIC)的特殊存放器VICveCtAddr。这个存放器保存当前将要效劳的IRQ的中断效劳程序的入口,用这条指令就可以直接跳转到需要的中断
5、效劳程序中.至丁在保存的异常向垃“MD0xb9205f80位置填数据0xb9205f8是为了使向量表中所有的数据32位累加和为0。4.2.1.2初始化C1.t堆枝InitStackMOVR0,1.RMSRCPSR_c,S0xd2;设置中断模式堆栈1.DRSP1StackIrqMSRCPSRC,MXd1;设置快速中断模式堆栈1.DRSP,StackFiqMSRCPSRC,#0xd7;设置中止模式堆栈1.DKSP,StackAbtMSRCPSRc1.SOxdb:设置未定义模式堆栈1.DRSP1StackUndMSRCPSRc,#Oxdf;设置系统模式堆栈1.DRSP,StackSysMOVPC,R
6、OStackIrqDCD(IrqStackSpace+IRQ_STACK.EGTH*4-4)StackFiqDCD(FiqStackSpace+FQSTACIC1.EGTH*4-4)StackAbtDCD(AbtStackSpace+ABT_STACK1.EGTH*4-4)StackUndDCD(1.ndtStackSpace+UND_STACKIEGTH*4-4)StackSysDCD(SysStackSpace+SYS_STACK_1.EGTH*4-4);/*分配堆栈空间*/AREAMyStacks,DT,NO1.NITIrqStackSpaceSPACEIRQSTACK1.EGTH*4;
7、中断模式堆栈FiqStackSpaceSPACEF1.QSTACKJEGTH*4:快速中断模式推栈AbtStackSpaceSPACEAB1.STACKJEGTH*4;中止义模式堆枝UndtStackSpaceSPACEUV)STACK_1.EGTH*4;未定义模式堆栈SySSIaCkSpaCeSPACESYSSTACK1.EGTH*4;系统模式堆栈因为程序需要切换模式,而且程序退出时CP1.J的模式已经不再是管理模式而是系统模式1.R已经不再保存返回程序地址,所以程序首先把返回地址保存到Ro中,同时使用Ro返回。然后程序把处理器模式转化为IRQ模式,并设置IRQ模式的堆栈指针。其中变员Sta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 启动代码详解 启动 代码 详解