关于UC_OS II 的任务级上下文切换函数OSCtxSw()
本人想把UC_OS II 移植到ARM7上,现有个问题请教大家:任务级上下文切换函数OSCtxSw()是否一定要用软中断实现?通过子程序的形式调用可以吗,这样做有什么优点、缺点,请大家讨论下!还请大家不吝赐教呀
还请大家不吝赐教呀任务级切换函数
<br /> 任务级别切换函数OSCtxSW理论上应该是可以写成子函数,只要在功能上实现CPU的寄存器入栈保存(但本人没试过)。UC/OS-II原话是“推荐用软中断实现”。<br />"推荐用软中断实现"
"推荐用软中断实现",不知道用软中断有何优点!ucos的任务切换,几句话就能说清楚
<br />当前任务先将CPU寄存器堆保存在自己的栈中,然后将要运行任务的栈赋给CPU的栈指针,再将要运行任务的寄存器堆弹出栈,最后执行函数返回指令就切换都要运行的任务了。不一定要用软中断的
最近移植到AVR上面,根本就没有软中断指令<br />只通过汇编代码手工保存寄存器的。用软中断是标准作法,
软中断比函数调用好的地方是:1、可以从用户模式进入特权保护模式;2、可以让OS和应用程序分离。<br /> 有些单片机没有软中断指令,如51,那么用函数调用也是不得以的可行办法。<br /> <br /> 另外,ARM上开发还是使用深度嵌入式的ecos比较好,不需要自己移植OS。<br /> www.armecos.com51是无软中断,只能靠调用中断来“软中断”
页:
[1]