ARM异常处理代码

[复制链接]
1011|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是否有跳到该处?
 楼主| 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}^
但是就返回不了软中断后面的程序执行了
阿南 发表于 2016-3-8 10:31 | 显示全部楼层
那应该是代码有问题吧,参考下IRQ部分.或者参考下Linux下的该部分,因为Linux的调度就是用软中断实现的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部