[ZLG-ARM] 周工:请教uC/OS OSIntCtxSw_1问题

[复制链接]
 楼主| fent 发表于 2007-1-23 11:22 | 显示全部楼层 |阅读模式
<br /><br />OSIntCtxSw_1<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R4,&nbsp;[R6]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;R4,&nbsp;#68&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR,&nbsp;[SP,&nbsp;#-8]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#(NoInt&nbsp;|&nbsp;SVC32Mode)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;R4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R4,&nbsp;R5}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R3,&nbsp;=OsEnterSum<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R4,&nbsp;[R3]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPSR_cxsf,&nbsp;R5&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R12,&nbsp;LR,&nbsp;PC&nbsp;}^<br /><br />在上面这段新任务切换代码中,&nbsp;LDR&nbsp;&nbsp;LR,&nbsp;[SP,&nbsp;#-8]这一句是不是多余的,还是有其他什么功能?我个人觉得LDMFD&nbsp;SP!,&nbsp;{R0-R12,&nbsp;LR,&nbsp;PC&nbsp;}^这一句已经处理了LR.<br />&nbsp;&nbsp;&nbsp;请教周工和各位高手!&nbsp;<br />&nbsp;<br />
wl80382000 发表于 2007-1-23 14:48 | 显示全部楼层

111

一直没看他的ucos代码&nbsp;&nbsp;这么看来&nbsp;&nbsp;和我的差不多么。。。<br /><br />&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR,&nbsp;[SP,&nbsp;#-8]&nbsp;&nbsp;这句是在取lr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lr有2个
wl80382000 发表于 2007-1-23 14:52 | 显示全部楼层

。。

细节很多&nbsp;&nbsp;&nbsp;你就记住&nbsp;&nbsp;lr有2个&nbsp;&nbsp;&nbsp;然后慢慢看吧
 楼主| fent 发表于 2007-1-23 14:57 | 显示全部楼层

这个问题有人问过,但没有人回答!

LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR,&nbsp;[SP,&nbsp;#-8]&nbsp;这句是从栈中取出用户模式的LR,<br />但是后边的&nbsp;LDMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R12,&nbsp;LR,&nbsp;PC&nbsp;}^&nbsp;中也有这个操作,都不知道是自己理解错的还是另有用途!?<br />请各位大虾指点!先谢了&nbsp;!<br />
 楼主| fent 发表于 2007-1-23 15:07 | 显示全部楼层

程序到这里是系统模式

程序到这里实际上是系统模式,在这句&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR,&nbsp;[SP,&nbsp;#-8]&nbsp;中,LR就是系统模式的LR,也就是用户模式的LR&nbsp;,而后面的操作&nbsp;LDMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R12,&nbsp;LR,&nbsp;PC&nbsp;}^&nbsp;也是对用户的寄存器操作,因此,感觉起来&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR,&nbsp;[SP,&nbsp;#-8]是多余的!<br />
bqt 发表于 2007-1-23 20:19 | 显示全部楼层

re:

程序到这里是管理模式,^是不能在用户和系统模式下用的,呵呵
 楼主| fent 发表于 2007-1-24 15:24 | 显示全部楼层

to bqt :

是系统模式!往前看就知道了&nbsp;!
 楼主| fent 发表于 2007-1-24 15:25 | 显示全部楼层

周公在吗?

  
bqt 发表于 2007-1-24 17:30 | 显示全部楼层

re:

&nbsp;&nbsp;&nbsp;&nbsp;你回去翻翻书,看看SVC32Mode是什么模式?<br />&nbsp;&nbsp;&nbsp;&nbsp;再次强调,^是不能在用户和系统模式下用的,因为用户和系统模式下没有SPSR<br />&nbsp;&nbsp;&nbsp;&nbsp;wl80382000说的不错<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;不过你执着的精神还是值得赞赏,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

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

8

主题

16

帖子

0

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