I have designed and fabricated a curcuit board with ESP32 SOC and i have tested many sample projects on this board without any issue. However there is something strage going on when i try to run ULP example under '/esp-idf/examples/system/ulp'. I have done below modification to the assembly code just to wakeup whenever it runs the ULP assembly program, But it only wake up the SOC from deep sleep one time and never again, see output below. I must say that this PCB is an upgrade to my previous PCB and the previous PCB runs the same ULP program without any problem. So i highly suspect that this is a hardware issue which causes ULP progam to not to run.
Assembly program change,
Code: Select all
entry:
jump wake_up
wake_up:
/* Check if the system can be woken up */
READ_RTC_FIELD(RTC_CNTL_LOW_POWER_ST_REG, RTC_CNTL_RDY_FOR_WAKEUP)
and r0, r0, 1
jump wake_up, eq
/* Wake up the SoC, end program */
wake
halt
Output,
Code: Select all
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, 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:5232
ho 0 tail 12 room 4
load:0x40078000,len:11596
load:0x40080400,len:6260
entry 0x4008070c
Not ULP wakeup, initializing ULP
Entering deep sleep
ULP wakeup, saving pulse count
Read pulse count from NVS: 0
Pulse count from ULP: 0
Wrote updated pulse count to NVS: 0
Entering deep sleep
Code: Select all
ulp_set_wakeup_period(0, 1000*1000);
Thanks in advance!