传统嵌入式系统是使用协作多任务调度程序来实现的。
该系统基本上按照以下方式工作:
- 任务 A 确实有效
- 当任务 A 完成时,它会产生处理器。
- 任务 B 获取处理器并开始工作。
- 任务 B 的成果
... - 任务 n 的产出
- 任务 A 已安排并正常运行
一个大循环队列:A -> B -> C -> ... -> n -> A
我们正在将系统移植到新平台,并希望尽量减少系统重新设计。
有没有办法在 vxWorks 中实现这种类型的协作多任务处理?
最佳答案
虽然VxWorks是基于优先级的操作系统,但可以实现这种类型的协作多任务处理。
只需将所有任务置于相同优先级即可。
在您的代码中,您需要执行yield,只需插入“taskDelay(0);”
请注意,您必须确保禁用内核时间切片 (kernelTimeSlice(0))。
所有具有相同优先级的任务都在一个队列中。当任务让出时,它会被放置在队列的末尾。这将实现所描述的算法类型。
关于vxworks - 我可以在VxWorks中实现协作多任务系统吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/142710/