I'm trying to enable saving of coredump to flash. I'm running on nrf52840 with NRF SDK 1.6.1.
I have defined the following:
label = "coredump_partition";
reg = <0x000ff000 DT_SIZE_K(4)>;
};
00> coredump erase
00> Stored coredump erased.
I'm trying to enable saving of coredump to flash. I'm running on nrf52840 with NRF SDK 1.6.1.
I have defined the following:
Hi,
You only see this issue on samples that uses Bluetooth?
Could you try setting these configs? (taken from this .config file)
CONFIG_LOG=y CONFIG_LOG_MODE_MINIMAL=y CONFIG_DEBUG_COREDUMP=y CONFIG_DEBUG_COREDUMP_BACKEND_FLASH_PARTITION=y CONFIG_MP_NUM_CPUS=1 CONFIG_FLASH=y CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_LINKER_RAM=n
Our application does use Bluetooth. I don't have a sample application without Bluetooth that I can try on our board or even the DK board.
We already had most of these set. The only difference was LOG_MODE. I updated LOG_MODE to be minimal but that did not make any difference. Still getting:
00> =====> Crashing system... (this is expected crash)
00> E: r0/a1: 0x00000003 r1/a2: 0x20013680 r2/a3: 0x00000040
00> E: r3/a4: 0x00000000 r12/ip: 0x00000000 r14/lr: 0x0002532b
00> E: xpsr: 0x41000000
00> E: Faulting instruction address (r15/pc): 0x00042352
00> E: >>> ZEPHYR FATAL ERROR 3: Kernel oops on CPU 0
00> E: Current thread: 0x200031b0 (shell_rtt)
// This is where it's trying to dump the core to flash but is failing
00> E: timeout
00> E: Cannot start coredump!
ST-Kon said:00> E: Cannot start coredump!
I see this line is being printed here: https://github.com/nrfconnect/sdk-zephyr/blob/v2.7.99-ncs1/subsys/debug/coredump/coredump_backend_flash_partition.c#L339
Seems like it's stream_flash_init() that returns an error-code. Could you print the error-code, and post it here? E.g. change the line to something like this to print the value:
LOG_ERR("Cannot start coredump! return-value: %d",ret);
The code is ETIMEDOUT 116.
Interestingly, if I disable Bluetooth:
OK, the CRC error was being caused because my defined partition size of 4k and the shell thread stack size (where I was triggering the crash from) was also 4k. This caused incomplete coredump from being written to flash. In such a case, the CRC is not being calculated correctly, it's always off by 0x86. This probably should be fixed, even if incomplete coredump is saved.
Once I increased the partition to be 8k, I was able to successfully read it using coredump print.
So we just need to figure out how to make this work with BT enabled.
OK, the CRC error was being caused because my defined partition size of 4k and the shell thread stack size (where I was triggering the crash from) was also 4k. This caused incomplete coredump from being written to flash. In such a case, the CRC is not being calculated correctly, it's always off by 0x86. This probably should be fixed, even if incomplete coredump is saved.
Once I increased the partition to be 8k, I was able to successfully read it using coredump print.
So we just need to figure out how to make this work with BT enabled.