5344|6

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ARM SWI [复制链接]

谁能给个ARM 软件中断处理程序 (SWI handler)的例子,可以双倍SVC模式下的寄存器数,并且返回USER模式,好像是用一个什么SWI call触发这个中断程序的 求哪位高手给个例子 谢谢!
此帖出自ARM技术论坛

最新回复

谁知道swi 0~7软中断的含义啊  详情 回复 发表于 2012-4-9 10:05
点赞 关注
 

回复
举报

83

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
如果不是技术上的探讨,建议在百度+Google上找答案!^_^,你想要的我没有…
此帖出自ARM技术论坛
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
  只是我写的,可以重入,当然就可以返回USR。但是我不明白什么叫“可以双倍SVC模式下的寄存器数”
   IMPORT C_IsrSWI
IsrSWI      
    STMFD sp!,{r0-r3,r12,lr};//保存寄存器,防止重入SWI时被破坏
    MOV r1,sp               ;//把指针存放在R1,并作参数传递
    MRS r0,spsr     
    STMFD sp!,{r0}           ;//保存spsr
   
    TST r0,#Tbit
    LDRNEH r0,[lr,#-2]      
    BICNE r0,r0,#0xFF00
    LDREQ r0,[lr,#-4]      
    BICEQ r0,r0,#0xFF000000
   
    BL C_IsrSWI
   
    LDMFD sp!,{r0}
    MSR spsr_cf,r0
    LDMFD sp!,{r0-r3,r12,pc}^
   
此帖出自ARM技术论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

4
 
IMPORT C_IsrSWI 这个C_IsrSWI是什么?
还有貌似 TST r0,#Tbit 编译报错了 为什么?
谢谢!
此帖出自ARM技术论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
这个代码应该是 2 楼自己某个应用上的吧

IMPORT C_IsrSWI 很明显是引入 C 程序里的软中断处理函数,
从代码上看这个 C 的定义为 void C_IsrSWI(int, int);

代码中的 BL C_IsrSWI 就是调用 C 程序函数。

TST r0,#Tbit 中的 Tbit 的定义在代码中没有写出来,应该在前面加上 Tbit   EQU   0x20
这个 Tbit 即是 CPSR 中的 T 位,看看 ARM 手册呀。
这行代码是判断进入异常前是处于 ARM 状态还是 THUMB 状态。

多看书很重要。
此帖出自ARM技术论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

6
 
呵呵,楼上说的没错,我就直接把一段贴出来。我以为楼主一看就明白
此帖出自ARM技术论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

7
 
谁知道swi 0~7软中断的含义啊
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表