If you are using PlatformIO:
Just use the BSP function to get the reset reason:
uint32_t u32Reset_reason = readResetReason();
Serial.printf("Reset Reason = %ld %08x\n", u32Reset_reason, u32Reset_reason);
Works for me. First is after flashing the device, second after pushing reset button
09:51:07.716 --> =====================================
09:51:07.716 --> RAK4631 LoRaWan Deep Sleep Test
09:51:07.716 --> =====================================
09:51:07.716 --> Reset Reason = 4 00000004
09:51:07.826 --> Start network join request
09:51:08.215 --> LoRaWan init success
09:52:20.003 --> =====================================
09:52:20.003 --> RAK4631 LoRaWan Deep Sleep Test
09:52:20.003 --> =====================================
09:52:20.003 --> Reset Reason = 1 00000001
09:52:20.112 --> Start network join request
09:52:20.503 --> LoRaWan init success
If you are using Arduino IDE with the RAK BSP, it is not implemented.