https://blog.csdn.net/qq_27114397/article/details/82288917
因?yàn)閑sp32芯片進(jìn)入燒寫模式的條件是啟動(dòng)時(shí)檢測boot引腳,因此需要摁著boot鍵才能下載程序。
出現(xiàn)連接不上spi flash時(shí),出現(xiàn)如下情況:
出現(xiàn)這種情況一般是啟動(dòng)配置的strapping引腳采樣電平不符合啟動(dòng)模式,需要調(diào)整硬件電路。
linux下面串口設(shè)備的一般是root權(quán)限,因此使用串口需要取得root權(quán)限或者修改dev目錄下串口的權(quán)限。
想 串口支持當(dāng)前用戶,需要把當(dāng)前用戶添加到Group,添加辦法
sudo usermode -a -G dialout $USER
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400e412b PS : 0x00060430 A0 : 0x800e41ae A1 : 0x3ffc9550
A2 : 0x3ffc75d0 A3 : 0x0000001b A4 : 0x00000000 A5 : 0x00000000
A6 : 0x3ffb3a28 A7 : 0x00000000 A8 : 0x3ffbd6dd A9 : 0x00000000
A10 : 0x3ffb4040 A11 : 0x40082ef8 A12 : 0x3ffc75cc A13
當(dāng)應(yīng)用程序嘗試讀取或?qū)懭霟o效的內(nèi)存位置時(shí),會發(fā)生此 CPU 異常。
可能原因:寫入/讀取的地址可在寄存器轉(zhuǎn)儲中的 EXCVADDR 寄存器中找到.
1、如果此地址為零,則通常表示應(yīng)用程序嘗試引用 NULL 指針;
2、如果此地址接近于零,則通常意味著應(yīng)用程序嘗試訪問結(jié)構(gòu)體的成員,但指向該結(jié)構(gòu)的指針為 NULL;
3、如果該地址是別的(垃圾值,不在 0x3fxxxxxx - 0x6xxxxxxx 范圍內(nèi)),則可能意味著用于訪問數(shù)據(jù)的指針未初始化或已損壞。
引用NULL指針(&地址引用錯(cuò)誤、野指針....)
上述例子原因在于下面,我free掉了這個(gè)扇區(qū)的信息,后期又esp_ota_get_running_partition()去獲取,結(jié)果出錯(cuò)。
- esp_partition_t * partition = esp_ota_get_running_partition();
- ESP_LOGI(TAG,"current partition info: %s",partition->label);
- free(partition);
原因:這是因?yàn)镋SP32的某些修訂存在一些問題,這些問題會對外部RAM的使用產(chǎn)生影響。而這些內(nèi)容都記錄在ESP32 ECO文檔中。
ESP-IDF以下列方式處理提及的錯(cuò)誤
ESP32 rev v0-----ESP-IDF沒有針對此版本硅片中的錯(cuò)誤的解決方法,它不能用于將外部的PSRAM映射到ESP32s 主存儲映射中。
ESP32 rev v1-----某些機(jī)器指令序列在外部存儲器位置上運(yùn)行時(shí)(ESP32 ECo 3.2)上運(yùn)行時(shí),此芯片版本中的錯(cuò)誤會帶來微信。
為了解決這個(gè)問題,編譯ESP-IDF的gcc編譯器 擴(kuò)展了一個(gè)標(biāo)志:-mfix-esp32-psram-cache-issue。
將這個(gè)標(biāo)志傳遞給命令行上的gcc,編譯器可以解決這個(gè)問題,并只輸出可以安全執(zhí)行的代碼。
出現(xiàn)不認(rèn)識的錯(cuò)誤,是編譯工具鏈的問題。
可以通過在ESP-IDF中,選擇CONFIG_SPIRAM_CACHE_WOrKAROUND時(shí),將啟動(dòng)此標(biāo)志。此時(shí)ESP-IDF還采取其他措施確保不使用PSRAM訪問和違規(guī)指令集的組合。這些措施包括:
在Makefile中除能下圖選項(xiàng),即可不啟動(dòng)此標(biāo)志。不建議使用。
聯(lián)系客服