Thread 中讨论的其他器件: CC3235SF
工具与软件:
我无法重置 LAUNCHXL-CC3235SF 开发板。 我移除开发板上的 TCK 跳线。 我在我的软件中使用一个信标。 当我发布此信标时、该卡将被复位。 当我将 TCK 跳线放回时、它不会复位。 这是什么原因和解决方案?
我问这个问题的原因是我的 cc3235sf 卡存在与我设计的相同的问题。 即使调试引脚空闲、它们也会在软件接收到 POST 过程时复位。
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 开发板。 我移除开发板上的 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