forked from Archive/PX4-Autopilot
Add STM32 watchdog configuration
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4617 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
parent
c47d8cb7f6
commit
e1920cbcb3
|
@ -225,4 +225,4 @@
|
|||
* Kconfig: Continued Kconfig file updates (no longer tracking on a per-file
|
||||
basis in the ChangeLog)
|
||||
* apps/examples/watchdog: Add a watchdog timer example.
|
||||
|
||||
* apps/examples/tiff: Fix wrong path used for temporary file.
|
||||
|
|
|
@ -118,7 +118,7 @@
|
|||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: watchdog_devinit()
|
||||
* Name: up_wdginitialize()
|
||||
*
|
||||
* Description:
|
||||
* Perform architecuture-specific initialization of the Watchdog hardware.
|
||||
|
@ -127,6 +127,6 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
int watchdog_devinit(void);
|
||||
int up_wdginitialize(void);
|
||||
|
||||
#endif /* __APPS_EXAMPLES_WATCHDOG_WATCHDOG_H */
|
||||
|
|
|
@ -223,7 +223,7 @@ static void parse_args(FAR struct wdog_example_s *wdog, int argc, FAR char **arg
|
|||
int wdog_main(int argc, char *argv[])
|
||||
{
|
||||
struct wdog_example_s wdog;
|
||||
uint32_t elapsed;
|
||||
long elapsed;
|
||||
int fd;
|
||||
int ret;
|
||||
|
||||
|
@ -235,10 +235,10 @@ int wdog_main(int argc, char *argv[])
|
|||
* this test.
|
||||
*/
|
||||
|
||||
ret = watchdog_devinit();
|
||||
ret = up_wdginitialize();
|
||||
if (ret != OK)
|
||||
{
|
||||
message("wdog_main: watchdog_devinit failed: %d\n", ret);
|
||||
message("wdog_main: up_wdginitialize failed: %d\n", ret);
|
||||
goto errout;
|
||||
}
|
||||
|
||||
|
@ -251,8 +251,6 @@ int wdog_main(int argc, char *argv[])
|
|||
CONFIG_EXAMPLES_WATCHDOG_DEVPATH, errno);
|
||||
goto errout;
|
||||
}
|
||||
message("wdog_main: starting output with frequency: %d duty: %08x count: %d\n",
|
||||
info.frequency, info.duty, info.count);
|
||||
|
||||
/* Set the watchdog timeout */
|
||||
|
||||
|
@ -289,7 +287,7 @@ int wdog_main(int argc, char *argv[])
|
|||
goto errout_with_dev;
|
||||
}
|
||||
|
||||
message(" ping elapsed=%d\n", elpased);
|
||||
message(" ping elapsed=%ld\n", elapsed);
|
||||
msgflush();
|
||||
}
|
||||
|
||||
|
@ -301,7 +299,7 @@ int wdog_main(int argc, char *argv[])
|
|||
|
||||
usleep(wdog.pingdelay * 1000);
|
||||
|
||||
message(" NO ping elapsed=%d\n", elpased);
|
||||
message(" NO ping elapsed=%ld\n", elapsed);
|
||||
msgflush();
|
||||
}
|
||||
|
||||
|
|
|
@ -474,10 +474,10 @@ int tiff_initialize(FAR struct tiff_info_s *info)
|
|||
goto errout;
|
||||
}
|
||||
|
||||
info->tmp2fd = open(info->tmpfile1, O_RDWR|O_CREAT|O_TRUNC, 0666);
|
||||
info->tmp2fd = open(info->tmpfile2, O_RDWR|O_CREAT|O_TRUNC, 0666);
|
||||
if (info->tmp2fd < 0)
|
||||
{
|
||||
gdbg("Failed to open %s for reading/writing: %d\n", info->tmpfile1, errno);
|
||||
gdbg("Failed to open %s for reading/writing: %d\n", info->tmpfile2, errno);
|
||||
goto errout;
|
||||
}
|
||||
|
||||
|
|
|
@ -233,6 +233,12 @@ config DEBUG_SPI
|
|||
---help---
|
||||
Enable I2C driver debug output (disabled by default)
|
||||
|
||||
config DEBUG_WATCHDOG
|
||||
bool "Enable watchdog timer debug output"
|
||||
default n
|
||||
---help---
|
||||
Enable watchdog timer debug output (disabled by default)
|
||||
|
||||
endif
|
||||
|
||||
config DEBUG_SYMBOLS
|
||||
|
|
|
@ -363,7 +363,9 @@ HY-Mini specific Configuration Options
|
|||
CONFIG_STM32_TIM5
|
||||
CONFIG_STM32_TIM6
|
||||
CONFIG_STM32_TIM7
|
||||
CONFIG_STM32_IWDG
|
||||
CONFIG_STM32_WWDG
|
||||
CONFIG_STM32_IWDG
|
||||
CONFIG_STM32_SPI2
|
||||
CONFIG_STM32_SPI4
|
||||
CONFIG_STM32_USART2
|
||||
|
|
|
@ -119,6 +119,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -115,6 +115,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -116,6 +116,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=n
|
||||
|
|
|
@ -115,6 +115,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -116,6 +116,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
############################################################################
|
||||
# configs/hymini-stm32v/src/Makefile
|
||||
#
|
||||
# Copyright (C) 2009-2011 Gregory Nutt. All rights reserved.
|
||||
# Copyright (C) 2009-2012 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
# Laurent Latil <laurent@latil.nom.fr>
|
||||
#
|
||||
|
@ -59,6 +59,10 @@ ifeq ($(CONFIG_USBMSC),y)
|
|||
CSRCS += up_usbmsc.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WATCHDOG),y)
|
||||
CSRCS += up_watchdog.c
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
|
||||
SRCS = $(ASRCS) $(CSRCS)
|
||||
|
|
|
@ -0,0 +1,136 @@
|
|||
/************************************************************************************
|
||||
* configs/hymini-stm32v/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 */
|
|
@ -118,6 +118,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -116,6 +116,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -464,6 +464,7 @@ STM3210E-EVAL-specific Configuration Options
|
|||
CONFIG_STM32_TIM6
|
||||
CONFIG_STM32_TIM7
|
||||
CONFIG_STM32_WWDG
|
||||
CONFIG_STM32_IWDG
|
||||
CONFIG_STM32_SPI2
|
||||
CONFIG_STM32_SPI4
|
||||
CONFIG_STM32_USART2
|
||||
|
|
|
@ -123,6 +123,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -135,6 +135,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -152,6 +152,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -133,6 +133,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -72,6 +72,10 @@ ifeq ($(CONFIG_CAN),y)
|
|||
CSRCS += up_can.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WATCHDOG),y)
|
||||
CSRCS += up_watchdog.c
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
|
||||
SRCS = $(ASRCS) $(CSRCS)
|
||||
|
|
|
@ -0,0 +1,136 @@
|
|||
/************************************************************************************
|
||||
* configs/stm3210e-eval/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 */
|
|
@ -133,6 +133,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||
CONFIG_STM32_TIM6=n
|
||||
CONFIG_STM32_TIM7=n
|
||||
CONFIG_STM32_WWDG=n
|
||||
CONFIG_STM32_IWDG=n
|
||||
CONFIG_STM32_SPI2=n
|
||||
CONFIG_STM32_SPI4=n
|
||||
CONFIG_STM32_USART2=y
|
||||
|
|
|
@ -460,6 +460,7 @@ STM3220G-EVAL-specific Configuration Options
|
|||
CONFIG_STM32_TIM13
|
||||
CONFIG_STM32_TIM14
|
||||
CONFIG_STM32_WWDG
|
||||
CONFIG_STM32_IWDG
|
||||
CONFIG_STM32_SPI2
|
||||
CONFIG_STM32_SPI3
|
||||
CONFIG_STM32_USART2
|
||||
|
|
|
@ -172,6 +172,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=n
|
||||
|
|
|
@ -172,6 +172,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=n
|
||||
|
|
|
@ -172,6 +172,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=n
|
||||
|
|
|
@ -173,6 +173,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=n
|
||||
|
|
|
@ -172,6 +172,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=n
|
||||
|
|
|
@ -80,8 +80,8 @@ ifeq ($(CONFIG_NSH_ARCHINIT),y)
|
|||
CSRCS += up_nsh.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_FPU),y)
|
||||
CSRCS += up_ostest.c
|
||||
ifeq ($(CONFIG_WATCHDOG),y)
|
||||
CSRCS += up_watchdog.c
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
|
|
|
@ -0,0 +1,136 @@
|
|||
/************************************************************************************
|
||||
* configs/stm3220g-eval/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 */
|
|
@ -171,6 +171,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=n
|
||||
|
|
|
@ -630,6 +630,7 @@ STM3240G-EVAL-specific Configuration Options
|
|||
CONFIG_STM32_TIM13
|
||||
CONFIG_STM32_TIM14
|
||||
CONFIG_STM32_WWDG
|
||||
CONFIG_STM32_IWDG
|
||||
CONFIG_STM32_SPI2
|
||||
CONFIG_STM32_SPI3
|
||||
CONFIG_STM32_USART2
|
||||
|
|
|
@ -174,6 +174,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=n
|
||||
|
|
|
@ -174,6 +174,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=n
|
||||
|
|
|
@ -174,6 +174,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=n
|
||||
|
|
|
@ -175,6 +175,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=n
|
||||
|
|
|
@ -174,6 +174,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=n
|
||||
|
|
|
@ -84,6 +84,10 @@ ifeq ($(CONFIG_ARCH_FPU),y)
|
|||
CSRCS += up_ostest.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WATCHDOG),y)
|
||||
CSRCS += up_watchdog.c
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
|
||||
SRCS = $(ASRCS) $(CSRCS)
|
||||
|
|
|
@ -174,6 +174,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=n
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -61,3 +61,7 @@ ifeq ($(CONFIG_CDCACM),y)
|
|||
CONFIGURED_APPS += examples/cdcacm
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WATCHDOG),y)
|
||||
CONFIGURED_APPS += examples/watchdog
|
||||
endif
|
||||
|
|
|
@ -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
|
||||
|
@ -1010,6 +1011,18 @@ CONFIG_USBMSC_PRODUCTSTR="USBdev Storage"
|
|||
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
|
||||
#
|
||||
|
@ -1355,6 +1368,41 @@ CONFIG_EXAMPLES_CDCACM_TRACEINTERRUPTS=n
|
|||
# CONFIG_EXAMPLES_PWM_DURATION - The initial PWM pulse train duration in sectonds.
|
||||
# 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
|
||||
#
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 */
|
|
@ -478,6 +478,7 @@ FAR void *watchdog_register(FAR const char *path,
|
|||
int ret;
|
||||
|
||||
DEBUGASSERT(path && lower);
|
||||
wdvdbg("Registering: %s\n", path);
|
||||
|
||||
/* Allocate the upper-half data structure */
|
||||
|
||||
|
@ -548,14 +549,14 @@ void watchdog_unregister(FAR void *handle)
|
|||
FAR struct watchdog_upperhalf_s *upper;
|
||||
FAR struct watchdog_lowerhalf_s *lower;
|
||||
|
||||
wdvdbg("cmd: %d arg: %ld\n", cmd, arg);
|
||||
|
||||
/* Recover the pointer to the upper-half driver state */
|
||||
|
||||
upper = (FAR struct watchdog_upperhalf_s *)handle;
|
||||
lower = upper->lower;
|
||||
DEBUGASSERT(upper && lower);
|
||||
|
||||
wdvdbg("Unregistering: %s\n", upper->path);
|
||||
|
||||
/* Disable the watchdog timer */
|
||||
|
||||
DEBUGASSERT(lower->ops->stop); /* Required */
|
||||
|
|
|
@ -41,6 +41,8 @@
|
|||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/fs/ioctl.h>
|
||||
|
||||
#ifdef CONFIG_WATCHDOG
|
||||
|
|
Loading…
Reference in New Issue