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.

[参考译文] CC3220MODA:WiFi 模块锁定

Guru**** 2563240 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/714508/cc3220moda-wifi-module-lock-up

器件型号:CC3220MODA

您好!

我仍然遇到此问题、mutex 断言导致处理器锁定。  详情请见以下链接。

https://e2e.ti.com/support/wireless_connectivity/simplelink_wifi_cc31xx_cc32xx/f/968/t/674363

这并不一致、因为它并不是在运行代码时一直发生、但如果确实发生了这种情况、它似乎是在同一个位置发生的。

配置完成后,它会调用 HandleProvisioningComplete 函数,并打印****星号的第一行,然后锁定断言。
我添加 了 SL_WLAN_PROVISIONING_CMD_STOP、这是能够在没有应用程序的情况下使用 WIFI 进行配置的一部分(根据我阅读的文档)。  您应该在配置完成后调用停止、并且不需要应用程序的响应。  
我使用此命令启动配置:

RetVal = sl_WlanProvisioning (provisioningCmd、role_STA、PROVISIONING_INACTUMODE_TIMEOUT、NULL、(uint32_t) sl_WLAN_PROVISIONING_CMD_FLAG_EXTERNAL_CONFIRMATION);

int32_t HandleProvisioningComplete (空)

_i16角色;
_i16状态;
int32_t slRetVal;
gStopInProgress = 0;
gIsWlanConnected = 1;
Log_message("[Provisioning]配置应用程序已成功结束\r\n ");

log_message("********* \r\n");
log_message ("设备已配置\r\n);
log_message("********* \r\n");

//完成外部配置后,JK 停止
slRetVal = sl_WlanProvisioning (sl_WLAN_PROVISIONING_CMD_STOP、Role_STA、0、NULL、(uint32_t) sl_WLAN_PROVISIONING_CMD_FLAG_EXTERNAL_CONFIRMATION);
//JK 需要此项吗?
ASSERT_ON_ERROR (slRetVal);

/*将器件设置为 STA 模式*/
状态= SL_WlanSetMode (Role_STA);
if (状态)

/*错误设置模式*/
ASSERT_ON_ERROR (状态);

/*重置设备*/
//Status = sl_Stop (0);
状态= sl_Stop (sl_stop_timeout);
角色= sl_Start (NULL、NULL、NULL);
//role = sl_Start (NULL、NULL、(P_INIT_CALLBACK) SimpleLinkInitCallback);
if (Role_STA!=角色)

/*角色错误*/
ASSERT_ON_ERROR (状态);

StartAppelimer (reconnection_established _ timeout_sec);

G_RemoConfig.ProvisionStatus = WifiProvStatus_Provisioned;
EH_SendEventID (Q_ScreenManager、Event_Provisioning_Complete);

返回0;

 

提前感谢您的任何帮助!

Joe K.

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

    您提到该程序打印****星号的第一行,然后锁定断言。

    更确切地说、程序是否会崩溃:
    log_message ("设备已配置\r\n);"

    还是撞毁了线路:
    ASSERT_ON_ERROR (slRetVal);

    谢谢、
    Alexis
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexis、
    嗯、从技术上讲、我相信它会在 SL 任务中崩溃、但我通常看到的最后一个东西是第一行星号。
    您可以在我问的上一个问题中看到堆栈跟踪。 它正在尝试解锁空互斥量。
    我不知道我是否损坏了存储互斥体的存储器、是否存在导致它的竞态条件或 SDK 中的一些错误。 我使用的是1.60 SDK、我知道2.2已经用完了、但我即将结束该项目、现在切换到该 SDK 可能不符合我的时间安排。

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

    这里是我仍然得到的错误的堆栈跟踪。

    有人知道互斥量为何在 SL 代码中为空?

    谢谢、

    Joe

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

    我有更多信息:

    我在_SlDrvHandleFatalError()中放置一个断点、在这里、"GlobalLockObj = NULL"、因为这是我唯一可以发现它被设置为 NULL 的地方。  这是一个被压碎的变量。

    以下是该断点的堆栈跟踪:

    下面是致命错误处理程序之前的调用:

    此处是变量:

    以下是致命错误处理程序中的数据:

    错误代码为:sl_device_event_fatal 驱动程序_abort

    提供什么?  有什么想法吗?

    谢谢!

    Joe K.

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

    可能的解决方法:

    停止配置后、我正在执行 sl_Stop()、sl_Start()。  我想我还记得、必须执行此操作才能重置器件并使设置保持不变、或者执行类似操作。
    我把它取出了、在尝试几次后没有看到错误。  这并不意味着它是固定的、因为它是随机的、但如果它回来、我将继续监控它并在这里发布。

    谢谢!

    Joe K.

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

    Joe、您好!

    我很高兴您找到了解决方案。 正如您所说、如果问题再次出现、请随时响应此主题或创建新主题。

    谢谢、

    Alexis