在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 2951|回复: 2

写LPC2220的BOOT时遇到了应用程序中断不发生的问题

[复制链接]
发表于 2008-8-18 16:50:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在用LPC2220写BOOTLOAD时,处理中断上碰到了麻烦,我本意是在BOOT的IRQ中断地址(外部FLASH0x80000018)让他跳转到外部的RAM(0x81000018,应用程序拷贝到0X81000000后部),然后由应用程序的中断再做处理。中断表映射设置的都是由外部,即外部FLASH,先到外部FLASH的BOOT,然后靠代码跳转到应用程序的中断表。 BOOT程序: 。。。。 ;中断向量表 Reset 。。。 LDR PC, IRQ_Addr LDR PC, FIQ_Addr 。。。 IRQ_Addr DCD 0x81000018//这样就跳转到外部RAM的中断表中了 FIQ_Addr DCD 0x8100001c APP程序: LDR PC, IRQ_Addr ... IRQ_Addr DCD IRQ_Handler FIQ_Addr DCD FIQ_Handler ...... ;IRQ中断 IRQ_Handler STMFD SP!, {R0-R3, LR} mov r0,#0x020 ldr pc,[r0,#-0x0ff0]//这样就进入了VIC向量中断处理了 LDMFD SP!, {R0-R3, LR} SUBS PC, LR, #4 //以上想法应该 什么问题,但始终应用程序无法发生中断,请问是什么原因造成的?是不是LDR跳转不了这么大的范围? 另一个问题,我在BOOT中没做中断跳转,而是还是指向向量中断,这样不管BOOT还是应用程序都可用向量中断了: LDR PC, [pc,#-0xff0] 但现在问题出来了,应用程序中我试了下直接在ADS中设置运行地址还是用分散加载的方法,两种方法都发现,一定不能使得STARTUP.O的vectors放程序的最前面,就是在分散加载文件中(Startup.o (vectors, +First)这句),不能用这句,如果加了该句应用程序进不了中断处理,ADS设置中设置arm Linker中的layout项中的object/symbol 和section也起到同样作用,同样不能设置,已设置了就进不了中断。 请各位牛人能指点一二。谢谢!
发表于 2008-8-22 11:21:12 | 显示全部楼层
排版太难看了,最好整理一下
而且你给的信息太少,就设了个中断向量表,中断标志位使能了吗?中断硬件初始化好了吗?都不得而知
发表于 2008-8-22 11:25:18 | 显示全部楼层
你现在的这个情况,最好在load了app后,改变成ram boot,然后就不用通过flash的中断矢量来个二级跳转了
貌似B有地址距离限制,LDR没有限制,所以应该是其他问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-21 12:46 , Processed in 0.029594 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表