When trying to enter deepsleep mode on the LPC54618 an HardFault occurs. Going through step by step with gdb the instruction
0x200058e0 <+0>: push {r4, r5, r6, r7, lr}
in the function relocMem.8033 causes the HardFault. The Main stack starts at 0x200044a8 and has Size 0x1000. I have tried calling POWER_EnterDeepSleep with arguments uint64_t(-1), 0, and
(uint64_t(SYSCON_PDRUNCFG_PDEN_SYSOSC_MASK | SYSCON_PDRUNCFG_PDEN_EEPROM_MASK) << 32) |
(SYSCON_PDRUNCFG_PDEN_SRAMX_MASK | SYSCON_PDRUNCFG_PDEN_SRAM0_MASK |
SYSCON_PDRUNCFG_PDEN_SRAM1_2_3_MASK | SYSCON_PDRUNCFG_PDEN_VD6_MASK), which expands to 0x28'2000'E000.
Context:
++ MbedOS Fault Handler ++
FaultType: HardFault
Context:
R 0: FFFFFFFF
R 1: FFFFFFFF
R 2: 00000000
R 3: 200058E1
R 4: 20002BC4
R 5: 00000008
R 6: 20005474
R 7: 000084A1
R 8: 200030C4
R 9: 00000001
R 10: 00021744
R 11: 00000000
R 12: 200058E0
SP : 20005438
LR : 000088A5
PC : 200058E0
xPSR : 610F0000
PSP : 200053D0
MSP : 20027FC0
CPUID: 410FC241
HFSR : 40000000
MMFSR: 00000001
BFSR : 00000000
UFSR : 00000000
DFSR : 00000000
AFSR : 00000000
Mode : Thread
Priv : Privileged
Stack: PSP
-- MbedOS Fault Handler --
++ MbedOS Error Info ++
Error Status: 0x80FF013D Code: 317 Module: 255
Error Message: Fault exception
Location: 0x200058E0
Error Value: 0x20005538
Current Thread: main Id: 0x20004460 Entry: 0x111A1 StackSize: 0x1000 StackMem: 0x200044A8 SP: 0x20005438
For more info, visit: https://mbed.com/s/error?error=0x80FF013D
-- MbedOS Error Info --