打印

ARM异常处理代码

[复制链接]
543|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luowenzhi|  楼主 | 2016-3-6 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在S3C2410裸跑程序中Main函数进行SWI调用使CPU产生SWI异常,
并在启动代码中写入SWI异常处理程序:
   stmfd sp!,{r0-r3,r12,lr}
   mrs r0,spsr
   stmfd sp!,{r0}        
   ldmfd sp!,{r0}       
   msr spsr_cf,r0
   ldmfd sp!,{r0-r3,r12,pc}^
希望程序能从SWI调用的后面的程序运行,
但总不成功,原因是什么?

相关帖子

沙发
阿南| | 2016-3-7 09:44 | 只看该作者
2410的loader代码里已经有中断向量表了,楼主可以参考下

使用特权

评论回复
板凳
luowenzhi|  楼主 | 2016-3-7 11:18 | 只看该作者
我在异常处理地址
HandleSWI           #   4
放处理函数地址也出错呀

使用特权

评论回复
地板
阿南| | 2016-3-7 13:48 | 只看该作者
如何出错法,当产生软件中断后,PC是否有跳到该处?

使用特权

评论回复
5
luowenzhi|  楼主 | 2016-3-7 15:15 | 只看该作者
产生软件中断后,PC跳到该处并执行SWI异常处理程序:
   stmfd sp!,{r0-r3,r12,lr}
   mrs r0,spsr
   stmfd sp!,{r0}         
   ldmfd sp!,{r0}        
   msr spsr_cf,r0
   ldmfd sp!,{r0-r3,r12,pc}^
但是就返回不了软中断后面的程序执行了

使用特权

评论回复
6
阿南| | 2016-3-8 10:31 | 只看该作者
那应该是代码有问题吧,参考下IRQ部分.或者参考下Linux下的该部分,因为Linux的调度就是用软中断实现的

使用特权

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

本版积分规则

1

主题

3

帖子

1

粉丝