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.

[参考译文] LAUNCHCC3220MODASF:在浏览网页时获取消息"检测到同步丢失"

Guru**** 2587345 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/773264/launchcc3220modasf-getting-messages-while-browsing-my-web-pages-sync-loss-detected

器件型号:LAUNCHCC3220MODASF

在浏览自定义网页时、我收到消息"检测到同步丢失"。 但它并不总是相同的。 它是在不同的时间和不同的页面上发生的。 我的应用程序也在运行 MQTT。 可能存在堆栈问题。 我如何理解?

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

    您使用的是自己的定制板还是 TI LaunchPad?

    当调试软件问题时、一个可以使用的工具是 RTOS 对象查看器:
    e2e.ti.com/.../2707429
    我建议您使用该工具检查每个线程的堆栈以及堆状态。 如果在"检测到同步丢失"打印页上设置断点、您是否在 ROV 中看到任何常见的情况?

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

    我使用自己的定制板。 但我可以将 TI LaunchPad 与我的代码一起使用。 我问 John
    e2e.ti.com/.../2854554
    他说:
    Taylan、

    ROV 用于 TI-RTOS 和 SYS/BIOS。 它不支持 FreeRTOS。

    此致、
    John

    还有其他方法

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

    CCS 中没有用于调试 FreeRTOS 的内置等效 ROV。 您将需要使用第三方解决方案(如状态查看器)来显示相同的信息。

    对于 FreeRTOS 上的堆栈溢出检查、您可以使用在 RTOS 检测到堆栈溢出发生时调用的挂钩:
    www.freertos.org/Stacks-and-stack-overflow-checking.html

    尝试使用该挂钩、查看堆栈溢出是否是您看到的同步问题的根本原因。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    感谢您的回答、
    我将尝试报告结果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    我以前写过一份答复,但有一个错误,没有转交给你。

    我已经尝试过。 未在 vApplicationMallocFailedHook/vApplicationStackOverflowHook 中停止。
    我还下载了 OpenRTOS Viewer。
    你有其他建议吗? 我该怎么做?

    #define CONFIGCHECK_for_STACK_OVERflow 2.
    #define CONFIGUSE_MALLOC_FAILED_Hook 1.

    void vApplicationMallocFailedHook()

    /*处理内存分配错误*/
    while (1)




    void vApplicationStackOverflowHook (TaskHandle_t pxTask、
    char *pcTaskName)

    //处理 FreeRTOS 堆栈溢出
    while (1)


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

    您能否在您的设置中收集一些 NWP 日志、以便在同步丢失时查看 NWP 正在执行的操作? 由于某种原因,您的自定义网页可能会将 NWP 置于不良状态。 您可以在此处找到有关如何收集 NWP 日志的说明:
    processors.wiki.ti.com/.../CC3120_&_CC3220_Capture_NWP_Logs

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉我是误操作的。 我按下了"这解决了我的问题"。
    谢谢你所说的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    TeraTerm 输出和我的调试输出。 和我的 codee2e.ti.com/.../cc3220term.loge2e.ti.com/.../myoutput.txt

    int32_t jalarmGetCallback (uint8_t requestIdx、uint8_t * argcCallback、uint8_t ** argvCallback、SlNetAppRequest_t * netAppRequest)
    {
    uint8_t * argvArray、* pPayload、panstate;
    uint16_t metadataLen、元件类型;
    int32_t status;
    // uint32_t deviceType;
    
    argvArray =* argvCallback;
    pPayload = gPayloadBuffer;
    
    // deviceType = getDeviceType ();
    UART_PRINT ("ag0");
    while (* argcCallback >0)
    {UART_PRINT ("ag1");
    ElementType = setElementType (1、ElementIdx、content_LEN_type);
    if (*((uint16_t *) argvArray)!=元件类型) /*内容长度与 Get 无关*/
    {UART_PRINT ("ag2");
    webButton.part = 0;
    webButton.Disarm = 0;webButton.armaway = 0;webButton.armlit = 0;
    
    if (Janus_PanelData.panelState[webButton.part]=InAlmOK ){panstate=3;}
    否则、if (Janus_PanelData.panState[webButton.part]=AwayAlmOK){panstate=3;}
    否则、if (Janus_PanelData.panState[webButton.part]& AwayState){panstate=1;webButton.armaway = 1;}
    否则 if (Janus_PanelData.panState[webButton.part]& instate){panst=2;webButton.armstit = 1;}
    否则{webButton.Disarm = 1;panstate=0;}
    
    
    
    开关(*(argvArray + ARGV_value_offset))
    {
    情况0:
    memset ((char *) gMetadataBuffer、0、100);
    *gMetadataBuffer = webButton.part+0x31;
    状态= 0;
    中断;
    
    案例1:
    memset ((char *) gMetadataBuffer、0、100);
    *gMetadataBuffer = panstate+0x30;
    状态= 0;
    中断;
    
    案例2:
    memset ((char *) gMetadataBuffer、0、100);
    *gMetadataBuffer = webButton.armawe+0x30;
    状态= 0;
    中断;
    
    案例3:
    memset ((char *) gMetadataBuffer、0、100);
    *gMetadataBuffer = webButton.armlay+0x30;
    状态= 0;
    中断;
    案例4:
    memset ((char *) gMetadataBuffer、0、100);
    *gMetadataBuffer = webButton.Disert+0x30;
    状态= 0;
    中断;
    情况5:
    memset ((char *) gMetadataBuffer、0、100);
    *gMetadataBuffer = 0x30;
    状态= 0;
    中断;
    }
    //uart_print ("[Link local task] jalarmGetCallback:%s\n\r\n、(INT8_t *)(gMetadataBuffer));
    sl_memcpy (pPayload、HttpRequest[requestIdx]。charValues [*(argvArray + ARGV_value_offset)].characteristic、strlen ((const char *) HttpRequest[Idrequestx].charValues [*(argvArray + ARGV_value_offset)]].characteristic));
    pPayload += strlen ((const char *) HttpRequest[requestIdx].charValues [*(argvArray + ARGV_value_offset)].characteristic);
    *pPayload++='=';
    sl_memcpy (pPayload、gMetadataBuffer、strlen ((const char *) gMetadataBuffer));
    pPayload += strlen ((const char *) gMetadataBuffer);
    *pPayload++='&';
    }
    
    (* argcCallback)--;
    argvArray += ARGV_LEN_OFFSET; /*跳过类型*/
    argvArray +=*argvArray;//添加长度*/
    argvArray++; /*跳过长度*/
    }
    
    /* NULL 终止有效载荷*/
    *(pPayload-1)='\0';
    
    状态= 0;
    
    //exit_device_get:
    如果(状态!= 0)
    {
    strcpy ((char *) gPayloadBuffer、(const char *) pageNotFound);
    }
    
    metadataLen = prepareGetMetadata (status、strlen ((const char *) gPayloadBuffer)、HttpContentTypeList_urlenceded);
    UART_PRINT ("AG3");
    sl_NetAppSend (netAppRequest->Handle、metadataLen、gMetadataBuffer、(sl_NetApp_Request_Response_FLAGS_Continuation | SL_NetApp_Request_Response_FLAGS_metadata);
    info_print ("[Link local task] Metadata sent、len =%d \n\r\n、metadataLen);
    UART_PRINT ("AG4");
    sl_NetAppSend (netAppRequest->handle、strlen ((const char *) gPayloadBuffer)、gPayloadBuffer、0);/*标记为最后一个段*/
    info_print ("[Link local task]数据已发送、len =%d\n\r\n、strlen (((const char *) gPayloadBuffer));
    UART_PRINT ("AG5");
    返回状态;//jalarmGetCallback
    } 

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

    您的 NWP 日志看起来正常、我看到您的应用程序在处理 GET 请求后突然复位之前会提供许多网页。 我假设这是您的代码复位 CC3220的位置。

    当您提到在为自定义网页提供服务后会发生这种同步丢失时,是否有一个特定的网页或一组网页似乎会导致这种同步丢失? 如果您的网页尝试使用内置的 RESTful API 获取大量数据、这可能会阻止 NWP 及时响应主机 MCU、从而导致同步丢失。 如果您使用内置 ROM 网页、是否会发生同步丢失?

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    我阅读了您的帖子。
    我需要一些时间来理解。
    我将再次写入。 再次感谢。:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上、同步丢失事件不太容易发生。
    有时、同步丢失事件会在登录到设备后立即发生。
    我们只有一个自定义网页、但有许多选项卡。我们使用与 out_for_box 相同的内置 ROM 网页。
    有时我浏览选项卡5-10分钟、但不会发生同步丢失事件。
    同步丢失可以在任何选项卡上完全随机发生。

    您说您的应用程序在处理 GET 请求后突然复位之前提供了许多网页。
    您是否看到了有关这些网页的详细信息?
    我认为我的制作 html 部件的朋友犯了个错误。 我一定要找他的错。

    我们的服务
    HTTP_RequestObj_t HttpRequest[number_of _URI_SERVICES]=

    /* {0、SL_NetApp_Request_HTTP_Get、"/ota"、{{NULL}}、NULL}、
    {1、SL_NetApp_Request_HTTP_Put、"/ota"、{{NULL}}、NULL}、*
    {0、SL_NetApp_Request_HTTP_POST、"/setidx"、{{NULL}、NULL}、
    {1、SL_NetApp_Request_HTTP_Get、"/juser"、{{NULL}}、NULL}、
    {2、SL_NetApp_Request_HTTP_POST、"/juser"、{{NULL}}、NULL}、
    {3、SL_NetApp_Request_HTTP_Get、"/jsensor"、{{NULL}}、NULL}、
    {4、SL_NetApp_Request_HTTP_POST、"/jsensor"、{{NULL}}、NULL}、
    {5、SL_NetApp_Request_HTTP_Get、"/jhistory"、{{NULL}}、NULL}、
    {6、SL_NetApp_Request_HTTP_POST、"/jhistory"、{{NULL}}、NULL}、
    {7、SL_NetApp_Request_HTTP_Get、"/jalarm"、{{NULL}}、NULL}、
    {8、SL_NetApp_Request_HTTP_POST、"/jalarm"、{{NULL}}、NULL}、
    {9、SL_NetApp_Request_HTTP_Get、"/jzone"、{{NULL}}、NULL}、
    {10、sl_NetApp_Request_HTTP_POST、"/jzone"、{{NULL}}、NULL}、
    {11、SL_NetApp_Request_HTTP_Get、"/jlearn"、{{NULL}}、NULL}、
    {12、sl_NetApp_Request_HTTP_POST、"/jlearn"、{{NULL}}、NULL}、
    {13、SL_NetApp_Request_HTTP_Get、"/jlogin"、{{NULL}}、NULL}、
    {14、SL_NetApp_Request_HTTP_POST、"/jlogin"、{{NULL}}、NULL}、
    {15、SL_NetApp_Request_HTTP_POST、"/jSeason"、{{NULL}}、NULL}、
    {16、sl_NetApp_Request_HTTP_Get、"/jsettings"、{{NULL}}、NULL}、
    {17、SL_NetApp_Request_HTTP_POST、"/jsettings"、{{NULL}}、NULL}
    };
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Taylan、

    查看日志、我无法判断哪个特定网页会导致同步丢失。 首次重置设备时,日志表明它已读取了一些自定义文件,包括 jpaneldatas .dat,但尚未通过 HTTP 服务器提供任何服务。 第二次、似乎 CC3220访问的网页上有 NWP 加载的 cozaktif.png 文件。

    您可以尝试使用 SDK 中的示例、该示例默认具有 HTTP 服务器、例如 OOB 示例或 LOCAL_OTA 示例、并查看您的自定义网页是否可以使用已知良好的代码设置。

    此致、
    Michael