vxWorks任务块shell命令输入

时间:2015-08-18 12:30:03

标签: c++ shell multitasking vxworks

我正在生成一个vxworks任务(taskSpawn,优先级为99)。此任务是持续处理数据。如果任务运行,我无法在vxworks shell中输入任何命令。 tShell任务优先级为105.

那么如何在shell中输入任何命令。我有一个命令来阻止任务进一步处理数据。

1 个答案:

答案 0 :(得分:2)

VxWorks调度程序基于优先级。任务以先到先得的方式执行(默认情况下禁用循环)。

因此,如果您的任务连续运行,它会阻止所有优先级较低的任务(较高的数字= VxWorks中的较低优先级),因为调度程序选择优先级较高的任务首先运行。

为了解决这个问题,您主要有以下选择:

  • 在处理循环中添加taskDelay(1);。这将阻止您的线程进行一次系统勾选并启用优先级较低的线程(如您的情况下为tShell)。
  • 以低于shell的优先级(例如110)生成您的线程,以强制它在后台运行。

根据具体情况,我建议使用后者,因为根据您的任务添加taskDelay(1);可能会显着减慢处理速度(并且使用tickSet(..)将系统节拍增加到1000以上会大大增加中断负载)。如果您降低优先级,另一方面您的任务将运行,除了更高优先级的任务(例如shell)已准备好运行。在这种情况下,您的任务将被中断,直到更高优先级的任务完成处理(例如,执行终止命令)。