gdpbeyond 发表于 2009-2-22 22:35

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

本人想把UC_OS II 移植到ARM7上,现有个问题请教大家:任务级上下文切换函数OSCtxSw()是否一定要用软中断实现?通过子程序的形式调用可以吗,这样做有什么优点、缺点,请大家讨论下!

gdpbeyond 发表于 2009-2-23 19:56

还请大家不吝赐教呀

还请大家不吝赐教呀

huifly520 发表于 2009-2-24 12:11

任务级切换函数

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

gdpbeyond 发表于 2009-2-24 19:14

"推荐用软中断实现"

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

nizqsut 发表于 2009-2-28 02:15

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

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

etual 发表于 2009-2-28 09:23

不一定要用软中断的

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

armecos 发表于 2009-2-28 09:41

用软中断是标准作法,

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

HotC51 发表于 2009-2-28 09:55

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

页: [1]
查看完整版本: 关于UC_OS II 的任务级上下文切换函数OSCtxSw()