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

[复制链接]
 楼主| gdpbeyond 发表于 2009-2-22 22:35 | 显示全部楼层 |阅读模式
本人想把UC_OS II 移植到ARM7上,现有个问题请教大家:任务级上下文切换函数OSCtxSw()是否一定要用软中断实现?通过子程序的形式调用可以吗,这样做有什么优点、缺点,请大家讨论下!
 楼主| gdpbeyond 发表于 2009-2-23 19:56 | 显示全部楼层

还请大家不吝赐教呀

还请大家不吝赐教呀
huifly520 发表于 2009-2-24 12:11 | 显示全部楼层

任务级切换函数


  任务级别切换函数OSCtxSW理论上应该是可以写成子函数,只要在功能上实现CPU的寄存器入栈保存(但本人没试过)。UC/OS-II原话是“推荐用软中断实现”。
 楼主| gdpbeyond 发表于 2009-2-24 19:14 | 显示全部楼层

"推荐用软中断实现"

"推荐用软中断实现",不知道用软中断有何优点!
nizqsut 发表于 2009-2-28 02:15 | 显示全部楼层

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


当前任务先将CPU寄存器堆保存在自己的栈中,然后将要运行任务的栈赋给CPU的栈指针,再将要运行任务的寄存器堆弹出栈,最后执行函数返回指令就切换都要运行的任务了。
etual 发表于 2009-2-28 09:23 | 显示全部楼层

不一定要用软中断的

最近移植到AVR上面,根本就没有软中断指令
只通过汇编代码手工保存寄存器的。
armecos 发表于 2009-2-28 09:41 | 显示全部楼层

用软中断是标准作法,

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

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

216

帖子

0

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

41

主题

216

帖子

0

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