2012级75x_init和75x_vect分析

2012级75x_init和75x_vect分析

ID:37168043

大小:341.00 KB

页数:5页

时间:2019-05-21

2012级75x_init和75x_vect分析_第1页
2012级75x_init和75x_vect分析_第2页
2012级75x_init和75x_vect分析_第3页
2012级75x_init和75x_vect分析_第4页
2012级75x_init和75x_vect分析_第5页
资源描述:

《2012级75x_init和75x_vect分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、75x_init这个模块中主要介绍了四块内容:1、内存重映射;2、对应于ARM处理器七种模式(分别指:用户模式、系统模式、管理模式、快中断模式、外部中断模式、数据访问中止模式和未定义模式)中的每一种模式的堆栈指针初始化;3、中断控制的初始化;4、完成对C库中main函数的调用。重置状态下:<1>ARM内核处于SVC(管理)模式;<2>是ARM状态;<3>IRQ和FIQ未使能。首先,定义所需要的初始化变量:SMI_Bank0_EN,Remap_SRAM,EIC_INIT以及程序状态寄存器中模式位和

2、中断标志的标准定义。接下来是有关几种寄存器地址(基址和偏址)的定义,包括:MRCC(电源、时钟、复位管理单元)寄存器、CFG寄存器、GPIO(通用输入/输出端口)寄存器、SMI(串行存储器接口)寄存器和EIC(增强型中断控制器)寄存器(包括基值和偏址)。程序的流程就是:1、程序的段地址定义是根据程序需要定义的,因为在代码段:#ifdefSMI_Bank0_ENLDRr0,=0x01000000#elseLDRr0,=0x00000000#endif和#ifdefSMI_Bank0_ENLDRr0

3、,=0x1875623F#elseLDRr0,=0x1975623F#endif这两段代码中会根据是否定义了SMI_Bank0_EN来进行值的修改。2、初始化堆栈指针寄存器。轮流进入每种模式,并且设定栈指针。在这里分别设定了快中断模式、外部中断模式、数据访问中止模式、未定义模式、管理模式五种程序状态寄存器中的模式位。在这里使用MSR指令将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以是通用寄存器或者立即数。域用于设置程序状态寄存器中需要操作的位,32位的程序状态寄存器可分为4个域,

4、位于[7:0]为控制位域用c表示。Idr这个程序段是将当前指针指到下面,在ADS里的写法是breset_handler跳到标号在Idr的程序段中有一个函数叫SFE,这个函数是iar内置函数,目的是取到这个段的地址;0XFFFFFFF8是为了数据对齐(Idr是要求32位对齐的)。3、使能SMI_Bank0,这个程序段主要包括三个部分,分别是:使能MRCC的外围时钟使能寄存器、使能GPIO_REMAP寄存器中的SMI选择功能和使能SMI_CR1寄存器中的域0。4、重映射SRAM。这个是在程序开始执行

5、之后重映射到地址0x00。5、初始化EIC。初始化EIC包括以下:IRQ和FIQ的禁用,所用通道的禁用,所有通道的优先级设定为0,中断向量表寄存器组的偏址(和IRQ对应)。关于初始化中的中断部分:当操作系统正在执行某一任务时,ARM处理器处于SVC模式,此时若有异常响应(IRQ)产生,操作系统应调用适当的中断服务程序(OS_CPU_IRQ_ISR()),以保存当前任务和处理中断。程序的大概过程如下:1.将处理器中寄存器的内容压入任务的堆栈中;2.系统的全局中断嵌套变量增1;如果是第一层中断嵌套,

6、将任务堆栈指针存入任务块中;3.执行中断处理程序OS_CPU_IRQ_ISR_Handler();4.调用OSIntExit()查看是否有优先级更高的任务需要执行,若有,切换执行之;5.从任务堆栈中恢复中断前处理器的状态;图1:ARM异常向量地址具体来说,当处理器识别到异常响应(IRQ)时,会将PC+4存入R14_irq中,CPSR_svc存入SPSR_irq中,设置CPSR相关控制位以禁止IRQ中断,并切换IRQ模式。与此同时,处理器会跳转至IRQ的入口地址0x18执行指令LDRPC,[PC,

7、#offset],由于ARM体系结构采用了多级流水线技术,PC问题指向当前指令的下两条指令的地址,即PC=0x20,借助于EIC,最后执行OS_CPU_IRQ_ISR()程序。图1:IRQ中断结构图2:ARM处理器响应IRQ中断在执行中断处理程序之前,需要将当前的任务的ARM处理器状态(如寄存器的值)压入任务堆栈,以供日后恢复之用。而任务堆栈是在SVC模式下引用的,所以需要从当前IRQ模式切换回SVC模式,但这一切换会导致R13、R14(LR)、R15(PC)、SPSR和CPSR发生变化。也就不

8、能切换至原来任务的状态。所以为了保存原来任务的状态,需要一些技巧来暂存独立的寄存器。图3:暂存返回地址和SPSR_irq

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

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

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