kongqqq 发表于 2005-8-3 18:03:43

关于在m128中使用ucos的一个具体的技术问题:任务切换时PC值是如何存取的

在ucos的官方网站上下了个移植程序,可是在OS_CPU_A.S的_OSCtxSw::函数中,并没有reti指令,那么不同任务的入口点(动态的,即被打断时的PC值)是怎么被保存和载入的呢?

做过AVR的ucos移植的朋友请指点!!!
-----此内容被kongqqq于2005-08-03,18:36:30编辑过

kongqqq 发表于 2005-8-3 21:40:12

没人帮忙,自己顶一个,为了不让这篇帖子没落

Johnny_fighting 发表于 2007-8-9 15:46:43

这个函数主要有有以下功能:保存当前任务的现场;保存当前任务的栈指针到当前任务的控制快中;切换最高级任务为当前任务,使sp指针指向该任务的栈顶;恢复该任务的运行环境。

假如1任务切换到2任务,那么1任务的现场应该能保存。

pushrs

pushsreg

pushsp   //保存了现场

LDS   R30,_OSTCBCur

LDS   R31,_OSTCBCur+1

ST    Z+,R28

ST    Z+,R29   ;保存了pc现场



当让把高优先级的任务pc指针调出来反过来就行了

握也想请问你一个问题:保存不保存现场跟reti有什么关系??

再说拉这个地方是软中断啊,有没有硬中断你怎么用reti?
页: [1]
查看完整版本: 关于在m128中使用ucos的一个具体的技术问题:任务切换时PC值是如何存取的