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.

[参考译文] CC3220SF-LAUNCHXL:在 CREATE 套接字上设置 SocketTXFailure

Guru**** 2595805 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/785077/cc3220sf-launchxl-sockettxfailure-is-set-on-create-socket

器件型号:CC3220SF-LAUNCHXL

您好!

我在创建套接字时设置 g_pc->SocketTXFailure 时遇到问题,因此无法通过套接字发送数据。

下面的行(位于_SlDrvDataWriteOp)使这种情况发生。 如果我指出、如果阻止、一切都按预期工作、我可以发送和接收数据、而不会出现任何其他问题。

if (g_PCB-> SocketTXFailure &(1<<(SD & SL_BSD_BSD_Socket_ID_MASK))) 

 

我已在以下行中设置条件断点(在_SlDrvMsgRead 上)。

G_PCB->FlowContactCB.MinTxPayloadSize =((_SlResponse Header_t *) uBuf.TempBuf)->MinMaxPayload; 

 

 

如果在创建套接字时遇到问题。 以下是调用堆栈:

_IntDrvMsgRead (unsigned short * outMsgReadLen、unsigned char ** p16_OutBuf)(ti\drivers\net\fili\sources\driver.c:1277)_SlDrvMsgmdCmdCmdClen
(unsigned short cmccode、unsigned ReadIsLockRef1)(vif\drivers\net\wifi \source\tradcs.c:trf)
*


、ntf * crf (vf)* crf cf cf *、nt_enf cf cr * crf cf (unsigned cf)/slf cf cf *、nt_enf cr *、ntf cr * crf cf cr * crf cf cr、ntf cr、ntf cf cr * crf cf cr、ntf cr、ntf cr * crf cf cr *、ntf cf cf cr *、ntf cr inf cr *、ntf cr inf cr inf cr、ntf cr、 int16_t 协议、uint32_t ifBitmap、int16_t 标志)(ti\net\slnetsock.c:408) 

 

考虑到对 SlDrvDataWriteOp 的验证允许一切正常工作,我相信可以假设调用代码正常(接口设置、连接正常、端点寻址等)。 此外、在创建套接字时将 SocketTXFailure 的值设置为高于0似乎有点奇怪。

了解有关如何解决此问题或如何调试此行为的根本原因的任何提示。

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

    您正在将什么内容传递到 SlNetSock_create()和 SL_Socket 中? 这些函数的参数可能未正确提供、导致主机驱动程序遇到错误。

    NWP 日志是对调试有用的工具。 有关收集这些信息的说明、请访问:
    processors.wiki.ti.com/.../CC3120_&_CC3220_Capture_NWP_Logs
    之所以可以设置 SocketTXFailure、有多种原因、这些日志将有助于找出 NWP 中发生的情况。 请在遇到套接字错误时收集这些信息、然后将其上传到此处进行分析。

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

    您好、Michael、

    感谢您的快速回复。

    我正在执行这些指令并遇到一个限制:我已经在应用中使用 UART0。

    您能否提供使用 UART1的替代配置? 使用引脚62不会是问题。

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

    您好!

    尽管使用了 UART0、但我还是决定尝试一下、结果出乎意料(或不!) 它似乎在工作。

    请找到所附的两个日志文件。 一个带有原始驱动程序代码(带有 SocketTXFailure 检查)、另一个带有注释块的驱动程序代码(正如我之前所述)。

    为了提供更好的环境、我基本上通过建立与 Web 服务器的 TCP 连接、发送原始 HTTP 请求并读回响应来测试这一点。

    我正在通过 HTTP 连接到"www.howsmyssl.com (端口80、不涉及 TLS)。

    这是我的应用程序的日志:

    地址解析为35.227.42.200
    正在打开套接字...
    正在连接...
    写入18个字节
    读取230个字节
    HTTP/1.0 301永久移动
    内容类型:text/html;charset=UTF-8
    位置: https://www.howsmyssl.com/
    日期:2019年3月22日星期五14:36:05 GMT
    内容长度:61
    
    "="">www.howsmyssl.com/">Moved 永久。
    
    
    正在关闭插座 

    使用原始代码进行记录:

    e2e.ti.com/.../nanoframework_2D00_cc3220sf_2D00_with_2D00_SocketTXFailure.log

     带有注释块的日志:

    e2e.ti.com/.../nanoframework_2D00_cc3220sf_2D00_WITHOUT_2D00_SocketTXFailure.log

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

    NWP UART 与主 MCU UART 无关、因此您可以在 UART0上运行终端输出以及在引脚62上运行 NWP 输出、而不会出现任何问题。

    查看日志,我看到的与 TCP 连接相关的唯一错误实际上来自 sl_NetAppDNSGetHostByName()命令,您可以通过该命令获取服务器的 IP 地址。 对于其中一个调用、响应似乎是 IPv6响应、但 NWP 未设置为使用 IPv6。 但是、这不应导致 NWP 中出现错误状态、以至于您的套接字 create 命令会立即导致在该套接字上设置错误条件。

    如果您单步执行 sl_socket 调用、如何设置 SocketTXFailure? 接收到的用于设置该变量的命令的操作码是什么?

    此外、您是否正在运行最新的主机驱动程序和 SDK? 如果主机驱动程序和服务包之间不匹配、则这肯定会导致问题。 主机驱动程序版本号可在 simplelink_cc32xx_sdk_2_40_02_00/source/ti/drivers/net/wifi/simplelink.h 中找到、服务接收版本是 simplelink_cc32xx_sdk_2_40_02_00/tools/cc32xx_tools/servicepack-cc3x20中找到的 SP 的文件名。 最新版本分别为3.0.1.46和3.10.0.05。

    作为最终的完整性检查、如果您正在运行 TIRTOS、请尝试使用 ROV 工具来查看您的 RTOS 状态是否有任何异常。 可在此处找到一些说明:
    e2e.ti.com/.../2707429
    尤其要谨慎地检查堆栈溢出。

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

     您好、Michael、

    要测试 IPv6上的提示、我已将接口设置为使用 IPv6、并取消注释驱动程序中的该代码位。 令人惊讶(或不!) 一切都如预期的那样好
    我认为您的分析是正确的、因为 IPv6回复不应导致 NWP 问题。 出于某种原因、该回复确实会导致 NWP 中出现错误状态、如所述。

    顺便说一下、我已经仔细检查了主机驱动程序和 SP 以及与您编写的版本相匹配的版本。

    最后注释:我正在使用 FreeRTOS、到目前为止、我无法发现任何溢出或堆栈损坏。

    感谢您对此提供的出色帮助!