完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.文件描述和准备 本文将试图讲述44B0X处理器处理中断的具体过程,如果读者的中断执行不正常,请确保 FLASH 中烧录了立宇泰 ARMSys's BootLoader for Linux V1.2,同时ADS开发环境中的RO Base为0x0c0008000,RW Base为0xc5f0000。 本文采用的44BINIT.s的自叙为: 本程序以系统的timer0中断为例,中断初始化程序如下: 2.调试程序装载后 AXD装载AXF调试文件后,暂时不运行,PC指针指示在b ResetHandler处,用右键菜单中的Disassembly,可以看出初始地址实际上指示在0x0c008000,即ADS中设置的RO Base,表示程序即将从0x0c008000开始运行。 3.非矢量模式下的执行过程 经过以上准备工作,单击【运行】两次后 Timer0 中断发生,通过事先设置好的断点捕捉中断,所有图中的红点即为运行前设置的断点: ⑴PC->0x0c008000 转到 PC->0x00000018 处,即转到 Flash 中执行Bootloader的代码。 ⑵ PC->0x00000018 转到 PC->0x0c000018处,即又跳回到SDRAM中。 ⑶ PC->0x0c000080处执行的是IsrIRQ中断识别程序。 ⑷ 识别程序段执行完后,转到用户的中断服务程序Timer_ISR( )入口。 4.矢量模式下的执行过程 OPTION.s中有_IRQ_BASEADDRESS EQU 0xc000000; 在44BINIT中有如下定义: ^ (_IRQ_BASEADDRESS+0x100) …… HandleTIMER0 # 4 …… 猜测地址HandleTIMER0=_IRQ_BASEADDRESS+0x134=0x0c000134,下面来看看猜想对不对。 改rINTCON=0x1进行矢量中断过程的观察,重新装载程序,再单击【运行】两次后,Time0中断产生: ⑴ Timer0 中断产生,跳转到中断矢量地址 0x00000060,而不是跳转到 IRQ中断入口0x00000018,这就是非矢量中断和矢量中断的本质区别。 ⑵ 再跳转到0x00000334,注意还是在Flash中,因此还得归功于Bootloader 黑体所选程序是类似宏调用HandlerTIMER0 HANDLER HandleTIMER0产生的代码,由于这是在 Flash 中,所以不可能是调试时下载进去的。(不相信可以把44BINIT.s中的宏HandlerTIMER0 HANDLER HandleTIMER0注释掉试试。) 执行完0x00000348处的指令后,执行步骤⑶。 ⑶ 好,Bootloader完成使命后,跳转到用户的Timer_ISR( ),入口地址为0x0c0087d4,在44B.h中有定义:#define pISR_TIMER0 (*(unsigned *)(_IRQ_BASEADDRESS+0x134))//0x54)),可看出pISR_TIMER0和44B0INIT.h中定义的HandleTIMER0指向地址是一样的,都指向0x0c000134。 下图即pISR_TIMER0=(int)Timer_ISR;已经生效的明证。 |
|
相关推荐
1 个讨论
|
|
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11783 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:12 , Processed in 0.607021 second(s), Total 37, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号