From 6c4b30736e6ffc1a4882c88b5349eb51e1083d04 Mon Sep 17 00:00:00 2001 From: anjiahao Date: Mon, 18 Dec 2023 10:51:15 +0800 Subject: [PATCH] arm/debug:fix gdbstub clear fpb & dwt when already use jtag/swo bug Signed-off-by: anjiahao --- arch/arm/src/armv7-m/arm_dbgmonitor.c | 7 +++++++ arch/arm/src/armv8-m/arm_dbgmonitor.c | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/arch/arm/src/armv7-m/arm_dbgmonitor.c b/arch/arm/src/armv7-m/arm_dbgmonitor.c index dad81182db..8eff53a10b 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 c887bd71bd..43be3f7fc8 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);