This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3235SF:全局锁定互斥问题

Guru**** 2482225 points
Other Parts Discussed in Thread: CC3120

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1282805/cc3235sf-global-lock-mutex-issue

器件型号: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 ActionIndexSlSocketAsyncEvent_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 = 0ActionIndex < 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->Valsl_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);
}
} 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!  

    这似乎是一个真正的问题、修复很好。

    我们将对此进行报告、并将其添加到下一个版本(但目前我们没有此方面的时间表)。