使用esp32(ESP32-D0WD-V3 (revision v3.1))时, 出现以下错误导致异常重启:
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d3488 PS : 0x00060030 A0 : 0x800d355c A1 : 0x3ffb1bb0
A2 : 0x00000000 A3 : 0x3ffb1bff A4 : 0x00000001 A5 : 0x00000001
A6 : 0x00000000 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x00000000
A10 : 0x00000000 A11 : 0x3ffcb8fc A12 : 0x00000050 A13 : 0x00000001
A14 : 0x00000000 A15 : 0x00000000 SAR : 0x0000000a EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000008 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xffffffff
找了相关资料, 大家推测可能是访问/写入了错误的内存导致:
尝试了修改了一些代码, 发现是将一个指针声明为非局部变量导致, 具体原因没有找到, 令人费解…
我将以下写法:
SharedParams* sp1 = nullptr;
修改为:
有些太离谱了
在此之前, 我可以保证sp1是在task中初始化的, 且类型正确, 因为部分访问sp1代可以正常运行.
最最重要的是, 这个异常是在我访问sp1完成之后出现的.
除非断电, 否则sp1永不销毁.
等以后再补充吧, 目前找不出具体原因了…
再来看一段代码吧, 这是在Core0上运行的, 完全没有一点问题.
Core1的sp1和Core0的sp是同一个指针…
结果Core1先崩溃了: