From 24368a6581b7b29e905cdcd6bd3a7bdf5ef25e45 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Tue, 7 May 2013 14:10:34 -0600 Subject: [PATCH] STM32 option to disable sleep to prevent disconnection of debugger --- ChangeLog | 5 +++++ arch/arm/src/stm32/Kconfig | 9 +++++++++ arch/arm/src/stm32/stm32_idle.c | 2 ++ 3 files changed, 16 insertions(+) diff --git a/ChangeLog b/ChangeLog index d7df4e1c1b..f49d81528e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4683,3 +4683,8 @@ * arch/arm/src/kinetis/kinetis_pin.c and arch/arm/src/kinetis/kinetis_internal.h: The Kinetis GPIO logic had some of the same issues as did the Kinetis L (2013-5-6). + * arch/arm/src/stm32/stm32_idle.c: Add an option to conditionally disable + the "wfi" sleep mode. This is needed with certain JTAG debuggers to + to prevent the debug session from begin disconnected. From Ken Pettit + (2013-5-7). + diff --git a/arch/arm/src/stm32/Kconfig b/arch/arm/src/stm32/Kconfig index d7e3c7a350..0980795e88 100644 --- a/arch/arm/src/stm32/Kconfig +++ b/arch/arm/src/stm32/Kconfig @@ -861,6 +861,15 @@ config STM32_JTAG_SW_ENABLE endchoice +config STM32_DISABLE_IDLE_SLEEP_DURING_DEBUG + bool "Disable IDLE Sleep (WFI) in debug mode" + default n + ---help--- + In debug configuration, disables the WFI instruction in the IDLE loop + to prevent the JTAG from disconnecting. With some JTAG debuggers, such + as the ST-LINK2 with OpenOCD, if the ARM is put to sleep via the WFI + instruction, the debugger will disconnect, terminating the debug session. + config STM32_FORCEPOWER bool "Force power" default n diff --git a/arch/arm/src/stm32/stm32_idle.c b/arch/arm/src/stm32/stm32_idle.c index 83a6808c58..60b81bea81 100644 --- a/arch/arm/src/stm32/stm32_idle.c +++ b/arch/arm/src/stm32/stm32_idle.c @@ -202,10 +202,12 @@ void up_idle(void) */ #if !defined(CONFIG_STM32_CONNECTIVITYLINE) || !defined(CONFIG_STM32_ETHMAC) +#if !(defined(CONFIG_DEBUG_SYMBOLS) && defined(CONFIG_STM32_DISABLE_IDLE_SLEEP_DURING_DEBUG)) BEGIN_IDLE(); asm("WFI"); END_IDLE(); #endif #endif +#endif }