summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-04-21 19:19:56 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-04-21 19:19:56 -0600
commit704a0415eb5bd052e7821fd5b6e29ed03b722ec7 (patch)
tree0017841b6eb8332264465e02ea56ff56b06ad8ac
parent399afe247639fafa493b6210bcca2f7a463677bd (diff)
downloadnuttx-704a0415eb5bd052e7821fd5b6e29ed03b722ec7.tar.gz
nuttx-704a0415eb5bd052e7821fd5b6e29ed03b722ec7.tar.bz2
nuttx-704a0415eb5bd052e7821fd5b6e29ed03b722ec7.zip
SAM4S Xplained Pro: Watchdog timer support for Bob Doison
-rw-r--r--nuttx/ChangeLog3
-rw-r--r--nuttx/configs/sam4s-xplained-pro/TODO.txt21
-rw-r--r--nuttx/configs/sam4s-xplained-pro/include/board.h6
-rw-r--r--nuttx/configs/sam4s-xplained-pro/nsh/defconfig301
-rw-r--r--nuttx/configs/sam4s-xplained-pro/src/Makefile5
-rw-r--r--nuttx/configs/sam4s-xplained-pro/src/sam_nsh.c6
-rw-r--r--nuttx/configs/sam4s-xplained-pro/src/sam_wdt.c237
7 files changed, 486 insertions, 93 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index 38c1819fe..706ef2798 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -7237,3 +7237,6 @@
Bob Doison (2014-4-21).
* arch/arm/src/sam34/sam_wdt.c/.h: Add watchdog driver. From Bob
Doison (2014-4-21).
+ * nuttx/configs/sam4s-xplained-pro: Add board-specific watchdog
+ timer support. From Bob Doison (2014-4-21).
+
diff --git a/nuttx/configs/sam4s-xplained-pro/TODO.txt b/nuttx/configs/sam4s-xplained-pro/TODO.txt
index 03b188382..0048df71d 100644
--- a/nuttx/configs/sam4s-xplained-pro/TODO.txt
+++ b/nuttx/configs/sam4s-xplained-pro/TODO.txt
@@ -1,9 +1,12 @@
-
-
- - implement flash driver
- - see arch/arm/src/stm32/stm32_flash.c and related
- - both banks could be mapped with care taken not to erase the active code.
- - perhaps the MPU could block code corruption?
-
- - once implemented, the free() cmd replacement can show flash information.
-
+ - implement flash driver
+ - see arch/arm/src/stm32/stm32_flash.c and related
+ - both banks could be mapped with care taken not to erase the active code.
+ - perhaps the MPU could block code corruption?
+
+ - once implemented, the free() cmd replacement can show flash information.
+
+ - Seen crashes when running serial ports below 921600
+ - USB serial not quite stable when pushing lots of data
+
+ - UARTs don't use DMA. We may need this for high baudrates.
+ - Inbound hardware flow control requires dma.
diff --git a/nuttx/configs/sam4s-xplained-pro/include/board.h b/nuttx/configs/sam4s-xplained-pro/include/board.h
index b0ee9972e..e7152cb5d 100644
--- a/nuttx/configs/sam4s-xplained-pro/include/board.h
+++ b/nuttx/configs/sam4s-xplained-pro/include/board.h
@@ -54,8 +54,8 @@
************************************************************************************/
/* Clocking *************************************************************************/
-/* After power-on reset, the sam3u device is running on a 4MHz internal RC. These
- * definitions will configure clocking with MCK = 48MHz, PLLA = 96, and CPU=120MHz.
+/* After power-on reset, the sam4s device is running on a 4MHz internal RC. These
+ * definitions will configure clocking with MCK = 120MHz, PLLA = 240, and CPU=120MHz.
*/
/* Main oscillator register settings */
@@ -69,6 +69,8 @@
* PLLdiv: 1 (bypassed)
* Fpll: (12MHz * 20) / 1 = 240MHz
*/
+#define BOARD_32KOSC_FREQUENCY (32768)
+#define BOARD_SLCK_FREQUENCY (BOARD_32KOSC_FREQUENCY)
#define BOARD_MAINOSC_FREQUENCY (12000000)
#define BOARD_CKGR_PLLAR_MUL (19 << PMC_CKGR_PLLAR_MUL_SHIFT)
diff --git a/nuttx/configs/sam4s-xplained-pro/nsh/defconfig b/nuttx/configs/sam4s-xplained-pro/nsh/defconfig
index 12a4402b1..0370ce302 100644
--- a/nuttx/configs/sam4s-xplained-pro/nsh/defconfig
+++ b/nuttx/configs/sam4s-xplained-pro/nsh/defconfig
@@ -26,6 +26,7 @@ CONFIG_HOST_LINUX=y
CONFIG_INTELHEX_BINARY=y
# CONFIG_MOTOROLA_SREC is not set
CONFIG_RAW_BINARY=y
+# CONFIG_UBOOT_UIMAGE is not set
#
# Customize Header Files
@@ -49,12 +50,13 @@ CONFIG_ARCH_HAVE_STACKCHECK=y
#
# CONFIG_DEBUG_MM is not set
# CONFIG_DEBUG_SCHED is not set
-CONFIG_DEBUG_FS=y
+# CONFIG_DEBUG_USB is not set
+# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_LIB is not set
# CONFIG_DEBUG_BINFMT is not set
# CONFIG_DEBUG_GRAPHICS is not set
# CONFIG_DEBUG_IRQ is not set
-# CONFIG_DEBUG_STACK is not set
+CONFIG_DEBUG_STACK=y
#
# Driver Debug Options
@@ -65,6 +67,7 @@ CONFIG_DEBUG_FS=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_DEBUG_DMA is not set
# CONFIG_DEBUG_RTC is not set
+# CONFIG_DEBUG_WATCHDOG is not set
# CONFIG_DEBUG_AUDIO is not set
CONFIG_DEBUG_SYMBOLS=y
CONFIG_ARCH_HAVE_CUSTOMOPT=y
@@ -136,7 +139,6 @@ CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y
# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set
# CONFIG_ARMV7M_OABI_TOOLCHAIN is not set
-CONFIG_GPIO_IRQ=y
CONFIG_ARCH_HAVE_EXTNAND=y
CONFIG_ARCH_HAVE_EXTNOR=y
CONFIG_ARCH_HAVE_EXTSRAM0=y
@@ -195,6 +197,17 @@ CONFIG_ARCH_CHIP_SAM4S=y
#
# AT91SAM3/4 Peripheral Support
#
+# CONFIG_SAM34_ACC is not set
+# CONFIG_SAM34_ADC12B is not set
+# CONFIG_SAM34_CRCCU is not set
+# CONFIG_SAM34_DACC is not set
+# CONFIG_SAM34_DMAC1 is not set
+CONFIG_SAM34_HSMCI=y
+CONFIG_SAM34_PDCA=y
+# CONFIG_SAM34_PWM is not set
+CONFIG_SAM34_RTC=y
+# CONFIG_SAM34_RTT is not set
+CONFIG_SAM34_SMC=y
# CONFIG_SAM34_SPI0 is not set
# CONFIG_SAM34_SSC is not set
# CONFIG_SAM34_TC0 is not set
@@ -203,29 +216,19 @@ CONFIG_ARCH_CHIP_SAM4S=y
# CONFIG_SAM34_TC3 is not set
# CONFIG_SAM34_TC4 is not set
# CONFIG_SAM34_TC5 is not set
-# CONFIG_SAM34_PWM is not set
# CONFIG_SAM34_TWIM0 is not set
# CONFIG_SAM34_TWIS0 is not set
# CONFIG_SAM34_TWIM1 is not set
# CONFIG_SAM34_TWIS1 is not set
-# CONFIG_SAM34_UART0 is not set
+CONFIG_SAM34_UART0=y
CONFIG_SAM34_UART1=y
+CONFIG_SAM34_UDP=y
# CONFIG_SAM34_USART0 is not set
-# CONFIG_SAM34_USART1 is not set
-# CONFIG_SAM34_ADC12B is not set
-# CONFIG_SAM34_DACC is not set
-# CONFIG_SAM34_ACC is not set
-CONFIG_SAM34_SMC=y
-CONFIG_SAM34_PDCA=y
-# CONFIG_SAM34_CRCCU is not set
-# CONFIG_SAM34_UDP is not set
-CONFIG_SAM34_RTC=y
-# CONFIG_SAM34_RTT is not set
+CONFIG_SAM34_USART1=y
CONFIG_SAM34_WDT=y
-CONFIG_SAM34_HSMCI=y
#
-# External Memory Configuration
+# AT91SAM3/4 External Memory Configuration
#
CONFIG_SAM34_EXTNAND=y
CONFIG_SAM34_EXTNANDSIZE=268435456
@@ -236,14 +239,34 @@ CONFIG_SAM34_EXTNANDSIZE=268435456
#
# AT91SAM3/4 GPIO Interrupt Configuration
#
-CONFIG_GPIOA_IRQ=y
-# CONFIG_GPIOB_IRQ is not set
-CONFIG_GPIOC_IRQ=y
+CONFIG_SAM34_GPIO_IRQ=y
+CONFIG_SAM34_GPIOA_IRQ=y
+CONFIG_SAM34_GPIOB_IRQ=y
+CONFIG_SAM34_GPIOC_IRQ=y
+
+#
+# AT91SAM3/4 HSMCI device driver options
+#
+CONFIG_SAM34_HSMCI_RDPROOF=y
+CONFIG_SAM34_HSMCI_WRPROOF=y
+
+#
+# AT91SAM3/4 USB Full Speed Device Controller driver (DCD) options
+#
+# CONFIG_SAM34_UDP_REGDEBUG is not set
#
# AT91SAM3/4 Watchdog Configuration
#
-# CONFIG_WDT_ENABLED_ON_RESET is not set
+CONFIG_WDT_ENABLED_ON_RESET=y
+# CONFIG_WDT_DISABLE_ON_RESET is not set
+CONFIG_WDT_TIMEOUT=4000
+CONFIG_WDT_MINTIME=2000
+CONFIG_WDT_THREAD=y
+CONFIG_WDT_THREAD_NAME="wdog"
+CONFIG_WDT_THREAD_INTERVAL=2000
+CONFIG_WDT_THREAD_PRIORITY=99
+CONFIG_WDT_THREAD_STACKSIZE=512
#
# Architecture Options
@@ -259,12 +282,13 @@ CONFIG_ARCH_HAVE_VFORK=y
# CONFIG_ARCH_NAND_HWECC is not set
CONFIG_ARCH_IRQPRIO=y
CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARCH_USBDUMP=y
# CONFIG_ENDIAN_BIG is not set
# CONFIG_ARCH_IDLE_CUSTOM is not set
CONFIG_ARCH_HAVE_RAMFUNCS=y
# CONFIG_ARCH_RAMFUNCS is not set
CONFIG_ARCH_HAVE_RAMVECTORS=y
-CONFIG_ARCH_RAMVECTORS=y
+# CONFIG_ARCH_RAMVECTORS is not set
#
# Board Settings
@@ -322,36 +346,70 @@ CONFIG_NSH_MMCSDSLOTNO=0
#
# RTOS Features
#
-# CONFIG_BOARD_INITIALIZE is not set
+CONFIG_DISABLE_OS_API=y
+# CONFIG_DISABLE_CLOCK is not set
+# CONFIG_DISABLE_POSIX_TIMERS is not set
+# CONFIG_DISABLE_PTHREAD is not set
+# CONFIG_DISABLE_SIGNALS is not set
+# CONFIG_DISABLE_MQUEUE is not set
+CONFIG_DISABLE_ENVIRON=y
+
+#
+# Clocks and Timers
+#
CONFIG_MSEC_PER_TICK=10
# CONFIG_SYSTEM_TIME64 is not set
-CONFIG_RR_INTERVAL=50
-# CONFIG_SCHED_CPULOAD is not set
-# CONFIG_SCHED_INSTRUMENTATION is not set
-CONFIG_TASK_NAME_SIZE=16
-# CONFIG_SCHED_HAVE_PARENT is not set
+# CONFIG_CLOCK_MONOTONIC is not set
CONFIG_JULIAN_TIME=y
CONFIG_START_YEAR=2014
CONFIG_START_MONTH=3
CONFIG_START_DAY=20
-CONFIG_DEV_CONSOLE=y
+CONFIG_MAX_WDOGPARMS=2
+CONFIG_PREALLOC_WDOGS=32
+CONFIG_PREALLOC_TIMERS=4
+
+#
+# Tasks and Scheduling
+#
+CONFIG_USER_ENTRYPOINT="nsh_main"
+CONFIG_RR_INTERVAL=50
+CONFIG_TASK_NAME_SIZE=16
+CONFIG_MAX_TASK_ARGS=4
+CONFIG_MAX_TASKS=16
+# CONFIG_SCHED_HAVE_PARENT is not set
+CONFIG_SCHED_WAITPID=y
+
+#
+# Pthread Options
+#
# CONFIG_MUTEX_TYPES is not set
-# CONFIG_PRIORITY_INHERITANCE is not set
+CONFIG_NPTHREAD_KEYS=4
+
+#
+# Performance Monitoring
+#
+# CONFIG_SCHED_CPULOAD is not set
+# CONFIG_SCHED_INSTRUMENTATION is not set
+
+#
+# Files and I/O
+#
+CONFIG_DEV_CONSOLE=y
# CONFIG_FDCLONE_DISABLE is not set
# CONFIG_FDCLONE_STDIO is not set
CONFIG_SDCLONE_DISABLE=y
-CONFIG_SCHED_WAITPID=y
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NFILE_STREAMS=8
+CONFIG_NAME_MAX=32
+# CONFIG_PRIORITY_INHERITANCE is not set
+
+#
+# RTOS hooks
+#
+# CONFIG_BOARD_INITIALIZE is not set
# CONFIG_SCHED_STARTHOOK is not set
# CONFIG_SCHED_ATEXIT is not set
# CONFIG_SCHED_ONEXIT is not set
-CONFIG_USER_ENTRYPOINT="nsh_main"
-CONFIG_DISABLE_OS_API=y
-# CONFIG_DISABLE_CLOCK is not set
-# CONFIG_DISABLE_POSIX_TIMERS is not set
-# CONFIG_DISABLE_PTHREAD is not set
-# CONFIG_DISABLE_SIGNALS is not set
-# CONFIG_DISABLE_MQUEUE is not set
-CONFIG_DISABLE_ENVIRON=y
#
# Signal Numbers
@@ -363,19 +421,10 @@ CONFIG_SIG_SIGCONDTIMEDOUT=16
CONFIG_SIG_SIGWORK=17
#
-# Sizes of configurable things (0 disables)
+# POSIX Message Queue Options
#
-CONFIG_MAX_TASKS=16
-CONFIG_MAX_TASK_ARGS=4
-CONFIG_NPTHREAD_KEYS=4
-CONFIG_NFILE_DESCRIPTORS=8
-CONFIG_NFILE_STREAMS=8
-CONFIG_NAME_MAX=32
CONFIG_PREALLOC_MQ_MSGS=8
CONFIG_MQ_MAXMSGSIZE=32
-CONFIG_MAX_WDOGPARMS=2
-CONFIG_PREALLOC_WDOGS=4
-CONFIG_PREALLOC_TIMERS=4
#
# Stack and heap information
@@ -403,7 +452,8 @@ CONFIG_DEV_ZERO=y
CONFIG_RTC=y
CONFIG_RTC_DATETIME=y
CONFIG_RTC_ALARM=y
-# CONFIG_WATCHDOG is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_DEVPATH="/dev/watchdog0"
# CONFIG_ANALOG is not set
# CONFIG_AUDIO_DEVICES is not set
# CONFIG_VIDEO_DEVICES is not set
@@ -429,9 +479,10 @@ CONFIG_SDIO_BLOCKSETUP=y
# CONFIG_SERCOMM_CONSOLE is not set
CONFIG_SERIAL=y
# CONFIG_DEV_LOWCONSOLE is not set
+CONFIG_SERIAL_REMOVABLE=y
# CONFIG_16550_UART is not set
# CONFIG_ARCH_HAVE_UART is not set
-# CONFIG_ARCH_HAVE_UART0 is not set
+CONFIG_ARCH_HAVE_UART0=y
CONFIG_ARCH_HAVE_UART1=y
# CONFIG_ARCH_HAVE_UART2 is not set
# CONFIG_ARCH_HAVE_UART3 is not set
@@ -443,7 +494,7 @@ CONFIG_ARCH_HAVE_UART1=y
# CONFIG_ARCH_HAVE_SCI0 is not set
# CONFIG_ARCH_HAVE_SCI1 is not set
# CONFIG_ARCH_HAVE_USART0 is not set
-# CONFIG_ARCH_HAVE_USART1 is not set
+CONFIG_ARCH_HAVE_USART1=y
# CONFIG_ARCH_HAVE_USART2 is not set
# CONFIG_ARCH_HAVE_USART3 is not set
# CONFIG_ARCH_HAVE_USART4 is not set
@@ -455,13 +506,28 @@ CONFIG_ARCH_HAVE_UART1=y
#
# USART Configuration
#
+CONFIG_USART1_ISUART=y
CONFIG_MCU_SERIAL=y
CONFIG_STANDARD_SERIAL=y
# CONFIG_SERIAL_TIOCSERGSTRUCT is not set
-CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART0_SERIAL_CONSOLE=y
+# CONFIG_UART1_SERIAL_CONSOLE is not set
+# CONFIG_USART1_SERIAL_CONSOLE is not set
# CONFIG_NO_SERIAL_CONSOLE is not set
#
+# UART0 Configuration
+#
+CONFIG_UART0_RXBUFSIZE=256
+CONFIG_UART0_TXBUFSIZE=256
+CONFIG_UART0_BAUD=912600
+CONFIG_UART0_BITS=8
+CONFIG_UART0_PARITY=0
+CONFIG_UART0_2STOP=0
+# CONFIG_UART0_IFLOWCONTROL is not set
+# CONFIG_UART0_OFLOWCONTROL is not set
+
+#
# UART1 Configuration
#
CONFIG_UART1_RXBUFSIZE=256
@@ -470,11 +536,65 @@ CONFIG_UART1_BAUD=921600
CONFIG_UART1_BITS=8
CONFIG_UART1_PARITY=0
CONFIG_UART1_2STOP=0
-CONFIG_UART1_IFLOWCONTROL=y
-CONFIG_UART1_OFLOWCONTROL=y
-CONFIG_SERIAL_IFLOWCONTROL=y
-CONFIG_SERIAL_OFLOWCONTROL=y
-# CONFIG_USBDEV is not set
+# CONFIG_UART1_IFLOWCONTROL is not set
+# CONFIG_UART1_OFLOWCONTROL is not set
+
+#
+# USART1 Configuration
+#
+CONFIG_USART1_RXBUFSIZE=256
+CONFIG_USART1_TXBUFSIZE=256
+CONFIG_USART1_BAUD=921600
+CONFIG_USART1_BITS=8
+CONFIG_USART1_PARITY=0
+CONFIG_USART1_2STOP=0
+# CONFIG_USART1_IFLOWCONTROL is not set
+# CONFIG_USART1_OFLOWCONTROL is not set
+# CONFIG_SERIAL_IFLOWCONTROL is not set
+# CONFIG_SERIAL_OFLOWCONTROL is not set
+CONFIG_USBDEV=y
+
+#
+# USB Device Controller Driver Options
+#
+# CONFIG_USBDEV_ISOCHRONOUS is not set
+# CONFIG_USBDEV_DUALSPEED is not set
+# CONFIG_USBDEV_SELFPOWERED is not set
+CONFIG_USBDEV_BUSPOWERED=y
+CONFIG_USBDEV_MAXPOWER=100
+# CONFIG_USBDEV_DMA is not set
+CONFIG_ARCH_USBDEV_STALLQUEUE=y
+CONFIG_USBDEV_TRACE=y
+CONFIG_USBDEV_TRACE_NRECORDS=256
+CONFIG_USBDEV_TRACE_STRINGS=y
+
+#
+# USB Device Class Driver Options
+#
+# CONFIG_USBDEV_COMPOSITE is not set
+# CONFIG_PL2303 is not set
+CONFIG_CDCACM=y
+# CONFIG_CDCACM_CONSOLE is not set
+CONFIG_CDCACM_EP0MAXPACKET=64
+CONFIG_CDCACM_EPINTIN=1
+CONFIG_CDCACM_EPINTIN_FSSIZE=64
+CONFIG_CDCACM_EPINTIN_HSSIZE=64
+CONFIG_CDCACM_EPBULKOUT=3
+CONFIG_CDCACM_EPBULKOUT_FSSIZE=64
+CONFIG_CDCACM_EPBULKOUT_HSSIZE=512
+CONFIG_CDCACM_EPBULKIN=2
+CONFIG_CDCACM_EPBULKIN_FSSIZE=64
+CONFIG_CDCACM_EPBULKIN_HSSIZE=512
+CONFIG_CDCACM_NWRREQS=4
+CONFIG_CDCACM_NRDREQS=4
+CONFIG_CDCACM_BULKIN_REQLEN=250
+CONFIG_CDCACM_RXBUFSIZE=1024
+CONFIG_CDCACM_TXBUFSIZE=1024
+CONFIG_CDCACM_VENDORID=0x0525
+CONFIG_CDCACM_PRODUCTID=0xa4a7
+CONFIG_CDCACM_VENDORSTR="NuttX"
+CONFIG_CDCACM_PRODUCTSTR="CDC/ACM Serial"
+# CONFIG_USBMSC is not set
# CONFIG_USBHOST is not set
# CONFIG_WIRELESS is not set
@@ -642,7 +762,6 @@ CONFIG_BUILTIN_PROXY_STACKSIZE=1024
# CONFIG_EXAMPLES_HIDKBD is not set
# CONFIG_EXAMPLES_KEYPADTEST is not set
# CONFIG_EXAMPLES_IGMP is not set
-# CONFIG_EXAMPLES_LCDRW is not set
# CONFIG_EXAMPLES_MM is not set
# CONFIG_EXAMPLES_MODBUS is not set
# CONFIG_EXAMPLES_MOUNT is not set
@@ -776,7 +895,7 @@ CONFIG_NSH_CODECS_BUFSIZE=128
CONFIG_NSH_CMDOPT_HEXDUMP=y
CONFIG_NSH_PROC_MOUNTPOUNT="/proc"
CONFIG_NSH_FILEIOSIZE=2048
-# CONFIG_NSH_STRERROR is not set
+CONFIG_NSH_STRERROR=y
CONFIG_NSH_LINELEN=80
# CONFIG_NSH_DISABLE_SEMICOLON is not set
CONFIG_NSH_CMDPARMS=y
@@ -789,11 +908,13 @@ CONFIG_NSH_NESTDEPTH=3
# CONFIG_NSH_DISABLE_LOOPS is not set
# CONFIG_NSH_DISABLEBG is not set
CONFIG_NSH_CONSOLE=y
+# CONFIG_NSH_USBCONSOLE is not set
#
# USB Trace Support
#
-# CONFIG_NSH_CONDEV is not set
+# CONFIG_NSH_USBDEV_TRACE is not set
+CONFIG_NSH_CONDEV="/dev/console"
CONFIG_NSH_ARCHINIT=y
#
@@ -810,35 +931,32 @@ CONFIG_NSH_ARCHINIT=y
#
#
-# USB CDC/ACM Device Commands
-#
-
-#
-# USB Composite Device Commands
+# Custom Free Memory Command
#
+# CONFIG_SYSTEM_FREE is not set
#
-# Custom Free Memory Command
+# EMACS-like Command Line Editor
#
-# CONFIG_SYSTEM_FREE is not set
+# CONFIG_SYSTEM_CLE is not set
#
-# I2C tool
+# FLASH Program Installation
#
+# CONFIG_SYSTEM_INSTALL is not set
#
-# INI File Parser
+# FLASH Erase-all Command
#
-# CONFIG_SYSTEM_INIFILE is not set
#
-# FLASH Program Installation
+# I2C tool
#
-# CONFIG_SYSTEM_INSTALL is not set
#
-# FLASH Erase-all Command
+# INI File Parser
#
+# CONFIG_SYSTEM_INIFILE is not set
#
# NxPlayer media player library / command Line
@@ -878,21 +996,31 @@ CONFIG_SYSTEM_SYSINFO=y
CONFIG_SYSTEM_SYSINFO_STACKSIZE=1024
#
-# USB Monitor
+# VI Work-Alike Editor
#
+# CONFIG_SYSTEM_VI is not set
#
-# EMACS-like Command Line Editor
+# Stack Monitor
#
-# CONFIG_SYSTEM_CLE is not set
+CONFIG_SYSTEM_STACKMONITOR=y
+CONFIG_SYSTEM_STACKMONITOR_STACKSIZE=1024
+CONFIG_SYSTEM_STACKMONITOR_PRIORITY=50
+CONFIG_SYSTEM_STACKMONITOR_INTERVAL=2
#
-# VI Work-Alike Editor
+# USB CDC/ACM Device Commands
#
-# CONFIG_SYSTEM_VI is not set
+CONFIG_SYSTEM_CDCACM=y
+CONFIG_SYSTEM_CDCACM_DEVMINOR=0
+CONFIG_SYSTEM_CDCACM_TRACEINIT=y
+CONFIG_SYSTEM_CDCACM_TRACECLASS=y
+CONFIG_SYSTEM_CDCACM_TRACETRANSFERS=y
+CONFIG_SYSTEM_CDCACM_TRACECONTROLLER=y
+CONFIG_SYSTEM_CDCACM_TRACEINTERRUPTS=y
#
-# Stack Monitor
+# USB Composite Device Commands
#
#
@@ -900,6 +1028,19 @@ CONFIG_SYSTEM_SYSINFO_STACKSIZE=1024
#
#
+# USB Monitor
+#
+CONFIG_SYSTEM_USBMONITOR=y
+CONFIG_SYSTEM_USBMONITOR_STACKSIZE=1024
+CONFIG_SYSTEM_USBMONITOR_PRIORITY=50
+CONFIG_SYSTEM_USBMONITOR_INTERVAL=2
+CONFIG_SYSTEM_USBMONITOR_TRACEINIT=y
+CONFIG_SYSTEM_USBMONITOR_TRACECLASS=y
+CONFIG_SYSTEM_USBMONITOR_TRACETRANSFERS=y
+CONFIG_SYSTEM_USBMONITOR_TRACECONTROLLER=y
+CONFIG_SYSTEM_USBMONITOR_TRACEINTERRUPTS=y
+
+#
# Zmodem Commands
#
# CONFIG_SYSTEM_ZMODEM is not set
diff --git a/nuttx/configs/sam4s-xplained-pro/src/Makefile b/nuttx/configs/sam4s-xplained-pro/src/Makefile
index 71cc002a8..15501d49e 100644
--- a/nuttx/configs/sam4s-xplained-pro/src/Makefile
+++ b/nuttx/configs/sam4s-xplained-pro/src/Makefile
@@ -68,6 +68,11 @@ ifeq ($(CONFIG_ARCH_BUTTONS),y)
CSRCS += sam_buttons.c
endif
+ifeq ($(CONFIG_SAM34_WDT),y)
+CSRCS += sam_wdt.c
+endif
+
+
COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS)
diff --git a/nuttx/configs/sam4s-xplained-pro/src/sam_nsh.c b/nuttx/configs/sam4s-xplained-pro/src/sam_nsh.c
index ce4de7f57..92b1ff8aa 100644
--- a/nuttx/configs/sam4s-xplained-pro/src/sam_nsh.c
+++ b/nuttx/configs/sam4s-xplained-pro/src/sam_nsh.c
@@ -98,11 +98,10 @@ int nsh_archinitialize(void)
int ret;
#endif
- message("initializing...\n");
-
#ifdef HAVE_HSMCI
/* Initialize the HSMCI driver */
+ message("initializing HSMCI\n");
ret = sam_hsmci_initialize();
if (ret < 0)
{
@@ -114,6 +113,7 @@ int nsh_archinitialize(void)
#ifdef HAVE_PROC
/* mount the proc filesystem */
+ message("Mounting procfs to /proc\n");
ret = mount(NULL, "/proc", "procfs", 0, NULL);
if (ret < 0)
{
@@ -125,6 +125,7 @@ int nsh_archinitialize(void)
#ifdef HAVE_USBMONITOR
/* Start the USB Monitor */
+ message("Starting USB Monitor\n");
ret = usbmonitor_start(0, NULL);
if (ret != OK)
{
@@ -134,6 +135,7 @@ int nsh_archinitialize(void)
#endif
#warning "add automount config...."
+ message("Mounting /dev/mmcsd0 to /fat\n");
ret = mount("/dev/mmcsd0", "/fat", "vfat", 0, NULL);
if (ret < 0)
{
diff --git a/nuttx/configs/sam4s-xplained-pro/src/sam_wdt.c b/nuttx/configs/sam4s-xplained-pro/src/sam_wdt.c
new file mode 100644
index 000000000..8423e802d
--- /dev/null
+++ b/nuttx/configs/sam4s-xplained-pro/src/sam_wdt.c
@@ -0,0 +1,237 @@
+/************************************************************************************
+ * configs/sam4s-xplained-pro/src/up_watchdog.c
+ *
+ * Copyright (C) 2014 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 <sys/types.h>
+#include <sys/ioctl.h>
+
+#include <errno.h>
+#include <debug.h>
+#include <sched.h>
+#include <stdio.h>
+#include <fcntl.h>
+
+#include <nuttx/watchdog.h>
+#include <arch/board/board.h>
+
+#include <nuttx/kthread.h>
+
+#include "sam_wdt.h"
+#include <nuttx/clock.h>
+
+#ifdef CONFIG_WATCHDOG
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+/* Configuration *******************************************************************/
+/* Wathdog hardware should be enabled */
+
+#if !defined(CONFIG_SAM34_WDT)
+# warning "CONFIG_SAM34_WDT must be defined"
+#endif
+
+/* Select the path to the registered watchdog timer device */
+
+#ifndef CONFIG_WATCHDOG_DEVPATH
+# ifdef CONFIG_EXAMPLES_WATCHDOG_DEVPATH
+# define CONFIG_WATCHDOG_DEVPATH CONFIG_EXAMPLES_WATCHDOG_DEVPATH
+# else
+# define CONFIG_WATCHDOG_DEVPATH "/dev/watchdog0"
+# endif
+#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
+ ************************************************************************************/
+
+
+/*
+Watchdog kicker task
+*/
+#if defined(CONFIG_WDT_THREAD)
+static int wdog_daemon(int argc, char *argv[])
+{
+ int fd;
+ int ret;
+
+ /* Open the watchdog device for reading */
+
+ wdgvdbg("Opening.\n");
+ fd = open(CONFIG_WATCHDOG_DEVPATH, O_RDONLY);
+ if (fd < 0)
+ {
+ wdgdbg("open %s failed: %d\n", CONFIG_WATCHDOG_DEVPATH, errno);
+ goto errout;
+ }
+
+ /* Start the watchdog timer. */
+
+ wdgvdbg("Starting.\n");
+ ret = ioctl(fd, WDIOC_START, 0);
+ if (ret < 0)
+ {
+ wdgdbg("ioctl(WDIOC_START) failed: %d\n", errno);
+ goto errout_with_dev;
+ }
+
+ while(1)
+ {
+ usleep((CONFIG_WDT_THREAD_INTERVAL)*1000);
+
+ wdgvdbg("ping\n");
+ ret = ioctl(fd, WDIOC_KEEPALIVE, 0);
+ if (ret < 0)
+ {
+ wdgdbg("ioctl(WDIOC_KEEPALIVE) failed: %d\n", errno);
+ goto errout_with_dev;
+ }
+ }
+
+errout_with_dev:
+ close(fd);
+errout:
+ return ERROR;
+}
+#endif
+
+/****************************************************************************
+ * Name: up_wdginitialize()
+ *
+ * Description:
+ * Perform architecture-specific initialization of the Watchdog hardware.
+ * This interface must be provided by all configurations using
+ * apps/examples/watchdog
+ *
+ ****************************************************************************/
+
+int up_wdginitialize(void)
+{
+
+#if (defined(CONFIG_SAM34_WDT) && !defined(CONFIG_WDT_DISABLE_ON_RESET))
+ int fd;
+ int ret;
+
+ /* Initialize tha register the watchdog timer device */
+
+ wdgvdbg("Initializing Watchdog driver...\n");
+ sam_wdtinitialize(CONFIG_WATCHDOG_DEVPATH);
+
+ /* Open the watchdog device */
+
+ wdgvdbg("Opening.\n");
+ fd = open(CONFIG_WATCHDOG_DEVPATH, O_RDONLY);
+ if (fd < 0)
+ {
+ wdgdbg("open %s failed: %d\n", CONFIG_WATCHDOG_DEVPATH, errno);
+ goto errout;
+ }
+
+ /* Set the watchdog timeout */
+
+ wdgvdbg("Timeout = %d.\n", CONFIG_WDT_TIMEOUT);
+ ret = ioctl(fd, WDIOC_SETTIMEOUT, (unsigned long)CONFIG_WDT_TIMEOUT);
+ if (ret < 0)
+ {
+ wdgdbg("ioctl(WDIOC_SETTIMEOUT) failed: %d\n", errno);
+ goto errout_with_dev;
+ }
+
+ /* Set the watchdog minimum time */
+
+ wdgvdbg("MinTime = %d.\n", CONFIG_WDT_MINTIME);
+ ret = ioctl(fd, WDIOC_MINTIME, (unsigned long)CONFIG_WDT_MINTIME);
+ if (ret < 0)
+ {
+ wdgdbg("ioctl(WDIOC_MINTIME) failed: %d\n", errno);
+ goto errout_with_dev;
+ }
+
+ /* Start Kicker task */
+
+#if defined(CONFIG_WDT_THREAD)
+ sched_lock();
+
+ int taskid = KERNEL_THREAD(CONFIG_WDT_THREAD_NAME,
+ CONFIG_WDT_THREAD_PRIORITY,
+ CONFIG_WDT_THREAD_STACKSIZE,
+ (main_t)wdog_daemon, (FAR char * const *)NULL);
+
+ ASSERT(taskid > 0);
+ sched_unlock();
+#endif
+ return OK;
+errout_with_dev:
+ close(fd);
+errout:
+ return ERROR;
+#else
+ return -ENODEV;
+#endif
+}
+
+#endif /* CONFIG_WATCHDOG */