0、參考資料
https://blog.csdn.net/qq_27114397/article/details/82288917
1、遇到的問題以及解決方法
1.1無法進入燒錄模式下載程序
因爲esp32芯片進入燒寫模式的條件是啓動時檢測boot引腳,因此需要摁着boot鍵才能下載程序。
出現連接不上spi flash時,出現如下情況:
出現這種情況一般是啓動配置的strapping引腳採樣電平不符合啓動模式,需要調整硬件電路。
1.2 在linux裏下載程序的時候老提示串口權限不足
linux下面串口設備的一般是root權限,因此使用串口需要取得root權限或者修改dev目錄下串口的權限。
想 串口支持當前用戶,需要把當前用戶添加到Group,添加辦法
sudo usermode -a -G dialout $USER
1.3 LoadProhibited StoreProhibited問題 <禁止加載、禁止存儲>
當應用程序嘗試讀取或寫入無效的內存位置時,會發生此 CPU 異常。
可能原因:寫入/讀取的地址可在寄存器轉儲中的 EXCVADDR 寄存器(途中紅色劃線)中找到.
1、如果此地址爲零,則通常表示應用程序嘗試引用 NULL 指針(勿忘對數組成員取地址);
2、如果此地址接近於零,則通常意味着應用程序嘗試訪問結構體的成員,但指向該結構的指針爲 NULL;
3、如果該地址是別的(垃圾值,不在 0x3fxxxxxx - 0x6xxxxxxx 範圍內),則可能意味着用於訪問數據的指針未初始化或已損壞。
引用NULL指針(&地址引用錯誤、野指針....)
上述例子原因在於下面,我free掉了這個扇區的信息,後期又esp_ota_get_running_partition()去獲取,結果出錯。
esp_partition_t * partition = esp_ota_get_running_partition();
ESP_LOGI(TAG,"current partition info: %s",partition->label);
free(partition);
1.4 在編譯時出現error: unrecognized command line option '-mfix-esp32-psram-cache-issue'
原因:這是因爲ESP32的某些修訂存在一些問題,這些問題會對外部RAM的使用產生影響。而這些內容都記錄在ESP32 ECO文檔中。
ESP-IDF以下列方式處理提及的錯誤
ESP32 rev v0-----ESP-IDF沒有針對此版本硅片中的錯誤的解決方法,它不能用於將外部的PSRAM映射到ESP32s 主存儲映射中。
ESP32 rev v1-----某些機器指令序列在外部存儲器位置上運行時(ESP32 ECo 3.2)上運行時,此芯片版本中的錯誤會帶來微信。
爲了解決這個問題,編譯ESP-IDF的gcc編譯器 擴展了一個標誌:-mfix-esp32-psram-cache-issue。
將這個標誌傳遞給命令行上的gcc,編譯器可以解決這個問題,並只輸出可以安全執行的代碼。
出現不認識的錯誤,是編譯工具鏈的問題。
可以通過在ESP-IDF中,選擇CONFIG_SPIRAM_CACHE_WOrKAROUND時,將啓動此標誌。此時ESP-IDF還採取其他措施確保不使用PSRAM訪問和違規指令集的組合。這些措施包括:
在Makefile中除能下圖選項,即可不啓動此標誌。不建議使用。
1.5 Brownout detector was triggered 斷電探測器觸發復位
已觸發斷電探測器。
原因在於:
ESP32的電平低於某個值(這個值是可以設定的),然後觸發了斷電探測器,斷電探測器會使得ESP32重新啓動。
解決:換個電源,要不就是ESP32板子設計本身有問題,最終的大招,禁用斷電探測器
具體參見https://blog.csdn.net/qq_31232793/article/details/87889368
make menuconfig->component config->ESP32-specific->Hardware brownout detect & reset禁用掉這個選項,將不再檢測電平。或者也可在再這個選項的下面選擇一個更合適的保護電平。
1.6 檢測到任務堆棧溢出
最簡單的方法就是增大堆棧大小,具體選擇什麼合適的堆棧大小,我暫時還不會。求各位看客指點。
1.7 未及時重置開門狗
當時系統在TWDT溢出時間內從未讓出過CPU讓IDLE任務得以執行。//應該看看CPU佔用率
------任務分析:可以試着關閉一些調試打印(調試打印也需要佔用時間)
1.8 OTA升級程序時出現一下error
system_event_sta_disconnected_handle_default 243 esp_wifi_internal_reg_rxcb
1.9 MQTT連接下,斷網和與服務器間通信不好,ESP32上報的錯誤
用的IDF版本爲v3.2.2,出現qos爲0時,出現這種錯誤上報
1.9.1 問題1、發送間隔小於100ms或多個任務同時發送時,會發送下面的現象
直到超時,ping不通後,斷開連接。
1.9.2 問題2、MQTT假性連接,數據實際上一直沒有發出去
1.9.3 問題3:cert證書無效
1.9.4 問題4 證書不可信任
1.10 供電不足
電壓不足,報錯可以說還有其他類型。下面就是各種類型報錯