打印

关于UC_OS II 的任务级上下文切换函数OSCtxSw()

[复制链接]
2660|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdpbeyond|  楼主 | 2009-2-22 22:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
gdpbeyond|  楼主 | 2009-2-23 19:56 | 只看该作者

还请大家不吝赐教呀

还请大家不吝赐教呀

使用特权

评论回复
板凳
huifly520| | 2009-2-24 12:11 | 只看该作者

任务级切换函数


  任务级别切换函数OSCtxSW理论上应该是可以写成子函数,只要在功能上实现CPU的寄存器入栈保存(但本人没试过)。UC/OS-II原话是“推荐用软中断实现”。

使用特权

评论回复
地板
gdpbeyond|  楼主 | 2009-2-24 19:14 | 只看该作者

"推荐用软中断实现"

"推荐用软中断实现",不知道用软中断有何优点!

使用特权

评论回复
5
nizqsut| | 2009-2-28 02:15 | 只看该作者

ucos的任务切换,几句话就能说清楚


当前任务先将CPU寄存器堆保存在自己的栈中,然后将要运行任务的栈赋给CPU的栈指针,再将要运行任务的寄存器堆弹出栈,最后执行函数返回指令就切换都要运行的任务了。

使用特权

评论回复
6
etual| | 2009-2-28 09:23 | 只看该作者

不一定要用软中断的

最近移植到AVR上面,根本就没有软中断指令
只通过汇编代码手工保存寄存器的。

使用特权

评论回复
7
armecos| | 2009-2-28 09:41 | 只看该作者

用软中断是标准作法,

    软中断比函数调用好的地方是:1、可以从用户模式进入特权保护模式;2、可以让OS和应用程序分离。
    有些单片机没有软中断指令,如51,那么用函数调用也是不得以的可行办法。
    
    另外,ARM上开发还是使用深度嵌入式的ecos比较好,不需要自己移植OS。
    www.armecos.com

使用特权

评论回复
8
HotC51| | 2009-2-28 09:55 | 只看该作者

51是无软中断,只能靠调用中断来“软中断”

使用特权

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

本版积分规则

41

主题

216

帖子

0

粉丝