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.

[参考译文] CC3220:SimpleLink 库中的信号量溢出

Guru**** 2577385 points
Other Parts Discussed in Thread: CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/738850/cc3220-semaphore-overflow-in-simplelink-library

器件型号:CC3220

我认为我可能遇到了 SimplLink SDK 库中的问题。

我最近添加了将 WiFi RSSI 输入到项目中的功能、并且在~15分钟的运行时间后、我开始遇到溢出异常。 我正在使用 此链接中指定的代码。  

在使用调试 TI RTOS 构建调试 CC3220SF 后、会出现信号量 g_PCB->FlowContactCB.txSyncObj 在函数_SlDrvMsgRead 中使用以下代码发出信号:

if (g_pcb->FlowContactCB.TxPoolCnt > flow_CONT_min)
{
SL_DRV_SYNC_OBJ_SIGNAL (&G PCB->FlowContactCB.TxSyncObj);
} 

我看不到 在  g_pcb 上调用 sl_drv_sync_obj_clear 或 sl_SyncObjWait 的实例。->ContactFlowCB.TxSyncObj。 因此、对 _SlDrvMsgRead 的每次调用看起来都会导致信标递增而不会递减。

我还在信标计数值的存储器位置放置了一个观察点、我只会在信标计数递增的 semaphore.c 的第349行上看到调试实例中断。

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

    Code Composer V8.3.0
    Simplelink SDK v2.30.00.05
    TI v18.1.3.LTS 编译器
    服务包 sp_3.9.0.6_2.0.0.0_2.2.0.6
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ryan、

    sl_SyncObjWait (以及 Clear)在_SlDrvDataReadOp ()和_SlDrvDataWriteOp ()内调用。

    您能否准确地展示您如何使用该命令?
    您调用"sl_WlanRxStatGet"的频率是多少?

    我将尝试验证 syncObject 周围的逻辑。

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

    Kobi、

    我在配置任务中每隔~10ms 调用一次该函数。 我可以减慢这个速度、但考虑到我的观察点看起来没有减量、我担心这会延迟问题的发生。

    以下代码片段是我使用该函数的方式:

    静态 Int32_t UpdateRSSI (void)
    {
    SlWlanGetRxStatResponse_t rssiRxStat;
    int32_t lRetVal;
    
    lRetVal = sl_WlanRxStatGet (&rssiRxStat、
    0);
    如果(0 = lRetVal)
    {
    if (0!= rssiRxStat.AvarageDataCtrlRssi)
    {
    giRssi =(rssiRxStat.AvarageDataCtrlRssi
    + rssiRxStat.AvarageMgMntRssi)
    / 2;
    }
    }
    其他
    {
    giRssi =-99;
    }
    
    返回0;
    } 

    giRssi 是一个全局短接、用于保持 RSSI 的最后一个值。

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

    您好!

    只是一个简短的评论...

    我在连接的 STA 模式下使用相同的 API 来获取 RSSI 值。 我看不到信标有类似问题。 我调用间隔为5秒的 API。 我使用 ROV 来确定信号量的状态、但问题未显示。 此外、我已使用 AP 在运行时间长达1000小时的时间内验证了我的固件(基于 SDK 2.10、2.20和2.30的版本正在进行测试)。

    -根据我的经验、调用 API 在短于5秒的时间内获得 RSSI 没有意义。 10ms 不是获得足够的数据包来获得适当 RSSI 值的合理时间。
    -如果在配置过程中调用 SL_ API (sl_Stop ()和 sl_WlanProvisioning ()除外)、则应拒绝命令并返回 SL_RET_CODE_PROVISIONING_IN_PROGRESS。

    1月

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

    1月、

    感谢您提供这些信息! 我计划减少在概念证明完成后调用该函数的频率。 首先、我想了解函数返回的值范围、然后再将其减小。

    我将调用该 API 的频率降低到每1秒一次、但信标似乎持续增加。 另一个需要注意的问题是、信号量计数在函数_SlDrvDriverCBInit 中复位、该函数在器件未启动时在 SL_Start 中调用。

    Kobi、

    函数 sl_WlanRxStatGet 调用函数_slDrvCmdOp。 在函数_slDrvCmdOp 内、我看不到对_SlDrvDataReadOp 或_SlDrvDataWriteOp 的函数调用。 读写功能如下:

    RetVal =_SlDrvMsgWrite (pCmdCtrl、pCmdExt、pTxRxDescBuff);
    
    if (sl_OS_RET_CODE_OK = RetVal)
    {
    /*等待响应*/
    RetVal =_SlDrvMsgReadCmdCtx (pCmdCtrl->操作码、IsLockRequired);//将释放全局锁定*/
    SL_TRACE1 (DBG_MSG、MSG_314、"\n\r\n_SlDrvCmdOp:已退出_SlDrvMsgReadCmdCtx:%x\n\r\n、pCmdCtrl->操作码);
    } 

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

    我找到了错误。 它与最新的 SDK 版本(2.20和2.30)相关。
    您提到的信号对象的实现已从使用二进制信标(适用于"driver.c"中的 TX 流控制处理)更改为计数1 (导致您面临的问题)。
    如果您有较旧的 SDK (2.10是最后一个正确工作的 SDK),则可以使用它,直到问题在下一个 SDK 版本中得到解决(SDK 2.10安装程序可从以下链接获得: www.ti.com/.../2.10.00.04 )。
    请注意、如果您的平台上安装了较旧的 SDK、只需更改项目属性中"simplelink.a"的链接、即可指向旧 SDK 中的存档。
    我将在接下来的几天内尝试提供一个补丁。

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

    我是否需要回滚2.10版本附带的服务包?

    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否 问题仅与主机驱动程序有关,您应该使用最新的 SP。
    我将关闭该主题、因为问题已得到处理。
    下一个版本中需要修复。

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

    是否有任何解决方法? 或任何补丁?。 我们在 CC3220SF 器件上长期以来一直在寻找类似的问题。

    我们无法回滚到2.10.1.4。

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    目前我们没有补丁。
    此修复程序将是下一版本的一部分。

    BR、
    Kobi