diff --git a/arch/arm/src/armv7-m/arm_dbgmonitor.c b/arch/arm/src/armv7-m/arm_dbgmonitor.c index dad81182db7..8eff53a10b3 100644 --- a/arch/arm/src/armv7-m/arm_dbgmonitor.c +++ b/arch/arm/src/armv7-m/arm_dbgmonitor.c @@ -633,6 +633,13 @@ int up_debugpoint_remove(int type, void *addr, size_t size) int arm_enable_dbgmonitor(void) { + if (getreg32(NVIC_DHCSR) & NVIC_DHCSR_C_DEBUGEN) + { + /* If already on debug mode(jtag/swo), just return */ + + return OK; + } + arm_fpb_init(); arm_dwt_init(); modifyreg32(NVIC_DEMCR, 0, NVIC_DEMCR_MONEN | NVIC_DEMCR_TRCENA); diff --git a/arch/arm/src/armv8-m/arm_dbgmonitor.c b/arch/arm/src/armv8-m/arm_dbgmonitor.c index c887bd71bdc..43be3f7fc84 100644 --- a/arch/arm/src/armv8-m/arm_dbgmonitor.c +++ b/arch/arm/src/armv8-m/arm_dbgmonitor.c @@ -659,6 +659,13 @@ int up_debugpoint_remove(int type, void *addr, size_t size) int arm_enable_dbgmonitor(void) { + if (getreg32(NVIC_DHCSR) & NVIC_DHCSR_C_DEBUGEN) + { + /* If already on debug mode(jtag/swo), just return */ + + return OK; + } + arm_fpb_init(); arm_dwt_init(); modifyreg32(NVIC_DEMCR, 0, NVIC_DEMCR_MONEN | NVIC_DEMCR_TRCENA);