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问题 寄存器转储
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
当应用程序尝试读取或写入无效的内存位置时,会发生此 CPU 异常。
可能原因:写入/读取的地址可在寄存器转储中的 EXCVADDR 寄存器中找到.
1、如果此地址为零,则通常表示应用程序尝试引用 NULL 指针;
2、如果此地址接近于零,则通常意味着应用程序尝试访问结构的成员,但指向该结构的指针为 NULL;
3、如果该地址是别的(垃圾值,不在 0x3fxxxxxx - 0x6xxxxxxx 范围内),则可能意味着用于访问数据的指针未初始化或已损坏。
上述例子原因在于下面,我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);