diff options
Diffstat (limited to 'nuttx/configs/stm32f4discovery')
-rwxr-xr-x | nuttx/configs/stm32f4discovery/README.txt | 8 | ||||
-rw-r--r-- | nuttx/configs/stm32f4discovery/nsh/appconfig | 4 | ||||
-rwxr-xr-x | nuttx/configs/stm32f4discovery/nsh/defconfig | 48 | ||||
-rwxr-xr-x | nuttx/configs/stm32f4discovery/ostest/defconfig | 1 | ||||
-rw-r--r-- | nuttx/configs/stm32f4discovery/src/Makefile | 4 | ||||
-rw-r--r-- | nuttx/configs/stm32f4discovery/src/up_watchdog.c | 136 |
6 files changed, 201 insertions, 0 deletions
diff --git a/nuttx/configs/stm32f4discovery/README.txt b/nuttx/configs/stm32f4discovery/README.txt index d9720fdf2..1ad1a2e0b 100755 --- a/nuttx/configs/stm32f4discovery/README.txt +++ b/nuttx/configs/stm32f4discovery/README.txt @@ -633,6 +633,7 @@ STM32F4Discovery-specific Configuration Options CONFIG_STM32_TIM13 CONFIG_STM32_TIM14 CONFIG_STM32_WWDG + CONFIG_STM32_IWDG CONFIG_STM32_SPI2 CONFIG_STM32_SPI3 CONFIG_STM32_USART2 @@ -835,3 +836,10 @@ Where <subdir> is one of the following: Special PWM-only debug options: CONFIG_DEBUG_QENCODER + + 3. This examples supports the watchdog timer test (apps/examples/watchdog) + buty this must be manually enabled by selecting: + + CONFIG_WATCHDOG=y : Enables watchdog timer driver support + CONFIG_STM32_WWDG=y : Enables the WWDG timer facility, OR + CONFIG_STM32_IWDG=y : Enables the IWDG timer facility (but not both) diff --git a/nuttx/configs/stm32f4discovery/nsh/appconfig b/nuttx/configs/stm32f4discovery/nsh/appconfig index c6532241e..097948c87 100644 --- a/nuttx/configs/stm32f4discovery/nsh/appconfig +++ b/nuttx/configs/stm32f4discovery/nsh/appconfig @@ -61,3 +61,7 @@ ifeq ($(CONFIG_CDCACM),y) CONFIGURED_APPS += examples/cdcacm endif endif + +ifeq ($(CONFIG_WATCHDOG),y) +CONFIGURED_APPS += examples/watchdog +endif diff --git a/nuttx/configs/stm32f4discovery/nsh/defconfig b/nuttx/configs/stm32f4discovery/nsh/defconfig index c77b32ccb..0e09e1a1f 100755 --- a/nuttx/configs/stm32f4discovery/nsh/defconfig +++ b/nuttx/configs/stm32f4discovery/nsh/defconfig @@ -151,6 +151,7 @@ CONFIG_STM32_TIM12=n CONFIG_STM32_TIM13=n CONFIG_STM32_TIM14=n CONFIG_STM32_WWDG=n +CONFIG_STM32_IWDG=n CONFIG_STM32_SPI2=n CONFIG_STM32_SPI3=n CONFIG_STM32_USART2=y @@ -1011,6 +1012,18 @@ CONFIG_USBMSC_VERSIONNO=0x0399 CONFIG_USBMSC_REMOVABLE=y # +# Watchdog timer configuration +# +# CONFIG_WATCHDOG - Enable overall watchdog timer driver support. +# +# The STM32 also needs one of the following enabled: +# +# CONFIG_STM32_WWDG=y, OR +# CONFIG_STM32_IWDG=y (but not both) +# +CONFIG_WATCHDOG=n + +# # Graphics related configuration settings # # CONFIG_NX @@ -1356,6 +1369,41 @@ CONFIG_EXAMPLES_CDCACM_TRACEINTERRUPTS=n # as a percentage. Default: 5 seconds # +# Settings for examples/watchdog +# + +# This test depends on these specific Watchdog/NSH configurations settings (your +# specific watchdog hardware settings might require additional settings). +# +# CONFIG_WATCHDOG- Enables watchdog timer support support. +# CONFIG_NSH_BUILTIN_APPS - Build the watchdog time test as an NSH +# built-in function. Default: Not built! The example can only be used +# as an NSH built-in application +# +# The STM32 also needs one of the following enabled: +# +# CONFIG_STM32_WWDG=y, OR +# CONFIG_STM32_IWDG=y (but not both) +# +# Specific configuration options for this example include: +# +# CONFIG_EXAMPLES_WATCHDOG_DEVPATH - The path to the Watchdog device. +# Default: /dev/watchdog0 +# CONFIG_EXAMPLES_WATCHDOG_PINGTIME - Time in milliseconds that the example +# will ping the watchdog before letting the watchdog expire. Default: 5000 +# milliseconds +# CONFIG_EXAMPLES_WATCHDOG_PINGDELAY - Time delay between pings in +# milliseconds. Default: 500 milliseconds. +# CONFIG_EXAMPLES_WATCHDOG_TIMEOUT - The watchdog timeout value in +# milliseconds before the watchdog timer expires. Default: 2000 +# milliseconds. +# +# CONFIG_EXAMPLES_WATCHDOG_DEVPATH +# CONFIG_EXAMPLES_WATCHDOG_PINGTIME +# CONFIG_EXAMPLES_WATCHDOG_PINGDELAY +# CONFIG_EXAMPLES_WATCHDOG_TIMEOUT + +# # Stack and heap information # # CONFIG_BOOT_RUNFROMFLASH - Some configurations support XIP diff --git a/nuttx/configs/stm32f4discovery/ostest/defconfig b/nuttx/configs/stm32f4discovery/ostest/defconfig index 35858b6bd..b6cf8b9bd 100755 --- a/nuttx/configs/stm32f4discovery/ostest/defconfig +++ b/nuttx/configs/stm32f4discovery/ostest/defconfig @@ -151,6 +151,7 @@ CONFIG_STM32_TIM12=n CONFIG_STM32_TIM13=n CONFIG_STM32_TIM14=n CONFIG_STM32_WWDG=n +CONFIG_STM32_IWDG=n CONFIG_STM32_SPI2=n CONFIG_STM32_SPI3=n CONFIG_STM32_USART2=y diff --git a/nuttx/configs/stm32f4discovery/src/Makefile b/nuttx/configs/stm32f4discovery/src/Makefile index 55db39d03..b5f449a47 100644 --- a/nuttx/configs/stm32f4discovery/src/Makefile +++ b/nuttx/configs/stm32f4discovery/src/Makefile @@ -68,6 +68,10 @@ ifeq ($(CONFIG_QENCODER),y) CSRCS += up_qencoder.c endif +ifeq ($(CONFIG_WATCHDOG),y) +CSRCS += up_watchdog.c +endif + COBJS = $(CSRCS:.c=$(OBJEXT)) SRCS = $(ASRCS) $(CSRCS) diff --git a/nuttx/configs/stm32f4discovery/src/up_watchdog.c b/nuttx/configs/stm32f4discovery/src/up_watchdog.c new file mode 100644 index 000000000..4bef40f78 --- /dev/null +++ b/nuttx/configs/stm32f4discovery/src/up_watchdog.c @@ -0,0 +1,136 @@ +/************************************************************************************ + * configs/stm32f4discovery/src/up_watchdog.c + * arch/arm/src/board/up_watchdog.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include <nuttx/config.h> + +#include <errno.h> +#include <debug.h> + +#include <nuttx/watchdog.h> +#include <arch/board/board.h> + +#include "stm32_wdg.h" + +#ifdef CONFIG_WATCHDOG + +/************************************************************************************ + * Definitions + ************************************************************************************/ +/* Configuration *******************************************************************/ +/* Wathdog hardware should be enabled */ + +#if !defined(CONFIG_STM32_WWDG) && !defined(CONFIG_STM32_IWDG) +# warning "One of CONFIG_STM32_WWDG or CONFIG_STM32_IWDG must be defined" +#endif + +/* Select the path to the registered watchdog timer device */ + +#ifndef CONFIG_STM32_WDG_DEVPATH +# ifdef CONFIG_EXAMPLES_WATCHDOG_DEVPATH +# define CONFIG_STM32_WDG_DEVPATH CONFIG_EXAMPLES_WATCHDOG_DEVPATH +# else +# define CONFIG_STM32_WDG_DEVPATH "/dev/watchdog0" +# endif +#endif + +/* Use the un-calibrated LSI frequency if we have nothing better */ + +#if defined(CONFIG_STM32_IWDG) && !defined(CONFIG_STM32_LSIFREQ) +# define CONFIG_STM32_LSIFREQ STM32_LSI_FREQUENCY +#endif + +/* Debug ***************************************************************************/ +/* Non-standard debug that may be enabled just for testing the watchdog timer */ + +#ifndef CONFIG_DEBUG +# undef CONFIG_DEBUG_WATCHDOG +#endif + +#ifdef CONFIG_DEBUG_WATCHDOG +# define wdgdbg dbg +# define wdglldbg lldbg +# ifdef CONFIG_DEBUG_VERBOSE +# define wdgvdbg vdbg +# define wdgllvdbg llvdbg +# else +# define wdgvdbg(x...) +# define wdgllvdbg(x...) +# endif +#else +# define wdgdbg(x...) +# define wdglldbg(x...) +# define wdgvdbg(x...) +# define wdgllvdbg(x...) +#endif + +/************************************************************************************ + * Private Functions + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +/**************************************************************************** + * Name: up_wdginitialize() + * + * Description: + * Perform architecuture-specific initialization of the Watchdog hardware. + * This interface must be provided by all configurations using + * apps/examples/watchdog + * + ****************************************************************************/ + +int up_wdginitialize(void) +{ + /* Initialize tha register the watchdog timer device */ + +#if defined(CONFIG_STM32_WWDG) + stm32_wwdginitialize(CONFIG_STM32_WDG_DEVPATH); + return OK; +#elif defined(CONFIG_STM32_IWDG) + stm32_iwdginitialize(CONFIG_STM32_WDG_DEVPATH, CONFIG_STM32_LSIFREQ); + return OK; +#else + return -ENODEV; +#endif +} + +#endif /* CONFIG_WATCHDOG */ |