44B0 中断分析(二)
1.文件描述和准备
本文将试图讲述44B0X处理器处理中断的具体过程,如果读者的中断执行不正常,请确保 FLASH 中烧录了立宇泰 ARMSys's BootLoader for Linux V1.2,同时ADS开发环境中的RO Base为0x0c0008000,RW Base为0xc5f0000。 本文采用的44BINIT.s的自叙为:
经过以上准备工作,单击【运行】两次后 Timer0 中断发生,通过事先设置好的断点捕捉中断,所有图中的红点即为运行前设置的断点:
⑴PC->0x0c008000 转到 PC->0x00000018 处,即转到 Flash 中执行Bootloader的代码。
OPTION.s中有_IRQ_BASEADDRESS EQU 0xc000000;
在44BINIT中有如下定义:
^ (_IRQ_BASEADDRESS+0x100) ……
HandleTIMER0 # 4
……
猜测地址HandleTIMER0=_IRQ_BASEADDRESS+0x134=0x0c000134,下面来看看猜想对不对。 改rINTCON=0x1进行矢量中断过程的观察,重新装载程序,再单击【运行】两次后,Time0中断产生:
⑴ Timer0 中断产生,跳转到中断矢量地址 0x00000060,而不是跳转到 IRQ中断入口0x00000018,这就是非矢量中断和矢量中断的本质区别。
本文将试图讲述44B0X处理器处理中断的具体过程,如果读者的中断执行不正常,请确保 FLASH 中烧录了立宇泰 ARMSys's BootLoader for Linux V1.2,同时ADS开发环境中的RO Base为0x0c0008000,RW Base为0xc5f0000。 本文采用的44BINIT.s的自叙为:
本程序以系统的Timer0中断为例,中断初始化程序如下:
2.调试程序装载后
AXD装载AXF调试文件后,暂时不运行,PC指针指示在bResetHandler处,用右键菜单中的Disassembly,可以看出初始地址实际上指示在0x0c008000,即ADS中设置的RO Base,表示程序即将从0x0c008000开始运行。

经过以上准备工作,单击【运行】两次后 Timer0 中断发生,通过事先设置好的断点捕捉中断,所有图中的红点即为运行前设置的断点:
⑴PC->0x0c008000 转到 PC->0x00000018 处,即转到 Flash 中执行Bootloader的代码。




OPTION.s中有_IRQ_BASEADDRESS EQU 0xc000000;
在44BINIT中有如下定义:
^ (_IRQ_BASEADDRESS+0x100) ……
HandleTIMER0 # 4
……
猜测地址HandleTIMER0=_IRQ_BASEADDRESS+0x134=0x0c000134,下面来看看猜想对不对。 改rINTCON=0x1进行矢量中断过程的观察,重新装载程序,再单击【运行】两次后,Time0中断产生:
⑴ Timer0 中断产生,跳转到中断矢量地址 0x00000060,而不是跳转到 IRQ中断入口0x00000018,这就是非矢量中断和矢量中断的本质区别。



本文来源:21control 作者:
热点资讯(一周点击率)
最受工程师关注文章
热评博文
评一评已有 0 位网友对此文发表了看法。 我也来评一下
快乐大本营
无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。
想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷。

