ARM中断分析二

ARM中断分析二

ID:38073440

大小:384.50 KB

页数:6页

时间:2019-05-24

ARM中断分析二_第1页
ARM中断分析二_第2页
ARM中断分析二_第3页
ARM中断分析二_第4页
ARM中断分析二_第5页
资源描述:

《ARM中断分析二》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ARM中断分析二1.文件描述和准备       本文将试图讲述44B0X处理器处理中断的具体过程,如果读者的中断执行不正常,请确保FLASH中烧录了立宇泰ARMSys'sBootLoaderforLinuxV1.2,同时ADS开发环境中的ROBase为0x0c0008000,RWBase为0xc5f0000。本文采用的44BINIT.s的自叙为:;*******************************************************;*NAME   :44BINIT.S         *;*Version:10.

2、April.2000        *;*Description:          *;*Cstartupcodes         *;*Configurememory,InitializeISR,stacks    *;*InitializeC-variables         *;*Fillzerosintozero-initializedC-variables  *;******************************************************* 本程序以系统的Timer0中断为例,中断初始化程序

3、如下:voidinitial_time0(void){ rINTCON=0x5;       //Non-vectored,IRQenable,FIQdisable rINTMOD=0x0;       //All=IRQmode rINTMSK=~(BIT_TIMER0

4、BIT_GLOBAL);    pISR_TIMER0=(int)Timer_ISR;  rTCFG0=0x000000ff;//定时器0预分频值设置为255MCLK=32M rTCFG1=0x00000004;//定时器0分割值设置为32 //最小周期约250us r

5、TCNTB0=400;//约10ms中断周期 rTCON=0x0000000a;// rTCON=0x00000009;//1001自动重载,并启动定时器0 Uart_Printf("Timer0interrupterinitialized!");} 中断服务程序如下:void__irqTimer_ISR(void){ rI_ISPC=BIT_TIMER0; globalcnt++;} 2.调试程序装载后AXD装载AXF调试文件后,暂时不运行,PC指针指示在bResetHandler处,用右键菜单中的Disassembly,可以看出初

6、始地址实际上指示在0x0c008000,即ADS中设置的ROBase,表示程序即将从0x0c008000开始运行。      3.非矢量模式下的执行过程经过以上准备工作,单击【运行】两次后Timer0中断发生,通过事先设置好的断点捕捉中断,所有图中的红点即为运行前设置的断点:⑴PC->0x0c008000转到PC->0x00000018处,即转到Flash中执行Bootloader的代码  ⑵PC->0x00000018转到PC->0x0c000018处,即又跳回到SDRAM中 ⑶PC->0x0c000080处执行的是IsrIRQ中断识别

7、程序  ⑷识别程序段执行完后,转到用户的中断服务程序Timer_ISR()入口    4.矢量模式下的执行过程OPTION.s中有_IRQ_BASEADDRESS  EQU  0xc000000;在44BINIT中有如下定义:^(_IRQ_BASEADDRESS+0x100)……HandleTIMER0 #4……猜测地址HandleTIMER0=_IRQ_BASEADDRESS+0x134=0x0c000134,下面来看看猜想对不对。改rINTCON=0x1进行矢量中断过程的观察,重新装载程序,再单击【运行】两次后,Time0中断产生:⑴

8、Timer0中断产生,跳转到中断矢量地址0x00000060,而不是跳转到IRQ中断入口0x00000018,这就是非矢量中断和矢量中断的本质区别。  ⑵再跳转到0x00000334,注意还是在Flash中,因此还得归功于Bootloader黑体所选程序是类似宏调用HandlerTIMER0HANDLERHandleTIMER0产生的代码,由于这是在Flash中,所以不可能是调试时下载进去的。(不相信可以把44BINIT.s中的宏HandlerTIMER0 HANDLERHandleTIMER0注释掉试试。)  执行完0x00000348

9、处的指令后,执行步骤⑶。 ⑶好,Bootloader完成使命后,跳转到用户的Timer_ISR(),入口地址为0x0c0087d4  在44B.h中有定义#definepISR_TIMER0 

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

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

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