打印

ARM7重映射remap后FIQ中断出现问题

[复制链接]
2162|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjwyczj|  楼主 | 2012-12-6 12:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ARM7,flash地址0x100000,RAM地址0x200000,重映射前0x0处时flash地址,重映射后是0x0处是RAM地址。现在我把启动文件分成两部分,第一部分启动复位部分,执行域在flash,所以刚开始启动时先执行flash处程序(remap前也是0x0地址),在这部分启动文件最开始是remap操作,将RAM地址映射到0x0处,然后复位初始化,到跳到main函数。我把异常向量表放在了RAM中动态执行,用来加快异常响应,重映射后0x0处就是RAM地址。我目前的程序使用FIQ中断,现在出现了问题,发生FIQ后,进入FIQ异常处理函数(启动文件中,not ISR),因为发生了FIQ,RAM就进入了FIQ模式。FIQ异常处理中我要跳到ISR去执行,所以跳之前我先切换到svc管理模式,在svc中去执行ISR(我这里上电后异常前所以程序都在svc模式下执行的),现在我程序中写的是进入svc模式,但是处理器强行进入user模式了,所以执行完ISR后返回不了FIQ模式了,程序就出问题了,不知道啥情况?????请高手赐教。没重映射前是很正常,FIQ模式下能正常进入svc模式去执行ISR函数。如图,启动文件中程序我把切换到svc模式,可是处理器自己自动切换到user模式了。

相关帖子

沙发
zjwyczj|  楼主 | 2012-12-6 13:03 | 只看该作者
另外,使用IRQ还是很正常的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

204

帖子

2

粉丝