请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3235SF 主题中讨论的其他器件:CC3120
您好!
我们团队的一名成员在 CC3120的 simplelink SDK 中发现了这一点、现在我们要迁移到 CC3235、请注意 SDK 中也存在这一点。 这是我们希望解决的问题吗?
TI 的最新 Simplelink WiFi 插件驱动程序(4.20.00.10)存在一个错误、导致我们的器件上出现"冻结"问题。 当在建立 TLS 连接时发生异步 Simplelink 事件(通常是 sock 错误)时、会发生这种情况。 在这种情况下、驱动程序无法解锁全局驱动程序互斥体、并且整个系统有效地冻结。
以下是已实施的更改:
/ / /*_SlSocketangHandb Async_Start */***** / _SlReturnVal_t _SlSocketHand博 Async_Start 文(void *pVoidBuf) _u8 ActionIndex; SlSocketAsyncEvent_t * pMsgArgs = (SlSocketAsyncEvent_t *)((_u32) pVoidBuf + sizeof (_u32)); sl_drv_protection_obj_lock_forever (); verify_Protocol (((pMsgArgs->SD 和 SL_BSD_SOCKET_ID_MASK)<= SL_MAX_SOCKETS); /*匹配操作索引*/ for (ActionIndex = 0;ActionIndex < MAX_CONVERGENCTLE_ACTIONS;++ActionIndex) { if ((g_pcb->ObjPool[ActionIndex]。 AdditionalData & 0x0F)= pMsgArgs->SD && ((g_pcb->ObjPool[ActionIndex]。 ActionID)== START_TLS_ID)) { 中断;} } if (ActionIndex == MAX_CORECONVERT_ACTIONS) { sl_drv_protection_obj_unlock ();//我们在此处进行了更改,添加了此行 return (EVENT_SPRIBRATION_CONTINUE); } verify_socket_CB (NULL!= g_pcb->ObjPool[ActionIndex].pRespArgs); ((SlSocketAsyncEvent_t *)(g_pcb->ObjPool[ActionIndex].pRespArgs)->SD = pMsgArgs->SD; ((SlSocketAsyncEvent_t *)(g_pcb->ObjPool[ActionIndex].pRespArgs)->Type = pMsgArgs->Type; ((SlSocketAsyncEvent_t *)(g_pcb->ObjPool[ActionIndex].pRespArgs)->Val = pMsgArgs->Val; sl_drv_protection_obj_unlock (); if ((SL_SSL_NOTIFICATION_SHANGE_FAILED == pMsgArgs->Type || SL_SSL_NOTIFICATION_CONNECTED_SECURED= pMsgArgs->Type) { sl_drv_sync_obj_signal (&G -> ObjPool[ActionIndex]。 SyncObj); return (EVENT_SPRIBRACTION_BLOCK); } 否则 { return (EVENT_SPRIBRATION_CONTINUE); } }