打印
[ZLG-ARM]

关于zlg-ucosII软中断返回的疑问

[复制链接]
1209|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
spaceaky|  楼主 | 2008-9-21 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问各位朋友一个zlgucos移植的问题 

在SoftwareInterrupt  
LDR SP, StackSvc ; 重新设置堆栈指针  
STMFD SP!, {R0-R3, R12, LR}  
MOV R1, SP ; R1指向参数存储位置  
MRS R3, SPSR  
TST R3, #T_bit ; 中断前是否是Thumb状态  
LDRNEH R0, [LR,#-2] ; 是: 取得Thumb状态SWI号  
BICNE R0, R0, #0xff00  
LDREQ R0, [LR,#-4] ; 否: 取得arm状态SWI号  
BICEQ R0, R0, #0xFF000000  
; r0 = SWI号,R1指向参数存储位置  
CMP R0, #1  
LDRLO PC, =OSIntCtxSw ;swi 0x00调用OSIntCtxSw  
LDREQ PC, =__OSStartHighRdy ; SWI 0x01为第一次任务切换  

BL SWI_Exception  
LDMFD SP!, {R0-R3, R12, PC}^ 
中,程序有可能会跳到最后这个代码LDMFD SP!, {R0-R3, R12, PC}^ 处嘛? 

LDRLO PC, =OSIntCtxSw ;swi 0x00调用OSIntCtxSw  
LDREQ PC, =__OSStartHighRdy ; SWI 0x01为第一次任务切换  
BL SWI_Exception   
这三个语句都跳到相应的处理程序地方去了,没有看到它们跳回来的语句啊?

相关帖子

沙发
spaceaky|  楼主 | 2008-9-21 20:56 | 只看该作者

回上

希望哪个做过移植的朋友帮忙解答一下

使用特权

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

本版积分规则

8

主题

24

帖子

1

粉丝