laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42616?usp=email )

Change subject: Rework default IRQ handler and osmo panic handler
......................................................................

Rework default IRQ handler and osmo panic handler

Don't break on panic by default. Using a variable allows
to set it by SWD or later by a usb message.

Use the same handler for osmo panics as well as unknown IRQ.
Including faults (bus, hard).

Change-Id: Ibcabe0c58ff14ebe76159470dd90fdef064febea
---
M sysmoOCTSIM/gcc/gcc/startup_same54.c
M sysmoOCTSIM/include/same54.h
M sysmoOCTSIM/main.c
3 files changed, 17 insertions(+), 4 deletions(-)

Approvals:
  Hoernchen: Looks good to me, but someone else must approve
  Jenkins Builder: Verified
  laforge: Looks good to me, approved




diff --git a/sysmoOCTSIM/gcc/gcc/startup_same54.c 
b/sysmoOCTSIM/gcc/gcc/startup_same54.c
index 097a1c4..943c965 100644
--- a/sysmoOCTSIM/gcc/gcc/startup_same54.c
+++ b/sysmoOCTSIM/gcc/gcc/startup_same54.c
@@ -668,11 +668,18 @@
                ;
 }

+volatile bool break_on_panic = false;
+
 /**
  * \brief Default interrupt handler for unused IRQs.
  */
 void Dummy_Handler(void)
 {
-       while (1) {
+       if (break_on_panic)
+               __asm("BKPT #0"); /* wait for JTAG/SWD */
+       else {
+               NVIC_SystemReset();
+               while (1)
+                       ;
        }
 }
diff --git a/sysmoOCTSIM/include/same54.h b/sysmoOCTSIM/include/same54.h
index 7da756e..c99d91f 100644
--- a/sysmoOCTSIM/include/same54.h
+++ b/sysmoOCTSIM/include/same54.h
@@ -47,4 +47,10 @@
   #error Library does not support the specified device.
 #endif
 
+#include <stdbool.h>
+
+/* Either reset or break on panic/unknown irq. Default is reset. */
+extern volatile bool break_on_panic;
+void Dummy_Handler(void);
+
 #endif /* _SAME54_ */
diff --git a/sysmoOCTSIM/main.c b/sysmoOCTSIM/main.c
index 7873c86..02feeb6 100644
--- a/sysmoOCTSIM/main.c
+++ b/sysmoOCTSIM/main.c
@@ -38,9 +38,9 @@
 #include "ccid_device.h"
 #include "usb_descriptors.h"

-static void bdg_bkptpanic(const char *fmt, va_list args)
+static void panic_handler(const char *fmt, va_list args)
 {
-       __asm("BKPT #0");
+       Dummy_Handler();
 }

 extern struct ccid_slot_ops iso_fsm_slot_ops;
@@ -600,7 +600,7 @@

 int main(void)
 {
-       osmo_set_panic_handler(&bdg_bkptpanic);
+       osmo_set_panic_handler(&panic_handler);
 #if 0
 CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk ; //| /* tracing*/
 ////CoreDebug_DEMCR_MON_EN_Msk; /* mon interupt catcher */

--
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42616?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: Ibcabe0c58ff14ebe76159470dd90fdef064febea
Gerrit-Change-Number: 42616
Gerrit-PatchSet: 2
Gerrit-Owner: lynxis lazus <[email protected]>
Gerrit-Reviewer: Hoernchen <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>

Reply via email to