aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKévin Redon <kredon@sysmocom.de>2018-07-28 19:02:54 +0200
committerKévin Redon <kredon@sysmocom.de>2018-07-29 09:58:31 +0200
commit738a04aefba01a72fbc0e46fc86fa17e7e6cad83 (patch)
tree41f7c0d5a23f8ec9f62f90c05817fede453de35e
parent2a44dc598d46cf0a8fa629d8f600f86199767b70 (diff)
cardem: show detailed reset cause
this helps detecting when a reset was due to the watchdog Change-Id: I2d59c2f2c8fe9e559eddfafacf25879263ef81ff
-rw-r--r--firmware/apps/cardem/main.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/firmware/apps/cardem/main.c b/firmware/apps/cardem/main.c
index ae46794..7d65c7e 100644
--- a/firmware/apps/cardem/main.c
+++ b/firmware/apps/cardem/main.c
@@ -157,11 +157,25 @@ extern int main(void)
"SIMtrace2 firmware " GIT_VERSION " (C) 2010-2016 by Harald Welte\n\r"
"=============================================================================\n\r");
+#if (TRACE_LEVEL >= TRACE_LEVEL_INFO)
TRACE_INFO("Chip ID: 0x%08x (Ext 0x%08x)\n\r", CHIPID->CHIPID_CIDR, CHIPID->CHIPID_EXID);
TRACE_INFO("Serial Nr. %08x-%08x-%08x-%08x\n\r",
g_unique_id[0], g_unique_id[1],
g_unique_id[2], g_unique_id[3]);
- TRACE_INFO("Reset Cause: 0x%x\n\r", (RSTC->RSTC_SR & RSTC_SR_RSTTYP_Msk) >> RSTC_SR_RSTTYP_Pos);
+ uint8_t reset_cause = (RSTC->RSTC_SR & RSTC_SR_RSTTYP_Msk) >> RSTC_SR_RSTTYP_Pos;
+ static const char* reset_causes[] = {
+ "general reset (first power-up reset)",
+ "backup reset (return from backup mode)",
+ "watchdog reset (watchdog fault occurred)",
+ "software reset (processor reset required by the software)",
+ "user reset (NRST pin detected low)",
+ };
+ if (reset_cause < ARRAY_SIZE(reset_causes)) {
+ TRACE_INFO("Reset Cause: %s\n\r", reset_causes[reset_cause]);
+ } else {
+ TRACE_INFO("Reset Cause: 0x%x\n\r", (RSTC->RSTC_SR & RSTC_SR_RSTTYP_Msk) >> RSTC_SR_RSTTYP_Pos);
+ }
+#endif
board_main_top();