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.

[参考译文] CC3120:sl_Recv 返回-2005错误代码

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

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/813438/cc3120-sl_recv-returns--2005-error-code

器件型号:CC3120

您好!

  我们现在正在 CC3120平台上实施服务器功能。

  成功连接到 AP 后、我们使用以下说明在指定端口上实现侦听服务器功能。

  1. sl_Socket ();

  2. sl_Bind();

  3. sl_listen();

  4. sl_accept ();

  从 PC 上运行的客户端接收到传入连接请求后、我们使用以下说明来处理数据。

    INT 状态;

    while (1)

    {

      如果((status = sl_Recv (fd、buf、len、0))< 0)

      {

        printf (“错误代码=%d”,状态);

        休息;

      }

      其他

        .

    }/* while 结束*/

   尽管我们可以成功地接受新的连接,但在开始时调用 sl_Recv()以从客户端接收数据时,我们通常会遇到错误。 错误代码是-2005、它似乎是 API_ABORT。 奇怪的是、测试并非总是失败、有时也能正常工作。

  对于 sl_Recv()如何导致-2005错误代码有什么想法吗? 默认情况下、我们使用了阻塞套接字。

  谢谢。

     Todd

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

    您好 Todd、

    通常、CC31xx 上的 SL_API_ABLEBLETED 错误意味着驱动程序移植问题或硬件问题。 在返回此错误之前、应检查是否未报告异步操作器的错误。

    其他信息将为您提供 TI 员工。

    1月

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

    您好 Todd、

    sl_Recv()之前的 SL 调用的返回值是多少? 您还在使用什么主机?

    Jesu

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

    您好、Jan、

       您能否提供有关"在返回此错误之前未报告异步操作"的详细信息?

       谢谢。

                Todd

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

    您好、Jesu、

       对于 sl_Recv ()(socket、bind、listen、accept)之前的所有 SL 调用、它们都返回0 (从 sl_Socket () API 返回的套接字编号也是0)。 我们使用运行在简单 RTOS 上的外部 MCU 通过 SPI 接口连接到 CC3120。

       我对阻塞套接字的使用是否有任何影响?

       谢谢。

           Todd

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

    您好 Todd、

    我是指通过处理程序 SimpleLinkFatalErrorEventHandler 返回的错误事件类型和原因代码可为您提供附加信息。

    1月

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

    您好 Todd、

    对拖延表示歉意。 奇怪的是、它有时工作。 这会使调试变得更加困难、因为您无法获得一致的行为。 您是否曾尝试运行 SDK 中使用 sl_Recv 的示例、以查看您是否获得相同的行为?  

    如果您已经找到解决方案、我将关闭此主题。 如果您作出响应、我将收到通知。

    Jesu

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

    您好、Jesu、

       我想知道 SL_Recv()是否被系统中的一些高优先级任务阻止。 我已经完成了禁用系统中某些任务的测试,sl_Recv()操作工作正常。 起初、我认为、当数据到达时、CC3120的中断被阻止处理。 但是、即使这些高优先级任务正在运行、也可以成功完成其他 simplelink 命令。

       什么类型的错误会导致 sl_Recv() API 返回-2005错误代码?

       谢谢。

            Todd

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

    您好 Todd、

    -2005表示 sl_api_aborted、这表示 API 因主机驱动程序中的错误而中止。 发生这种情况时,通常必须通过调用 sl_Stop()然后调用 sl_Start()来重新启动主机驱动程序,但如果经常发生这种情况,则通常是误用主机驱动程序的情况。 您能告诉我您在哪里调用 sl_Recv()吗? 您是否在事件处理程序中调用它?

    Jesu

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

    您好、Jesu、

       很抱歉我迟到的回复!

       一旦从远程客户端建立连接,sl_Recv() API 就会在一个已生成的线程中调用。

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

       sock = sl_Socket (sl_AF_iNet、sl_sock_stream、0);

       sl_Bind (sock、sa、addrSize);

       sl_listen (sock、0)    ;

       sl_accept (sock、CSA、(slSocklen_t *)&addrSize);

       while (1)

       {

           如果((status = sl_Recv (newsock、pBuf、packet_BUF_size、0))< 0)

          {

              printf ("error\r\n");

               转到 ERROR_EXIT;

           }

           如果(状态= 0)则为其他值

               休息;

       }

    ===================================================================================================================================

       谢谢。

           Todd

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

    您好 Todd、

    您将连接到 CC3120的器件是什么?

    编辑:

    此外、当您在 sl_Recv 上等待时、是否有其他正在运行的线程可调用其他 SL API?

    Jesu

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

    您好、Jesu、

       我们使用一个 MCU 通过 SPI 接口与 CC3120连接。

       除了运行 sl_Recv()以从客户端接收数据的线程外,还有另一个运行_SlInternalSpawnTaskEntry()的线程从 CC3120检查中断事件。

       谢谢。

                Todd

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

    您好、Jesu、

       我们使用一个 MCU 通过 SPI 接口与 CC3120连接。

       除了运行 sl_Recv() API 从客户端接收数据的线程之外,还有另一个运行_InternalSpawnTaskEntry() API 的线程处理来自 CC3120的中断事件。

       谢谢。

           Todd

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

    您好 Todd、

    我知道您使用的是 MCU。 具体而言、我在问您将哪个器件用作主机? 我提出这一问题是因为在搜索旧的相关 e2e 时、我们的一位工程师提到某些主机会导致 NWP 出现同步问题。 您还可以通过捕获 SPI 接口的逻辑波形来检查这一点。 如果您需要、请包含屏幕截图。

    线程看起来正常。

    Jesu