器件型号:CC3220
大家好、
我最终决定将我的项目从之前的版本2.10.00.04迁移到最新的 SDK 和驱动程序(2.20.00.10)。 不幸的是、我有一个问题、我需要您的帮助。
我的代码在以前的驱动程序版本中可以正常工作。 但是在更新到最新版本的驱动程序后,它会在第一次调用 sl_Start() API 时挂起。 它位于文件 device.c 中的第185行、并等待异步。 永久事件:
verify_RET_OK (_SlDrvWaitForInternalAppointointoumenEvent (ObjIdx、init_complete_timeout、sl_opcode_device_INITCOMPLETE));
我的 sl_Task 在 spwan.c 中的107行循环时生成、任务"正在运行"
//此处我们已准备好执行条目*/
while (true)
{//
等待事件*/
_SlInternalSpawnWaitForEvent();
}
观察结果/要点很少:
- 问题与 ServicePack 版本无关(我使用3.7.0.1和3.8.0.3测试了代码、结果相同;使用相同的 SP 版本、2.20版的 network_terminal 演示工作正常)
- 如果在调用调度程序之前从 main 调用 sl_Start(),则会执行 sl_Start()并正确返回。 此时仅初始化硬件。 不会产生 SimpleLink 和其他任务。
- 我使用 TI-RTOS 和 CCS 7.4 (我预计 CCS 版本不会出现问题)
- 问题与宏 sl_platform_multi_threaded 无关
Update1:好的,现在我了解了为什么 sl_Start()在没有 sl_Task 的情况下工作,但仍然不了解任务运行时的情况
Update2:似乎已触发中断、_SlInternalSpawn 从处理程序调用、并由 sl_DRV_SYNC_OBJ_SIGNAL (&G)进行签名;但它仍然不起作用。 如何工作新的 spawn.c 对我来说真的很神秘。
我仍然不熟悉最新驱动程序中的更改、这些更改非常复杂、我不确定为什么在提供异步功能时遇到问题。 事件。 我很乐意提供任何提示或建议。
谢谢
1月