ESP32开发 反复重启
串口输出如下所示:
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
Power: Waiting...
Power: ON
Encoder init start...
Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d12d1 PS : 0x00060530 A0 : 0x800d15f4 A1 : 0x3ffb1f60
A2 : 0x3ffca144 A3 : 0x40086a94 A4 : 0x0800001c A5 : 0x00000003
A6 : 0x00000003 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x00000007
A10 : 0x3ff440ec A11 : 0x400d11a4 A12 : 0x3ffc1a10 A13 : 0x00000000
A14 : 0x3ff59000 A15 : 0x00000000 SAR : 0x00000005 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xffffffff
ELF file SHA256: 0000000000000000
Backtrace: 0x400d12d1:0x3ffb1f60 0x400d15f1:0x3ffb1f80 0x400ec1ee:0x3ffb1fb0 0x40089a32:0x3ffb1fd0
Rebooting...
ets Jun 8 2016 00:22:57
经过调试,发现是结构体的使用出现了问题。
使用结构体的时候只定义了一个结构体指针,这样并没有给结构体分配空间,所以在给结构体赋值的时候,程序找不到地址空间进行操作,所以出现了CPU异常。
报错信息中,StoreProhibited
应该就是指这个原因。
下次得注意结构体的使用,应该是学C过了很久了,期间很少使用结构体,导致不熟练。不过好在,现在排查出来了,但花费的时间过长,之后应该注意调试流程。
Controller_Action * encoder_act_info;
void func(void)
{
encoder_act_info->xxx = 1; // WRONG!!!!!
}