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.

[参考译文] CC3301:R7 固件卡滞问题。

Guru**** 2466550 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1545248/cc3301-r7-fw-stuck-issue

器件型号:CC3301


工具/软件:

R7 固件版本为 1.7.5.310、它不稳定且崩溃、原因不明。 它会在 AP 扫描期间以及连接到具有加密模式的 AP 时崩溃。  

针对这些问题的一些变通办法可能会使 FW 不会卡什:
a.在 Wlan_Role 上 () 之前添加 PRINT 语句。 //修复扫描崩溃问题。
b.在 SCAN 和 CONNECT 命令之间调用 Wlan_Role Down() 和 Wlan_Role Up()。 //修复连接崩溃问题。

我们需要找到 FW 崩溃的根本原因、以避免在其他情况下出现 FW 崩溃。

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

    尊敬的 Yuan:

    从固件崩溃日志中、我们可以看到未收到站点角色启动命令。 能否确认 WLAN_START 和 WLAN_STA_ROLE_UP 实际发送到 cc33xx? 我也要通过探测 SDIO 线路来确认这一点。 由于某种原因、固件只能看到扫描命令、如果没有 WLAN_START 和 WLAN_STA_ROLE_UP、固件将随后崩溃。  

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

    你好、Sabeeh

    我不知道为什么在 FW carsh 日志中找不到 WLAN_START 和 ROLE_UP 命令、我为您上传 csv 日志文件、您可以在其中找到这些命令。

    e2e.ti.com/.../scan_5F00_stuck.csv

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

    尊敬的 Yuan:

    我们能够重现此场景并创建固件崩溃。

    当 NULL 被传递到 wlan_roleup 命令时发生崩溃。 我们从 您创建的变通办法中注意到您正在呼叫  

    RET = Wlan_Role (WLAN_ROLE_STA、  null 、WLAN_WAIT_FOREVER);

    这是不正确的。

    请使用类似的内容填充第二个参数:

    RoleUpStaCmd_t RoleUpStaParams

    OS_memset (&RoleUpStaParams、0、sizeof (RoleUpApCmd_t));

    RET = ParseRoleUpStaCmd (arg&RoleUpStaParams);
    RET = Wlan_Role (WLAN_ROLE_STA&RoleUpStaParamsWLAN_WAIT_FOREVER);
    重要的是填充 RoleUpStaParams 结构的 countryDomain 参数。
    您可以在 R7 版本的“examples/network_terminal_common/cmd_parser.c"中“中找到 ParseRoleUpStaCmd 的实现示例。
    您还可以找到在“source\ti\drivers\net\wifi\wifi_host_driver\inc_adap\wlan_if.h"中“中定义的 RoleUpStaParams 结构。 同样,填充此结构中记录的 countryDomain[3]参数是至关重要的。
    我从 wlan_if.h 复制了该片段、并将其粘贴到此处以供您快速查看:
    typedef 结构 RoleUpStaCmd
      /*设置监管域*/
      /*前两个字符表示国家/地区代码:[“00",“,"EU"、"EU",“,"JP"“"JP",、,"CS"]“"CS"]*“*/、/</s>“ “
      /*第三个字符代表室内[“i"]*/“*/
      /*例如、countryDomain =“EUI"(“(欧洲(欧洲室内)*/
      uint8_t countryDomain[3];
      /*设置 WPS 参数*/
      WpsParams_t wpsParams//仅与 CC35xx 相关
      /*启用/禁用 p2p */
      Bool_e p2pDeviceEnabled//TRUE/FALSE //仅与 CC35xx 相关
      /*设置 P2P 参数*/
      P2pParams_t P2pParams//仅与 CC35xx 相关
    }RoleUpStaCmd_t
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没错、我设置了 RoleUpStaCmd 参数、扫描成功。 但是、我们的问题是、当我设置 NULL 参数时、它也适用于权变措施方法。 因此,我认为需要修改防火墙代码,以避免在 Wlan_Role  Up() 中传递空参数  导致卡滞的情况。
    此外、在连接期间发生碰撞的情况如何?

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

    尊敬的 Yuan:

    是的、我完全同意添加 NULL 参数保护。 我们将在将来的版本中添加它。  

    我们认为相关的崩溃是相关的。 如果您使用 RoleUpStaCmd 参数、 您是否仍能创建连接崩溃?

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

    是的、即使使用 RoleUpStaCmd 参数、我仍然能够创建连接崩溃。

    连接崩溃主要与扫描操作有关。 测试结果如下:

    WiFi 初始化->  wifi 扫描-> wifi 连接失败-> FW 卡滞 //正常操作
    WiFi 初始化 --> WiFi 扫描-->角色关闭状态-->角色启动状态--> WiFi 连接成功。  //权变方法

    wifi init --> wifi 连接成功//不要直接进行扫描和连接、它将成功。

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

    尊敬的 Yuan:

    在您调用“wifi init ->  wifi scan -> wifi connect failed -> fw stuck “的情况下、您在 AP 上使用的安全类型是什么? 它是 WPA2 还是开放式? 您能否尝试两种安全类型 (OPEN 和 WPA2) 并查看两者是否都发生了固件卡住的情况?

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

    你好、Sabeeh

    安全类型测试结果为:

    打开: 没有问题,可以连接成功

    WPA2: 有问题、FW 将崩溃。

    WPA3: 有问题、FW 将崩溃。

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

    尊敬的 Yuan:

    您能否提供对  WPA2 AP 的“wifi 初始化-> wifi 扫描-> wifi 连接失败-> FW 卡住“情况的监听器捕获和 FW 日志? 您正在使用哪个 AP 模型和制造商?

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

    你好、Sabeeh

    我已将监听器文件上传到  
    https://tidrive.ext.ti.com/u/41CR4HrQkfLxUJHu/6e69507b-7d3c-477b-95d7-dcb58a70ab43?l

    您可以 在上面找到 connect_cstad.7z。

    我使用的 AP 型号是 Redmi、但我也测试了许多其他路由器、结果是相同的。

    谢谢。  

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

    谢谢你 Yuan。 我可以看到固件日志和监听器捕获。 让我与开发团队合作、看看我们可以如何继续。

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

    尊敬的 Yuan:

    我们的团队仍在尝试 找出有关“wifi init  -> wifi scan -> wifi connect failed -> fw stuck “问题的根源。 您是否可以尝试此处附加的固件二进制文件并收集固件日志? 我们已启用调试打印、以帮助我们准确确定固件卡住的位置。  

    e2e.ti.com/.../connect_5F00_fw_5F00_stuck_5F00_dbg.zip

    您能否还分享 C 代码中 WLAN_CONNECT 和 WLAN_SCAN 函数的实现? 我们希望进行比较、因为我们仍然无法重现问题。

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

    除此之外、您是否知道在调用 WLAN_SCAN 函数之前是否调用 WLAN_SET_BAND 函数?

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

    你好、Sabeeh

    我没有调用 WLAN_set_band 函数、实际上、此 API 并未在我们的驱动程序中实现。

    我已经测试了您的 dbg fw、它会在扫描期间执行 carsh、您可以 在 tidrive.ext.ti.com/.../6e69507b-7d3c-477b-95d7-dcb58a70ab43 中找到 fw 日志 fw8_5_scanstack.pcapng

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

    尊敬的 Yuan:

    感谢您收集这些调试日志。 我们相信我们已经找到根本原因并创建了固件修复。 您能否试一试、让我知道它是否修复了此连接错误?

    如果仍然失败、我还附上了 logger.bin、以便您收集并向我们提供固件日志。  

    e2e.ti.com/.../connect_5F00_fw_5F00_fix.zip

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

    你好、Sabeeh

    我已经测试了此固件、结果表明此固件修复了连接错误。

    谢谢。

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

    你好、Sabeeh

    当我将国家/地区代码设置为“DE"(“(客户(客户请求)时、再次出现此问题、扫描期间会发生固件切换。  我已将固件日志 (de_scan_stad.pcapng) 上传到  

    tidrive.ext.ti.com/.../6e69507b-7d3c-477b-95d7-dcb58a70ab43

     

    请检查一下、谢谢。

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

    尊敬的 Yuan:

    如前所述、监管领域与国家/地区代码不同。 我建议使用 reg 域“eu"。“。  

    如果必须使用 自定义域、则使用 WLAN_SET API 来完成此操作。 您可以在 source/ti/drivers/net/wifi/wifi_host_driver/inc_adapt/wlan_if.h 文件中阅读相关内容