[ZLG-ARM] 关于zlg-ucosII软中断返回的疑问

[复制链接]
1897|1
 楼主| spaceaky 发表于 2008-9-21 16:23 | 显示全部楼层 |阅读模式
问各位朋友一个zlgucos移植的问题&nbsp;<br /><br />在SoftwareInterrupt&nbsp;&nbsp;<br />LDR&nbsp;SP,&nbsp;StackSvc&nbsp;;&nbsp;重新设置堆栈指针&nbsp;&nbsp;<br />STMFD&nbsp;SP!,&nbsp;{R0-R3,&nbsp;R12,&nbsp;LR}&nbsp;&nbsp;<br />MOV&nbsp;R1,&nbsp;SP&nbsp;;&nbsp;R1指向参数存储位置&nbsp;&nbsp;<br />MRS&nbsp;R3,&nbsp;SPSR&nbsp;&nbsp;<br />TST&nbsp;R3,&nbsp;#T_bit&nbsp;;&nbsp;中断前是否是Thumb状态&nbsp;&nbsp;<br />LDRNEH&nbsp;R0,&nbsp;[LR,#-2]&nbsp;;&nbsp;是:&nbsp;取得Thumb状态SWI号&nbsp;&nbsp;<br />BICNE&nbsp;R0,&nbsp;R0,&nbsp;#0xff00&nbsp;&nbsp;<br />LDREQ&nbsp;R0,&nbsp;[LR,#-4]&nbsp;;&nbsp;否:&nbsp;取得arm状态SWI号&nbsp;&nbsp;<br />BICEQ&nbsp;R0,&nbsp;R0,&nbsp;#0xFF000000&nbsp;&nbsp;<br />;&nbsp;r0&nbsp;=&nbsp;SWI号,R1指向参数存储位置&nbsp;&nbsp;<br />CMP&nbsp;R0,&nbsp;#1&nbsp;&nbsp;<br />LDRLO&nbsp;PC,&nbsp;=OSIntCtxSw&nbsp;;swi&nbsp;0x00调用OSIntCtxSw&nbsp;&nbsp;<br />LDREQ&nbsp;PC,&nbsp;=__OSStartHighRdy&nbsp;;&nbsp;SWI&nbsp;0x01为第一次任务切换&nbsp;&nbsp;<br /><br />BL&nbsp;SWI_Exception&nbsp;&nbsp;<br />LDMFD&nbsp;SP!,&nbsp;{R0-R3,&nbsp;R12,&nbsp;PC}^&nbsp;<br />中,程序有可能会跳到最后这个代码LDMFD&nbsp;SP!,&nbsp;{R0-R3,&nbsp;R12,&nbsp;PC}^&nbsp;处嘛?&nbsp;<br /><br />LDRLO&nbsp;PC,&nbsp;=OSIntCtxSw&nbsp;;swi&nbsp;0x00调用OSIntCtxSw&nbsp;&nbsp;<br />LDREQ&nbsp;PC,&nbsp;=__OSStartHighRdy&nbsp;;&nbsp;SWI&nbsp;0x01为第一次任务切换&nbsp;&nbsp;<br />BL&nbsp;SWI_Exception&nbsp;&nbsp;&nbsp;<br />这三个语句都跳到相应的处理程序地方去了,没有看到它们跳回来的语句啊?
 楼主| spaceaky 发表于 2008-9-21 20:56 | 显示全部楼层

回上

希望哪个做过移植的朋友帮忙解答一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

1

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