Part Number:CC2652ROther Parts Discussed in Thread:CC1352P
TI达人:
我在project_zero任务重中增加一个新任务Sensors_taskFxn,中间屏蔽掉了所有传感器的service,使用一个软定时来运行 profile_readSensor(),内容是ADCBuf_convert转换,发现运行10分钟后Sensors_taskFxn该任务运行异常,但是问题在哪里无从下手!使用LOG 查看运行到这个函数Util_enqueueMsg(Queue_Handle msgQueue,Event_Handle event,uint8_t *pMsg)后面就卡死,消息队列和事件发布是否成功就不知了!但是ProjectZero_taskFxn任务运行一直正常。后面直接在profile_readSensor()打印一条LOG还是卡住。
ProjectZero_taskFxn 任务优先级为2 ,Sensors_taskFxn任务优先级为1,两个任务的消息队列事件 PZ_READ_RPA_EVT和SC_DEFERRED_EVT已经修改不存在冲突,这两个任务的阻塞 事件都使用的是 Event_Id_30,这里也是参考 multi_sensor这个例程。
events = Event_pend(syncEvent, Event_Id_NONE, SC_ALL_EVENTS, ICALL_TIMEOUT_FOREVER); #define SC_ALL_EVENTS Event_Id_30
期待你们的回复!谢谢!
Kevin Qiu1:
任务运行分析参考里面提到的ROV和Execution graph:https://dev.ti.com/tirex/content/simplelink_academy_cc13xx_cc26xxsdk_6_10_01_00/modules/rtos/tirtos_basics/tirtos_basics.html
,
user4849938:
谢谢!如果任务运行过程中出现发生内存分配错误,运行 Sensors_enqueueMsg(SC_DEFERRED_EVT, pData)返回bleMemAllocError,这该如何处理,一点思路都没有?这个和我们自己做的板子有关系吗?
,
Kevin Qiu1:
bleMemAllocError是内存没有及时释放引起的错误
上面的ROV调试测试了吗,它会显示具体的内存使用情况
例程中pData 在 ProjectZero_processApplicationMessage(pzMsg_t *pMsg) 结束时被释放
,
user4849938:
非常感谢!我已经将所有的任务TASK_STACK_SIZE翻倍,project_zero_app.cfg中 Program.stack = 2048; Task.idleTaskStackSize = 1600; 截图显示只占40%,问题依旧。后面移植到官方CC1352P的开发板上,也是出现这个问题,我打算放弃Sensors_taskFxn这个任务了,直接在project_zero任务中调度。
,
Kevin Qiu1:
好的,一般如果不直接和stack通信,则不需要新创建Util_enqueueMsg队列任务