Part Number:CC1310
各位专家:我在分析 CC1310 15.4 collector 中 MAC 事件处理程序。static void macTaskFxn(UArg a0, UArg a1) 在
这个程序处理流程中,
macEvents = OsalPort_waitEvent(_macTaskId);
Task_disable();
接收到Osal 发送的MAC 驱动事件后,我发现应用了Task_disable(); 这个函数。
问题1:Task_disable 这个函数作用是什么,是否是停止ROTS 的 任务调度,保持当前任务调度。
问题2:如果是我说的停止任务调度的作用,那么为什么需要,我认为当前任务的【#define MAC_TASK_PRIORITY 3】 任务级别要高于 【#define APP_TASK_PRIORITY 1 】应用任务的级别,
如果该任务不执行完不会调度APP 任务。那么Task_disable 是否不需要,还是有其它原因。请指教,多谢。
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
您好,您可以参阅以下文档了解更多有关于task的信息:
https://dev.ti.com/tirex/explore/content/simplelink_cc13x0_sdk_4_20_01_03/docs/tirtos/sysbios/docs/cdoc/index.html
自由飞翔 说:问题1:Task_disable 这个函数作用是什么,是否是停止ROTS 的 任务调度,保持当前任务调度。
是的,正如您所说的,Task_disable() 禁止所有其他任务运行。 (在 while 循环结束时、 Task_enable() 恢复任务调度。)
自由飞翔 说:
问题2:如果是我说的停止任务调度的作用,那么为什么需要,我认为当前任务的【#define MAC_TASK_PRIORITY 3】 任务级别要高于 【#define APP_TASK_PRIORITY 1 】应用任务的级别,
如果该任务不执行完不会调度APP 任务。那么Task_disable 是否不需要,还是有其它原因。请指教,多谢。
是的,MAC 任务具有最高优先级 (3)。 工程师不太确定这里使用 TASK_DISABLE/ENABLE 的确切原因。 如果调用优先级较高的任务,可能是一种预防措施。 我们正在寻求开发人员的帮助,有新的反馈尽快给到您。方便问下您提出该问题有没有什么特别的原因吗?
,
自由飞翔:
没有其它原因,只是在分析这段程序,分析下任务调度的逻辑。
,
Cherry Zhou:
好的,感谢您的反馈。
工程师与软件开发人员确认过了,此 Task_disable/enabled 不会对具有最高优先级的任务产生直接影响。 添加该选项的原因是为了防止在客户开发其应用时添加更高优先级的任务。
,
自由飞翔:
多谢