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.

[参考译文] LAUNCHXL-CC3235SF:LAUNCHXL-CC3235SF 开发板复位问题

Guru**** 2350610 points
Other Parts Discussed in Thread: LAUNCHXL-CC3235SF, CC3235SF
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1459074/launchxl-cc3235sf-launchxl-cc3235sf-development-board-reset-problem

器件型号:LAUNCHXL-CC3235SF
Thread 中讨论的其他器件: CC3235SF

工具与软件:

我无法重置 LAUNCHXL-CC3235SF 开发板。 我移除开发板上的 TCK 跳线。 我在我的软件中使用一个信标。 当我发布此信标时、该卡将被复位。 当我将 TCK 跳线放回时、它不会复位。 这是什么原因和解决方案?

我问这个问题的原因是我的 cc3235sf 卡存在与我设计的相同的问题。 即使调试引脚空闲、它们也会在软件接收到 POST 过程时复位。

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

    ????????????

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

    Mehmet、您好!

    很抱歉这么晚才回复。
    首先、如果你可以对你的信标进行一些说明、它将帮助我了解它与你在这里遇到的问题有何关系(以及是否相关)。
    其次、您在调试中使用的是 XDS110调试接口吗? 如果是、拆除 TCK 跳线的原因是什么?
    如果没有、您在使用什么进行调试?
    此外、您要尝试运行哪些操作/命令? 我希望在这里尝试复制您的设置用例、以了解我是否获得相同的结果。

    此致、
    Omri

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

    我的主代码是这样的。 共有4个任务、其大小如下。 我在睡眠任务中使用 LPDS 睡眠模式、它会在 http 请求出现时唤醒。 当收到 GET 请求时、它会唤醒并扫描 WiFi。

    我使用 LAUNCHXL 开发卡发送我自己的专用卡的程序、我这样进行调试。

    我的问题是这个。 当 http GET 请求以及器件接收或发送扫描结果时、器件会冻结。 即使是 Whatcdog 计时器也会死机、我也必须断开并连接处理器的电源。 这是我的第一个问题。

    我的第二个问题是、我使用如下所示的 SAM_WAIT 信标进入睡眠状态并等待、当我从睡眠中唤醒并接收 http 请求时、当我调用 SEM POST 调用时、系统会自行复位。 我不明白的是这一点。 开发卡没有执行此操作。
    // LPDS 模式进入过程
    power_enablePolicy();

    //进入 LPDS 模式
    sleepflagcontrol=1;
    Display_printf (display、0、0、"Switching to LPDS mode...");
    if (SEM_WAIT (&LPDS_SLEEP)!= 0){//等待唤醒信号
    Display_printf (display、0、0、"semaphore wait error!");
    休息;
    }

    power_disablePolicy();

    int32_t wifiGetCallback (uint8_t requestIdx、uint8_t * argcCallback、uint8_t ** argvCallback、SlNetAppRequest_t * netAppRequest){
    // Semafor ile bir thread'in işlem yapmasını sağlıyoruz
    if (sem_wait (&connectionSem)!= 0){
    display_printf (display、0、0、"Wi-Fi tarama işlemi zaten başlatılmış。");
    return -1;// zaten başka bir thread tarama yapıyorsa çık
    }

    taramaflag = 0;
    postflag = 1;
    char payload[2048];// Sabit boyutlu tampon
    memset (有效载荷、0、sizeof (有效载荷));
    char * pPayload =有效载荷;
    size_t remaining = sizeof (payload);

    // pil durumu ekle
    if (bataryaerror == 1){
    int writed = snprintf (pPayload、remaining、"Pil Durumu:Batarya Gösterge Arıza \n");
    如果(writed < 0 ||(size_t) writed >= remaining)、则转到 cleanup;// Taşma kontrolü
    pPayload +=写入;
    剩余时间-=已写入;
    其他{
    int writed = snprintf(pload, remain,"Pil Durumu:%d%%\n", sarjyuzdesi );
    如果(写入值< 0 ||(size_t)写入>= remaining)、则转到 cleanup;
    pPayload +=写入;
    剩余时间-=已写入;
    }

    // Bağlı ssid ve bssid bbilgilerini ekle
    if (g_ucConnectionBSSID[0]!= 0){
    Int Writed = snprintf (pPayload、remaining)、"Connected SSID:%s | BSSID:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n"、
    G_ucConnectionSSID、
    G_ucConnectionBSSID[0]、g_ucConnectionBSSID[1]、g_ucConnectionBSSID[2]、
    G_ucConnectionBSSID[3]、g_ucConnectionBSSID[4]、g_ucConnectionBSSID[5]);
    如果(写入值< 0 ||(size_t)写入>= remaining)、则转到 cleanup;
    pPayload +=写入;
    剩余时间-=已写入;
    }

    // Wi-Fi tarama işlemi
    SlWlanNetworkEntry_t tempEntris[MAX_WIFI_ENTRYS];
    SlWlanNetworkEntry_t latestEntris[MAX_WIFI_ENTRYS];
    int latestEntryCount = 0;
    bool scanSuccessess = false;
    taramaaktif = 1;

    对于(int attile = 0;attribute < 2;attriple++){
    int entryCount = sl_WlanGetNetworkList (0、MAX_WIFI_ENTRIES、tempEntries);
    如果(entryCount > 0){
    int validEntryCount = filter5GHzNetworks (tempEntries、entryCount);
    if (validEntryCount >0){
    latestEntryCount = validEntryCount;
    memcpy (latestEntries、tempEntries、validEntryCount * sizeof (SlWlanNetworkEntry_t));
    scanSuccessess = true;
    break;// Başarılı tarama varsa döngüyü kır
    }
    }
    sleep (5);//İki tarama arasında bekleme.
    }

    if (scanSuccessess){
    cachedEntryCount = latestEntryCount;
    memcpy (cachedEntries、latestEntries、latestEntryCount * sizeof (SlWlanNetworkEntry_t);
    cacheValid = true;
    } else if (cacheValid){
    latestEntryCount = cachedEntryCount;
    memcpy (latestEntries、cachedEntries、cachedEntryCount * sizeof (SlWlanNetworkEntry_t);
    Display_printf (display、0、0、"使用缓存的 Wi-Fi 扫描结果");
    其他{
    int writed = snprintf (pPayload、remaining、"未找到 Wi-Fi 网络、没有可用的缓存数据。\n");
    如果(写入值< 0 ||(size_t)写入>= remaining)、则转到 cleanup;
    pPayload +=写入;
    剩余时间-=已写入;
    }

    // Tarama sonuçlarını ekle
    对于(int i = 0;i < latestEntryCount;i++){
    SlWlanNetworkEntry_t * ap =&latestEntrys[i];
    Char SSID[MAX_SSID_LENGTH]={0};
    Char BSSID[MAX_BSSID_LENGTH]={0};

    snprintf (ssid、sizeof (ssid)、"%s"、(strlen ((char *) ap->ssid)> 0)? (char *) ap->SSID:"NULL");
    snprintf (BSSID、sizeof (BSSID)、"%02x:%02x:%02x:%02x:%02x:%02x:%02x"、
    ap->bssid[0]、ap->bssid[1]、ap->bssid[2]、
    ap->bssid[3]、ap->bssid[4]、ap->bssid[5]);

    int writed = snprintf (ppaid、remaining、"|%s |%s |%d |%d |\n"、ssid、bssid、ap->RSSI、ap->Channel);
    如果(写入< 0 ||(size_t)写入>= Remaining) Break;// Bellek sınırı aşılırsa Dur
    pPayload +=写入;
    剩余时间-=已写入;
    }

    清理:
    * pPayload ='\0';// Yanıtı sonlandır
    uint16_t metadataLen = prepareGetMetadata (0、strlen (payload)、HttpContentocrataLen List_Text 窝);
    sl_NetAppSend (netAppRequest ->句柄、metadataLen、gMetaBuffer、sl_NETAPP_Request_Response_flags_Continuation | sl_NETAPP_Request_Response_flags_metadata);
    sl_NetAppSend (netAppRequest ->句柄、strlen (有效载荷)、(unsigned char *)有效载荷、0);

    taramaflag = 1;
    postflag = 0;
    taramaaktif = 0;
    sem_post (&connectionSem);// Semaforu serbest bırak
    返回0;
    }

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

    Mehmet、您好!

    如果我理解正确、那么您将使用板上的 XDS110进行调试。 此调试器正在使用 JTAG 连接器、包括 TCK 跳线。
    您尝试复位的确切位置是什么? 使用软件或手动通过电路板? 因为 TCK 是 JTAG 的一部分、所以它与复位机制无关、所以我不知道为什么一开始就将它去除?

    此外、 每当设备向服务器发送任何数据时、是否会发生这种"冻结"?

    此致、
    Omri