首页 文章

vxWorks任务块shell命令输入

提问于
浏览
0

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

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

1 回答

  • 2

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

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

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

    • taskDelay(1); 添加到处理循环中 . 这将阻止您的线程进行一次系统勾选并启用优先级较低的线程(如您的情况下为tShell) .

    • 以低于shell(例如110)的优先级生成线程,以强制它在后台运行 .

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

相关问题