diff --git a/ChangeLog b/ChangeLog index d19e008842..67dd3c6c95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5078,3 +5078,10 @@ * configs/arduino-due: Complete the basic board configuration and integrate this into the configuration and build system. The Arduino Due is now ready to begin test (2013-6-17). + * configs/arduino-due/nsh: Add an NSH configuration for the Arduino + Due. Both the OS test and NSH configuration are now functional + (2013-6-28). + * configs/arduino-due/src: Add support for the "L" LED (2013-6-28). + * arch/arm/src/sam34/sam_allocateheap.c: Clocking must be applied + to the SMC module for the 3X and 3A family in order for the NFC + SRAM to be functional (2013-6-28). diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index a0adc81135..e448977b24 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -2583,8 +2583,8 @@ nsh>

@@ -3100,6 +3100,7 @@ Mem: 29232 5920 23312 23312 STATUS: As of this writing, the basic port is code complete and fully verified configurations exist for the basic NuttX OS test and for the NuttShell NSH). The first fully functional SAM4S Xplained port was released in NuttX-6.28. + Support for the on-board 1MB SRAM was added in NuttX-6.29.

diff --git a/arch/arm/src/sam34/chip/sam3x_memorymap.h b/arch/arm/src/sam34/chip/sam3x_memorymap.h index 47ce5d8310..4cad06dc06 100644 --- a/arch/arm/src/sam34/chip/sam3x_memorymap.h +++ b/arch/arm/src/sam34/chip/sam3x_memorymap.h @@ -65,7 +65,7 @@ /* Internal SRAM memory region */ #define SAM_INTSRAM0_BASE 0x20000000 /* 0x20000000-0x2007ffff: Internal SRAM 0 */ -#define SAM_INTSRAM1_BASE 0x20080000 /* 0x20080000-0x200fffff: Internal SRAM 0 */ +#define SAM_INTSRAM1_BASE 0x20080000 /* 0x20080000-0x200fffff: Internal SRAM 1 */ #define SAM_NFCSRAM_BASE 0x20100000 /* 0x20100000-0x2017ffff: NAND FLASH controller (SRAM) */ #define SAM_UOTGHSRAM_BASE 0x20180000 /* 0x20100000-0x201fffff: UOTGHS controller (DMA) */ /* 0x20200000-0x201fffff: Undefined */ diff --git a/arch/arm/src/sam34/sam_allocateheap.c b/arch/arm/src/sam34/sam_allocateheap.c index 763a9ba198..93fae363db 100644 --- a/arch/arm/src/sam34/sam_allocateheap.c +++ b/arch/arm/src/sam34/sam_allocateheap.c @@ -53,6 +53,7 @@ #include "chip.h" #include "sam_mpuinit.h" +#include "sam_periphclks.h" /**************************************************************************** * Private Definitions @@ -317,6 +318,15 @@ void up_addregion(void) #endif /* HAVE_SRAM1_REGION */ #ifdef HAVE_NFCSRAM_REGION +#if defined(CONFIG_ARCH_CHIP_SAM3X) || defined(CONFIG_ARCH_CHIP_SAM3A) + /* In the 3X/3A family I note that clocking must appled to the SMC module + * in order for the NFCS SRAM to be functional. I don't recall such an + * issue with the 3U. + */ + + sam_smc_enableclk(); +#endif + /* Allow user access to the heap memory */ sam_mpu_uheap(SAM_NFCSRAM_BASE, SAM34_NFCSRAM_SIZE); diff --git a/configs/arduino-due/README.txt b/configs/arduino-due/README.txt index 03cf58b43b..6ecba490cb 100644 --- a/configs/arduino-due/README.txt +++ b/configs/arduino-due/README.txt @@ -313,14 +313,17 @@ Buttons and LEDs LEDs ---- - There are two user-controllable LEDs on board the Arduino Due board: + There are three user-controllable LEDs on board the Arduino Due board: LED GPIO ---------------- ----- + L Amber LED PB27 TX Yellow LED PA21 RX Yellow LED PC30 - Both are pulled high and can be illuminated by driving the corresponding + LED L is connected to ground and can be illuminated by driving the PB27 + output high. The TX and RX LEDs are pulled high and can be illuminated by + driving the corresponding GPIO output to low. These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is @@ -328,23 +331,24 @@ Buttons and LEDs include/board.h and src/sam_leds.c. The LEDs are used to encode OS-related events as follows: - SYMBOL Meaning LED state - RX TX - ------------------- ----------------------- -------- -------- - LED_STARTED NuttX has been started OFF OFF - LED_HEAPALLOCATE Heap has been allocated OFF OFF - LED_IRQSENABLED Interrupts enabled OFF OFF - LED_STACKCREATED Idle stack created ON OFF - LED_INIRQ In an interrupt No change - LED_SIGNAL In a signal handler No change - LED_ASSERTION An assertion failed No change - LED_PANIC The system has crashed OFF Blinking - LED_IDLE MCU is is sleep mode Not used - - Thus if RX is statically on, NuttX has successfully booted and is, - apparently, running normmally. If TX is flashing at approximately - 2Hz, then a fatal error has been detected and the system has halted. + SYMBOL MEANING LED STATE + L TX RX + ------------------- ----------------------- -------- -------- -------- + LED_STARTED NuttX has been started OFF OFF OFF + LED_HEAPALLOCATE Heap has been allocated OFF OFF OFF + LED_IRQSENABLED Interrupts enabled OFF OFF OFF + LED_STACKCREATED Idle stack created ON OFF OFF + LED_INIRQ In an interrupt N/C GLOW OFF + LED_SIGNAL In a signal handler N/C GLOW OFF + LED_ASSERTION An assertion failed N/C GLOW OFF + LED_PANIC The system has crashed N/C N/C Blinking + LED_IDLE MCU is is sleep mode ------ Not used -------- + Thus if LED L is statically on, NuttX has successfully booted and is, + apparently, running normmally. If LED RX is glowing, then NuttX is + handling interupts (and also signals and assertions). If TX is flashing + at approximately 2Hz, then a fatal error has been detected and the system + has halted. Serial Consoles ^^^^^^^^^^^^^^^ diff --git a/configs/arduino-due/include/board.h b/configs/arduino-due/include/board.h index 5161cbe600..c76aad5cd7 100644 --- a/configs/arduino-due/include/board.h +++ b/configs/arduino-due/include/board.h @@ -141,25 +141,30 @@ #define BOARD_FWS 4 /* LED definitions ******************************************************************/ -/* There are two user-controllable LEDs on board the Arduino Due board: +/* There are three user-controllable LEDs on board the Arduino Due board: * * LED GPIO * ---------------- ----- + * L Amber LED PB27 * TX Yellow LED PA21 * RX Yellow LED PC30 * - * Both are pulled high and can be illuminated by driving the corresponding + * LED L is connected to ground and can be illuminated by driving the PB27 + * output high. The TX and RX LEDs are pulled high and can be illuminated by + * driving the corresponding * GPIO output to low. */ /* LED index values for use with sam_setled() */ -#define BOARD_LED_RX 0 -#define BOARD_LED_TX 1 -#define BOARD_NLEDS 2 +#define BOARD_LED_L 0 +#define BOARD_LED_RX 1 +#define BOARD_LED_TX 2 +#define BOARD_NLEDS 3 /* LED bits for use with sam_setleds() */ +#define BOARD_LED_L_BIT (1 << BOARD_LED_L) #define BOARD_LED_RX_BIT (1 << BOARD_LED_RX) #define BOARD_LED_TX_BIT (1 << BOARD_LED_TX) @@ -168,22 +173,23 @@ * include/board.h and src/sam_leds.c. The LEDs are used to encode OS-related * events as follows: * - * SYMBOL Val Meaning LED state - * RX TX - * ------------------- --- ----------------------- -------- --------- */ -#define LED_STARTED 0 /* NuttX has been started OFF OFF */ -#define LED_HEAPALLOCATE 0 /* Heap has been allocated OFF OFF */ -#define LED_IRQSENABLED 0 /* Interrupts enabled OFF OFF */ -#define LED_STACKCREATED 1 /* Idle stack created ON OFF */ -#define LED_INIRQ 2 /* In an interrupt No change */ -#define LED_SIGNAL 2 /* In a signal handler No change */ -#define LED_ASSERTION 2 /* An assertion failed No change */ -#define LED_PANIC 3 /* The system has crashed OFF Blinking */ -#undef LED_IDLE /* MCU is is sleep mode Not used */ + * SYMBOL MEANING LED STATE + * L TX RX + * ----------------------- -------------------------- -------- -------- -------- */ +#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */ +#define LED_HEAPALLOCATE 0 /* Heap has been allocated OFF OFF OFF */ +#define LED_IRQSENABLED 0 /* Interrupts enabled OFF OFF OFF */ +#define LED_STACKCREATED 1 /* Idle stack created ON OFF OFF */ +#define LED_INIRQ 2 /* In an interrupt N/C GLOW OFF */ +#define LED_SIGNAL 2 /* In a signal handler N/C GLOW OFF */ +#define LED_ASSERTION 2 /* An assertion failed N/C GLOW OFF */ +#define LED_PANIC 3 /* The system has crashed N/C N/C Blinking */ +#define LED_PANIC 3 /* MCU is is sleep mode ------ Not used -------- */ -/* Thus if RX is statically on, NuttX has successfully booted and is, - * apparently, running normmally. If TX is flashing at approximately - * 2Hz, then a fatal error has been detected and the system has halted. +/* Thus if LED L is statically on, NuttX has successfully booted and is, + * apparently, running normmally. If LED RX is glowing, then NuttX is + * handling interupts (and also signals and assertions). If TX is flashing + * at approximately 2Hz, then a fatal error has been detected and the system */ /* Button definitions ***************************************************************/ diff --git a/configs/arduino-due/nsh/Make.defs b/configs/arduino-due/nsh/Make.defs new file mode 100644 index 0000000000..d5a6cf3be0 --- /dev/null +++ b/configs/arduino-due/nsh/Make.defs @@ -0,0 +1,107 @@ +############################################################################ +# configs/arduino-due/nsh/Make.defs +# +# Copyright (C) 2013 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +include ${TOPDIR}/.config +include ${TOPDIR}/tools/Config.mk +include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs + +ifeq ($(WINTOOL),y) + # Windows-native toolchains + DIRLINK = $(TOPDIR)/tools/copydir.sh + DIRUNLINK = $(TOPDIR)/tools/unlink.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh + ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" + ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}" + ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/ld.script}" + MAXOPTIMIZATION = -O2 +else + # Linux/Cygwin-native toolchain + MKDEP = $(TOPDIR)/tools/mkdeps.sh + ARCHINCLUDES = -I. -isystem $(TOPDIR)/include + ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx + ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/ld.script +endif + +CC = $(CROSSDEV)gcc +CXX = $(CROSSDEV)g++ +CPP = $(CROSSDEV)gcc -E +LD = $(CROSSDEV)ld +AR = $(CROSSDEV)ar rcs +NM = $(CROSSDEV)nm +OBJCOPY = $(CROSSDEV)objcopy +OBJDUMP = $(CROSSDEV)objdump + +ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'} +ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1} + +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + ARCHOPTIMIZATION = -g +else + ARCHOPTIMIZATION = $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer +endif + +ARCHCFLAGS = -fno-builtin +ARCHCXXFLAGS = -fno-builtin -fno-exceptions +ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow +ARCHWARNINGSXX = -Wall -Wshadow +ARCHDEFINES = +ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10 + +CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe +CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) +CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe +CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS) +CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) +AFLAGS = $(CFLAGS) -D__ASSEMBLY__ + +NXFLATLDFLAGS1 = -r -d -warn-common +NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections +LDNXFLATFLAGS = -e main -s 2048 + +OBJEXT = .o +LIBEXT = .a +EXEEXT = + +ifneq ($(CROSSDEV),arm-nuttx-elf-) + LDFLAGS += -nostartfiles -nodefaultlibs +endif +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + LDFLAGS += -g +endif + +HOSTCC = gcc +HOSTINCLUDES = -I. +HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -g -pipe +HOSTLDFLAGS = diff --git a/configs/arduino-due/nsh/defconfig b/configs/arduino-due/nsh/defconfig new file mode 100644 index 0000000000..8318e72da6 --- /dev/null +++ b/configs/arduino-due/nsh/defconfig @@ -0,0 +1,700 @@ +# +# Automatically generated file; DO NOT EDIT. +# Nuttx/ Configuration +# +CONFIG_NUTTX_NEWCONFIG=y + +# +# Build Setup +# +# CONFIG_EXPERIMENTAL is not set +CONFIG_HOST_LINUX=y +# CONFIG_HOST_OSX is not set +# CONFIG_HOST_WINDOWS is not set +# CONFIG_HOST_OTHER is not set + +# +# Build Configuration +# +# CONFIG_APPS_DIR="../apps" +# CONFIG_BUILD_2PASS is not set + +# +# Binary Output Formats +# +# CONFIG_RRLOAD_BINARY is not set +# CONFIG_INTELHEX_BINARY is not set +# CONFIG_MOTOROLA_SREC is not set +CONFIG_RAW_BINARY=y + +# +# Customize Header Files +# +# CONFIG_ARCH_STDBOOL_H is not set +# CONFIG_ARCH_MATH_H is not set +# CONFIG_ARCH_FLOAT_H is not set +# CONFIG_ARCH_STDARG_H is not set + +# +# Debug Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_SYMBOLS is not set + +# +# System Type +# +# CONFIG_ARCH_8051 is not set +CONFIG_ARCH_ARM=y +# CONFIG_ARCH_AVR is not set +# CONFIG_ARCH_HC is not set +# CONFIG_ARCH_MIPS is not set +# CONFIG_ARCH_RGMP is not set +# CONFIG_ARCH_SH is not set +# CONFIG_ARCH_SIM is not set +# CONFIG_ARCH_X86 is not set +# CONFIG_ARCH_Z16 is not set +# CONFIG_ARCH_Z80 is not set +CONFIG_ARCH="arm" + +# +# ARM Options +# +# CONFIG_ARCH_CHIP_C5471 is not set +# CONFIG_ARCH_CHIP_CALYPSO is not set +# CONFIG_ARCH_CHIP_DM320 is not set +# CONFIG_ARCH_CHIP_IMX is not set +# CONFIG_ARCH_CHIP_KINETIS is not set +# CONFIG_ARCH_CHIP_KL is not set +# CONFIG_ARCH_CHIP_LM is not set +# CONFIG_ARCH_CHIP_LPC17XX is not set +# CONFIG_ARCH_CHIP_LPC214X is not set +# CONFIG_ARCH_CHIP_LPC2378 is not set +# CONFIG_ARCH_CHIP_LPC31XX is not set +# CONFIG_ARCH_CHIP_LPC43XX is not set +# CONFIG_ARCH_CHIP_NUC1XX is not set +CONFIG_ARCH_CHIP_SAM34=y +# CONFIG_ARCH_CHIP_STM32 is not set +# CONFIG_ARCH_CHIP_STR71X is not set +CONFIG_ARCH_CORTEXM3=y +CONFIG_ARCH_FAMILY="armv7-m" +CONFIG_ARCH_CHIP="sam34" +# CONFIG_ARMV7M_USEBASEPRI is not set +# CONFIG_ARCH_HAVE_FPU is not set +CONFIG_ARCH_HAVE_MPU=y +# CONFIG_ARMV7M_MPU is not set + +# +# ARMV7M Configuration Options +# +CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y +# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set +# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set +# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set +CONFIG_ARMV7M_OABI_TOOLCHAIN=y +# CONFIG_GPIO_IRQ is not set + +# +# AT91SAM3/4 Configuration Options +# +# CONFIG_ARCH_CHIP_ATSAM3U4E is not set +CONFIG_ARCH_CHIP_ATSAM3X8E=y +# CONFIG_ARCH_CHIP_ATSAM3X8C is not set +# CONFIG_ARCH_CHIP_ATSAM3X4E is not set +# CONFIG_ARCH_CHIP_ATSAM3X4C is not set +# CONFIG_ARCH_CHIP_ATSAM3A8C is not set +# CONFIG_ARCH_CHIP_ATSAM3A4C is not set +# CONFIG_ARCH_CHIP_ATSAM4LC2C is not set +# CONFIG_ARCH_CHIP_ATSAM4LC2B is not set +# CONFIG_ARCH_CHIP_ATSAM4LC2A is not set +# CONFIG_ARCH_CHIP_ATSAM4LC4C is not set +# CONFIG_ARCH_CHIP_ATSAM4LC4B is not set +# CONFIG_ARCH_CHIP_ATSAM4LC4A is not set +# CONFIG_ARCH_CHIP_ATSAM4LS2C is not set +# CONFIG_ARCH_CHIP_ATSAM4LS2B is not set +# CONFIG_ARCH_CHIP_ATSAM4LS2A is not set +# CONFIG_ARCH_CHIP_ATSAM4LS4C is not set +# CONFIG_ARCH_CHIP_ATSAM4LS4B is not set +# CONFIG_ARCH_CHIP_ATSAM4LS4A is not set +# CONFIG_ARCH_CHIP_ATSAM4SD32C is not set +# CONFIG_ARCH_CHIP_ATSAM4SD32B is not set +# CONFIG_ARCH_CHIP_ATSAM4SD16C is not set +# CONFIG_ARCH_CHIP_ATSAM4SD16B is not set +# CONFIG_ARCH_CHIP_ATSAM4SA16C is not set +# CONFIG_ARCH_CHIP_ATSAM4SA16B is not set +# CONFIG_ARCH_CHIP_ATSAM4S16C is not set +# CONFIG_ARCH_CHIP_ATSAM4S16B is not set +# CONFIG_ARCH_CHIP_ATSAM4S8C is not set +# CONFIG_ARCH_CHIP_ATSAM4S8B is not set +# CONFIG_ARCH_CHIP_SAM3U is not set +CONFIG_ARCH_CHIP_SAM3X=y +# CONFIG_ARCH_CHIP_SAM3A is not set +# CONFIG_ARCH_CHIP_SAM4L is not set +# CONFIG_ARCH_CHIP_SAM4S is not set + +# +# AT91SAM3/4 Peripheral Support +# +# CONFIG_SAM34_SPI0 is not set +# CONFIG_SAM34_SPI1 is not set +# CONFIG_SAM34_SSC is not set +# CONFIG_SAM34_TC0 is not set +# CONFIG_SAM34_TC1 is not set +# CONFIG_SAM34_TC2 is not set +# CONFIG_SAM34_TC3 is not set +# CONFIG_SAM34_TC4 is not set +# CONFIG_SAM34_TC5 is not set +# CONFIG_SAM34_TC6 is not set +# CONFIG_SAM34_TC7 is not set +# CONFIG_SAM34_TC8 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=y +# CONFIG_SAM34_USART0 is not set +# CONFIG_SAM34_USART1 is not set +# CONFIG_SAM34_USART2 is not set +# CONFIG_SAM34_USART3 is not set +# CONFIG_SAM34_ADC12B is not set +# CONFIG_SAM34_DACC is not set +# CONFIG_SAM34_TRNG is not set +# CONFIG_SAM34_EMAC is not set +# CONFIG_SAM34_CAN0 is not set +# CONFIG_SAM34_CAN1 is not set +# CONFIG_SAM34_SMC is not set +# CONFIG_SAM34_SDRAMC is not set +# CONFIG_SAM34_DMA is not set +# CONFIG_SAM34_UOTGHS is not set +# CONFIG_SAM34_RTC is not set +# CONFIG_SAM34_RTT is not set +# CONFIG_SAM34_WDT is not set +# CONFIG_SAM34_HSMCI is not set + +# +# AT91SAM3/4 USART Configuration +# + +# +# AT91SAM3/4 GPIO Interrupt Configuration +# + +# +# External Memory Configuration +# +CONFIG_ARCH_HAVE_EXTNAND=y +CONFIG_ARCH_HAVE_EXTNOR=y +CONFIG_ARCH_HAVE_EXTSRAM0=y +CONFIG_ARCH_HAVE_EXTSRAM1=y +# CONFIG_ARCH_EXTNAND is not set +# CONFIG_ARCH_EXTNOR is not set +# CONFIG_ARCH_EXTSRAM0 is not set +# CONFIG_ARCH_EXTSRAM1 is not set + +# +# Architecture Options +# +# CONFIG_ARCH_NOINTC is not set +# CONFIG_ARCH_VECNOTIRQ is not set +# CONFIG_ARCH_DMA is not set +CONFIG_ARCH_IRQPRIO=y +# CONFIG_CUSTOM_STACK is not set +# CONFIG_ADDRENV is not set +CONFIG_ARCH_HAVE_VFORK=y +CONFIG_ARCH_STACKDUMP=y +# CONFIG_ENDIAN_BIG is not set +CONFIG_ARCH_HAVE_RAMFUNCS=y +# CONFIG_ARCH_RAMFUNCS is not set +CONFIG_ARCH_HAVE_RAMVECTORS=y +# CONFIG_ARCH_RAMVECTORS is not set + +# +# Board Settings +# +CONFIG_BOARD_LOOPSPERMSEC=8720 +# CONFIG_ARCH_CALIBRATION is not set +CONFIG_DRAM_START=0x20000000 +CONFIG_DRAM_SIZE=65536 +CONFIG_ARCH_HAVE_INTERRUPTSTACK=y +CONFIG_ARCH_INTERRUPTSTACK=0 + +# +# Boot options +# +# CONFIG_BOOT_RUNFROMEXTSRAM is not set +CONFIG_BOOT_RUNFROMFLASH=y +# CONFIG_BOOT_RUNFROMISRAM is not set +# CONFIG_BOOT_RUNFROMSDRAM is not set +# CONFIG_BOOT_COPYTORAM is not set + +# +# Board Selection +# +CONFIG_ARCH_BOARD_ARDUINO_DUE=y +# CONFIG_ARCH_BOARD_CUSTOM is not set +CONFIG_ARCH_BOARD="arduino-due" + +# +# Common Board Options +# +CONFIG_ARCH_HAVE_LEDS=y +CONFIG_ARCH_LEDS=y +CONFIG_NSH_MMCSDMINOR=0 + +# +# Board-Specific Options +# + +# +# RTOS Features +# +# CONFIG_BOARD_INITIALIZE is not set +CONFIG_MSEC_PER_TICK=10 +CONFIG_RR_INTERVAL=200 +# CONFIG_SCHED_INSTRUMENTATION is not set +CONFIG_TASK_NAME_SIZE=0 +# CONFIG_SCHED_HAVE_PARENT is not set +# CONFIG_JULIAN_TIME is not set +CONFIG_START_YEAR=2013 +CONFIG_START_MONTH=6 +CONFIG_START_DAY=28 +CONFIG_DEV_CONSOLE=y +# CONFIG_MUTEX_TYPES is not set +# CONFIG_PRIORITY_INHERITANCE is not set +# CONFIG_FDCLONE_DISABLE is not set +# CONFIG_FDCLONE_STDIO is not set +CONFIG_SDCLONE_DISABLE=y +CONFIG_SCHED_WAITPID=y +# 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 +# +CONFIG_SIG_SIGUSR1=1 +CONFIG_SIG_SIGUSR2=2 +CONFIG_SIG_SIGALARM=3 +CONFIG_SIG_SIGCONDTIMEDOUT=16 + +# +# Sizes of configurable things (0 disables) +# +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=4 +CONFIG_MQ_MAXMSGSIZE=32 +CONFIG_MAX_WDOGPARMS=2 +CONFIG_PREALLOC_WDOGS=4 +CONFIG_PREALLOC_TIMERS=4 + +# +# Stack and heap information +# +CONFIG_IDLETHREAD_STACKSIZE=1024 +CONFIG_USERMAIN_STACKSIZE=2048 +CONFIG_PTHREAD_STACK_MIN=256 +CONFIG_PTHREAD_STACK_DEFAULT=2048 + +# +# Device Drivers +# +CONFIG_DISABLE_POLL=y +CONFIG_DEV_NULL=y +# CONFIG_DEV_ZERO is not set +# CONFIG_LOOP is not set +# CONFIG_RAMDISK is not set +# CONFIG_CAN is not set +# CONFIG_PWM is not set +# CONFIG_I2C is not set +# CONFIG_SPI is not set +# CONFIG_RTC is not set +# CONFIG_WATCHDOG is not set +# CONFIG_ANALOG is not set +# CONFIG_AUDIO_DEVICES is not set +# CONFIG_BCH is not set +# CONFIG_INPUT is not set +# CONFIG_LCD is not set +# CONFIG_MMCSD is not set +# CONFIG_MTD is not set +# CONFIG_PIPES is not set +# CONFIG_PM is not set +# CONFIG_POWER is not set +# CONFIG_SENSORS is not set +CONFIG_SERIAL=y +# CONFIG_DEV_LOWCONSOLE is not set +# CONFIG_16550_UART is not set +CONFIG_ARCH_HAVE_UART0=y +CONFIG_MCU_SERIAL=y +CONFIG_STANDARD_SERIAL=y +CONFIG_UART0_SERIAL_CONSOLE=y +# CONFIG_NO_SERIAL_CONSOLE is not set + +# +# UART0 Configuration +# +CONFIG_UART0_RXBUFSIZE=256 +CONFIG_UART0_TXBUFSIZE=256 +CONFIG_UART0_BAUD=115200 +CONFIG_UART0_BITS=8 +CONFIG_UART0_PARITY=0 +CONFIG_UART0_2STOP=0 +# CONFIG_UART0_IFLOWCONTROL is not set +# CONFIG_UART0_OFLOWCONTROL is not set +# CONFIG_SERIAL_IFLOWCONTROL is not set +# CONFIG_SERIAL_OFLOWCONTROL is not set +# CONFIG_USBDEV is not set +# CONFIG_USBHOST is not set +# CONFIG_WIRELESS is not set + +# +# System Logging Device Options +# + +# +# System Logging +# +# CONFIG_RAMLOG is not set + +# +# Networking Support +# +# CONFIG_NET is not set + +# +# File Systems +# + +# +# File system configuration +# +CONFIG_DISABLE_MOUNTPOINT=y +# CONFIG_FS_RAMMAP is not set +# CONFIG_FS_BINFS is not set + +# +# System Logging +# +# CONFIG_SYSLOG_ENABLE is not set +# CONFIG_SYSLOG is not set + +# +# Graphics Support +# +# CONFIG_NX is not set + +# +# Memory Management +# +# CONFIG_MM_MULTIHEAP is not set +# CONFIG_MM_SMALL is not set +CONFIG_MM_REGIONS=3 +# CONFIG_GRAN is not set + +# +# Audio Support +# +# CONFIG_AUDIO is not set + +# +# Binary Formats +# +# CONFIG_BINFMT_DISABLE is not set +# CONFIG_NXFLAT is not set +# CONFIG_ELF is not set +CONFIG_BUILTIN=y +# CONFIG_PIC is not set +# CONFIG_SYMTAB_ORDEREDBYNAME is not set + +# +# Library Routines +# + +# +# Standard C Library Options +# +CONFIG_STDIO_BUFFER_SIZE=64 +CONFIG_STDIO_LINEBUFFER=y +CONFIG_NUNGET_CHARS=2 +# CONFIG_LIBM is not set +# CONFIG_NOPRINTF_FIELDWIDTH is not set +# CONFIG_LIBC_FLOATINGPOINT is not set +CONFIG_LIB_RAND_ORDER=1 +# CONFIG_EOL_IS_CR is not set +# CONFIG_EOL_IS_LF is not set +# CONFIG_EOL_IS_BOTH_CRLF is not set +CONFIG_EOL_IS_EITHER_CRLF=y +# CONFIG_LIBC_EXECFUNCS is not set +CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024 +CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048 +# CONFIG_LIBC_STRERROR is not set +# CONFIG_LIBC_PERROR_STDOUT is not set +CONFIG_ARCH_LOWPUTC=y +CONFIG_LIB_SENDFILE_BUFSIZE=512 +# CONFIG_ARCH_ROMGETC is not set +# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set + +# +# Non-standard Library Support +# +# CONFIG_SCHED_WORKQUEUE is not set +# CONFIG_LIB_KBDCODEC is not set +# CONFIG_LIB_SLCDCODEC is not set + +# +# Basic CXX Support +# +# CONFIG_C99_BOOL8 is not set +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_CXX_NEWLONG=y + +# +# uClibc++ Standard C++ Library +# +# CONFIG_UCLIBCXX is not set + +# +# Application Configuration +# + +# +# Built-In Applications +# +CONFIG_BUILTIN_PROXY_STACKSIZE=1024 + +# +# Examples +# +# CONFIG_EXAMPLES_BUTTONS is not set +# CONFIG_EXAMPLES_CAN is not set +# CONFIG_EXAMPLES_COMPOSITE is not set +# CONFIG_EXAMPLES_CXXTEST is not set +# CONFIG_EXAMPLES_DHCPD is not set +# CONFIG_EXAMPLES_ELF is not set +# CONFIG_EXAMPLES_FTPC is not set +# CONFIG_EXAMPLES_FTPD is not set +# CONFIG_EXAMPLES_HELLO is not set +# CONFIG_EXAMPLES_HELLOXX is not set +# CONFIG_EXAMPLES_JSON is not set +# 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 +# CONFIG_EXAMPLES_NRF24L01TERM is not set +CONFIG_EXAMPLES_NSH=y +CONFIG_EXAMPLES_NSH_CXXINITIALIZE=y +# CONFIG_EXAMPLES_NULL is not set +# CONFIG_EXAMPLES_NX is not set +# CONFIG_EXAMPLES_NXCONSOLE is not set +# CONFIG_EXAMPLES_NXFFS is not set +# CONFIG_EXAMPLES_NXFLAT is not set +# CONFIG_EXAMPLES_NXHELLO is not set +# CONFIG_EXAMPLES_NXIMAGE is not set +# CONFIG_EXAMPLES_NXLINES is not set +# CONFIG_EXAMPLES_NXTEXT is not set +# CONFIG_EXAMPLES_OSTEST is not set +# CONFIG_EXAMPLES_PASHELLO is not set +# CONFIG_EXAMPLES_PIPE is not set +# CONFIG_EXAMPLES_POSIXSPAWN is not set +# CONFIG_EXAMPLES_QENCODER is not set +# CONFIG_EXAMPLES_RGMP is not set +# CONFIG_EXAMPLES_ROMFS is not set +# CONFIG_EXAMPLES_SENDMAIL is not set +# CONFIG_EXAMPLES_SERLOOP is not set +# CONFIG_EXAMPLES_SLCD is not set +# CONFIG_EXAMPLES_SMART_TEST is not set +# CONFIG_EXAMPLES_SMART is not set +# CONFIG_EXAMPLES_TCPECHO is not set +# CONFIG_EXAMPLES_TELNETD is not set +# CONFIG_EXAMPLES_THTTPD is not set +# CONFIG_EXAMPLES_TIFF is not set +# CONFIG_EXAMPLES_TOUCHSCREEN is not set +# CONFIG_EXAMPLES_UDP is not set +# CONFIG_EXAMPLES_UIP is not set +# CONFIG_EXAMPLES_USBSERIAL is not set +# CONFIG_EXAMPLES_USBMSC is not set +# CONFIG_EXAMPLES_USBTERM is not set +# CONFIG_EXAMPLES_WATCHDOG is not set + +# +# Graphics Support +# +# CONFIG_TIFF is not set + +# +# Interpreters +# +# CONFIG_INTERPRETERS_FICL is not set +# CONFIG_INTERPRETERS_PCODE is not set + +# +# Network Utilities +# + +# +# Networking Utilities +# +# CONFIG_NETUTILS_CODECS is not set +# CONFIG_NETUTILS_DHCPC is not set +# CONFIG_NETUTILS_DHCPD is not set +# CONFIG_NETUTILS_FTPC is not set +# CONFIG_NETUTILS_FTPD is not set +# CONFIG_NETUTILS_JSON is not set +# CONFIG_NETUTILS_RESOLV is not set +# CONFIG_NETUTILS_SMTP is not set +# CONFIG_NETUTILS_TELNETD is not set +# CONFIG_NETUTILS_TFTPC is not set +# CONFIG_NETUTILS_THTTPD is not set +# CONFIG_NETUTILS_UIPLIB is not set +# CONFIG_NETUTILS_WEBCLIENT is not set + +# +# FreeModBus +# +# CONFIG_MODBUS is not set + +# +# NSH Library +# +CONFIG_NSH_LIBRARY=y +CONFIG_NSH_BUILTIN_APPS=y + +# +# Disable Individual commands +# +# CONFIG_NSH_DISABLE_CAT is not set +# CONFIG_NSH_DISABLE_CD is not set +# CONFIG_NSH_DISABLE_CP is not set +# CONFIG_NSH_DISABLE_DD is not set +# CONFIG_NSH_DISABLE_ECHO is not set +# CONFIG_NSH_DISABLE_EXEC is not set +# CONFIG_NSH_DISABLE_EXIT is not set +# CONFIG_NSH_DISABLE_FREE is not set +# CONFIG_NSH_DISABLE_GET is not set +# CONFIG_NSH_DISABLE_HELP is not set +# CONFIG_NSH_DISABLE_HEXDUMP is not set +# CONFIG_NSH_DISABLE_IFCONFIG is not set +# CONFIG_NSH_DISABLE_KILL is not set +# CONFIG_NSH_DISABLE_LOSETUP is not set +# CONFIG_NSH_DISABLE_LS is not set +# CONFIG_NSH_DISABLE_MB is not set +# CONFIG_NSH_DISABLE_MKDIR is not set +# CONFIG_NSH_DISABLE_MKFATFS is not set +# CONFIG_NSH_DISABLE_MKFIFO is not set +# CONFIG_NSH_DISABLE_MKRD is not set +# CONFIG_NSH_DISABLE_MH is not set +# CONFIG_NSH_DISABLE_MOUNT is not set +# CONFIG_NSH_DISABLE_MW is not set +# CONFIG_NSH_DISABLE_NSFMOUNT is not set +# CONFIG_NSH_DISABLE_PS is not set +# CONFIG_NSH_DISABLE_PING is not set +# CONFIG_NSH_DISABLE_PUT is not set +# CONFIG_NSH_DISABLE_PWD is not set +# CONFIG_NSH_DISABLE_RM is not set +# CONFIG_NSH_DISABLE_RMDIR is not set +# CONFIG_NSH_DISABLE_SET is not set +# CONFIG_NSH_DISABLE_SH is not set +# CONFIG_NSH_DISABLE_SLEEP is not set +# CONFIG_NSH_DISABLE_TEST is not set +# CONFIG_NSH_DISABLE_UMOUNT is not set +# CONFIG_NSH_DISABLE_UNSET is not set +# CONFIG_NSH_DISABLE_USLEEP is not set +# CONFIG_NSH_DISABLE_WGET is not set +# CONFIG_NSH_DISABLE_XD is not set + +# +# Configure Command Options +# +# CONFIG_NSH_CMDOPT_DF_H is not set +CONFIG_NSH_CODECS_BUFSIZE=128 +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=80 +CONFIG_NSH_MAXARGUMENTS=6 +CONFIG_NSH_NESTDEPTH=3 +# CONFIG_NSH_DISABLESCRIPT is not set +# CONFIG_NSH_DISABLEBG is not set +CONFIG_NSH_CONSOLE=y + +# +# USB Trace Support +# +# CONFIG_NSH_CONDEV is not set +# CONFIG_NSH_ARCHINIT is not set + +# +# NxWidgets/NxWM +# + +# +# System NSH Add-Ons +# + +# +# Custom Free Memory Command +# +# CONFIG_SYSTEM_FREE is not set + +# +# I2C tool +# + +# +# FLASH Program Installation +# +# CONFIG_SYSTEM_INSTALL is not set + +# +# FLASH Erase-all Command +# + +# +# RAM test +# +# CONFIG_SYSTEM_RAMTEST is not set + +# +# readline() +# +CONFIG_SYSTEM_READLINE=y +CONFIG_READLINE_ECHO=y + +# +# Power Off +# +# CONFIG_SYSTEM_POWEROFF is not set + +# +# RAMTRON +# +# CONFIG_SYSTEM_RAMTRON is not set + +# +# SD Card +# +# CONFIG_SYSTEM_SDCARD is not set + +# +# Sysinfo +# +# CONFIG_SYSTEM_SYSINFO is not set + +# +# USB Monitor +# diff --git a/configs/arduino-due/nsh/setenv.sh b/configs/arduino-due/nsh/setenv.sh new file mode 100755 index 0000000000..9e7a288df2 --- /dev/null +++ b/configs/arduino-due/nsh/setenv.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# configs/arduino-due/nsh/setenv.sh +# +# Copyright (C) 2013 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# + +if [ "$_" = "$0" ] ; then + echo "You must source this script, not run it!" 1>&2 + exit 1 +fi + +WD=`pwd` +if [ ! -x "setenv.sh" ]; then + echo "This script must be executed from the top-level NuttX build directory" + exit 1 +fi + +if [ -z "${PATH_ORIG}" ]; then + export PATH_ORIG="${PATH}" +fi + +# This is the Cygwin path to the location where I installed the Atmel GCC +# toolchain under Windows. You will also have to edit this if you install +# this toolchain in any other location +#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/Atmel/Atmel Toolchain/ARM GCC/Native/4.7.3.99/arm-gnu-toolchain/bin" + +# This is the Cygwin path to the location where I installed the CodeSourcery +# toolchain under windows. You will also have to edit this if you install +# the CodeSourcery toolchain in any other location +#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin" + +# These are the Cygwin paths to the locations where I installed the Atollic +# toolchain under windows. You will also have to edit this if you install +# the Atollic toolchain in any other location. /usr/bin is added before +# the Atollic bin path because there is are binaries named gcc.exe and g++.exe +# at those locations as well. +#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin" +#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for STMicroelectronics STM32 Lite 2.3.0/ARMTools/bin" + +# This is the Cygwin path to the location where I build the buildroot +# toolchain. +export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin" + +# Add the path to the toolchain to the PATH varialble +export PATH="${TOOLCHAIN_BIN}:/sbin:/usr/sbin:${PATH_ORIG}" + +echo "PATH : ${PATH}" diff --git a/configs/arduino-due/ostest/defconfig b/configs/arduino-due/ostest/defconfig index fb6b4045f1..c8e7a96886 100644 --- a/configs/arduino-due/ostest/defconfig +++ b/configs/arduino-due/ostest/defconfig @@ -255,9 +255,9 @@ CONFIG_RR_INTERVAL=200 CONFIG_TASK_NAME_SIZE=0 # CONFIG_SCHED_HAVE_PARENT is not set # CONFIG_JULIAN_TIME is not set -CONFIG_START_YEAR=2009 -CONFIG_START_MONTH=9 -CONFIG_START_DAY=21 +CONFIG_START_YEAR=2013 +CONFIG_START_MONTH=6 +CONFIG_START_DAY=26 CONFIG_DEV_CONSOLE=y # CONFIG_MUTEX_TYPES is not set # CONFIG_PRIORITY_INHERITANCE is not set @@ -398,7 +398,7 @@ CONFIG_DISABLE_MOUNTPOINT=y # # CONFIG_MM_MULTIHEAP is not set # CONFIG_MM_SMALL is not set -CONFIG_MM_REGIONS=3 +CONFIG_MM_REGIONS=1 # CONFIG_GRAN is not set # diff --git a/configs/arduino-due/src/arduino-due.h b/configs/arduino-due/src/arduino-due.h index 860b526479..71a5d3c123 100644 --- a/configs/arduino-due/src/arduino-due.h +++ b/configs/arduino-due/src/arduino-due.h @@ -53,14 +53,17 @@ /************************************************************************************ * Pre-processor Definitions ************************************************************************************/ -/* There are two user-controllable LEDs on board the Arduino Due board: +/* There are three user-controllable LEDs on board the Arduino Due board: * * LED GPIO * ---------------- ----- + * L Amber LED PB27 * TX Yellow LED PA21 * RX Yellow LED PC30 * - * Both are pulled high and can be illuminated by driving the corresponding + * LED L is connected to ground and can be illuminated by driving the PB27 + * output high. The TX and RX LEDs are pulled high and can be illuminated by + * driving the corresponding * GPIO output to low. * * These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is @@ -68,24 +71,27 @@ * include/board.h and src/sam_leds.c. The LEDs are used to encode OS-related * events as follows: * - * SYMBOL Meaning LED state - * RX TX - * ------------------- ----------------------- -------- -------- - * LED_STARTED NuttX has been started OFF OFF - * LED_HEAPALLOCATE Heap has been allocated OFF OFF - * LED_IRQSENABLED Interrupts enabled OFF OFF - * LED_STACKCREATED Idle stack created ON OFF - * LED_INIRQ In an interrupt No change - * LED_SIGNAL In a signal handler No change - * LED_ASSERTION An assertion failed No change - * LED_PANIC The system has crashed OFF Blinking - * LED_IDLE MCU is is sleep mode Not used + * SYMBOL MEANING LED STATE + * L TX RX + * ------------------- ----------------------- -------- -------- -------- + * LED_STARTED NuttX has been started OFF OFF OFF + * LED_HEAPALLOCATE Heap has been allocated OFF OFF OFF + * LED_IRQSENABLED Interrupts enabled OFF OFF OFF + * LED_STACKCREATED Idle stack created ON OFF OFF + * LED_INIRQ In an interrupt N/C GLOW OFF + * LED_SIGNAL In a signal handler N/C GLOW OFF + * LED_ASSERTION An assertion failed N/C GLOW OFF + * LED_PANIC The system has crashed N/C N/C Blinking + * LED_IDLE MCU is is sleep mode ------ Not used -------- * - * Thus if RX is statically on, NuttX has successfully booted and is, - * apparently, running normmally. If TX is flashing at approximately - * 2Hz, then a fatal error has been detected and the system has halted. + * Thus if LED L is statically on, NuttX has successfully booted and is, + * apparently, running normmally. If LED RX is glowing, then NuttX is + * handling interupts (and also signals and assertions). If TX is flashing + * at approximately 2Hz, then a fatal error has been detected and the system */ +#define GPIO_LED_L (GPIO_OUTPUT | GPIO_CFG_PULLUP | GPIO_OUTPUT_CLEAR | \ + GPIO_PORT_PIOB | GPIO_PIN27) #define GPIO_LED_RX (GPIO_OUTPUT | GPIO_CFG_PULLUP | GPIO_OUTPUT_SET | \ GPIO_PORT_PIOC | GPIO_PIN30) #define GPIO_LED_TX (GPIO_OUTPUT | GPIO_CFG_PULLUP | GPIO_OUTPUT_SET | \ diff --git a/configs/arduino-due/src/sam_autoleds.c b/configs/arduino-due/src/sam_autoleds.c index c2ce23b674..e0d7302a8b 100644 --- a/configs/arduino-due/src/sam_autoleds.c +++ b/configs/arduino-due/src/sam_autoleds.c @@ -54,14 +54,17 @@ /**************************************************************************** * Definitions ****************************************************************************/ -/* There are two user-controllable LEDs on board the Arduino Due board: +/* There are three user-controllable LEDs on board the Arduino Due board: * * LED GPIO * ---------------- ----- + * L Amber LED PB27 * TX Yellow LED PA21 * RX Yellow LED PC30 * - * Both are pulled high and can be illuminated by driving the corresponding + * LED L is connected to ground and can be illuminated by driving the PB27 + * output high. The TX and RX LEDs are pulled high and can be illuminated by + * driving the corresponding * GPIO output to low. * * These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is @@ -69,22 +72,23 @@ * include/board.h and src/sam_leds.c. The LEDs are used to encode OS-related * events as follows: * - * SYMBOL Meaning LED state - * RX TX - * ------------------- ----------------------- -------- -------- - * LED_STARTED NuttX has been started OFF OFF - * LED_HEAPALLOCATE Heap has been allocated OFF OFF - * LED_IRQSENABLED Interrupts enabled OFF OFF - * LED_STACKCREATED Idle stack created ON OFF - * LED_INIRQ In an interrupt No change - * LED_SIGNAL In a signal handler No change - * LED_ASSERTION An assertion failed No change - * LED_PANIC The system has crashed OFF Blinking - * LED_IDLE MCU is is sleep mode Not used + * SYMBOL MEANING LED STATE + * L TX RX + * ------------------- ----------------------- -------- -------- -------- + * LED_STARTED NuttX has been started OFF OFF OFF + * LED_HEAPALLOCATE Heap has been allocated OFF OFF OFF + * LED_IRQSENABLED Interrupts enabled OFF OFF OFF + * LED_STACKCREATED Idle stack created ON OFF OFF + * LED_INIRQ In an interrupt N/C GLOW OFF + * LED_SIGNAL In a signal handler N/C GLOW OFF + * LED_ASSERTION An assertion failed N/C GLOW OFF + * LED_PANIC The system has crashed N/C N/C Blinking + * LED_IDLE MCU is is sleep mode ------ Not used -------- * - * Thus if RX is statically on, NuttX has successfully booted and is, - * apparently, running normmally. If TX is flashing at approximately - * 2Hz, then a fatal error has been detected and the system has halted. + * Thus if LED L is statically on, NuttX has successfully booted and is, + * apparently, running normmally. If LED RX is glowing, then NuttX is + * handling interupts (and also signals and assertions). If TX is flashing + * at approximately 2Hz, then a fatal error has been detected and the system */ /* CONFIG_DEBUG_LEDS enables debug output from this file (needs CONFIG_DEBUG @@ -119,6 +123,7 @@ void up_ledinit(void) { /* Configure RX and TX LED GPIOs for output */ + sam_configgpio(GPIO_LED_L); sam_configgpio(GPIO_LED_RX); sam_configgpio(GPIO_LED_TX); } @@ -129,29 +134,47 @@ void up_ledinit(void) void up_ledon(int led) { - bool rxledon = false; - bool txledon = false; - switch (led) { - case 0: /* LED_STARTED, LED_HEAPALLOCATE, LED_IRQSENABLED */ - break; - - case 1: /* LED_STACKCREATED */ - rxledon = true; - break; + /* 0: LED_STARTED, LED_HEAPALLOCATE, LED_IRQSENABLED: L=OFF TX=OFF + * RX=OFF + * + * Since the LEDs were initially all OFF and since this state only + * occurs one time, nothing need be done. + */ default: - case 2: /* LED_INIRQ, LED_SIGNAL, LED_ASSERTION */ - return; + case 0: + break; - case 3: /* LED_PANIC */ - txledon = true; + /* 1: LED_STACKCREATED: L=ON TX=OFF RX=OFF + * + * This case will also occur only once. Note that unlike the other + * LEDs, LED L is active high. + */ + + case 1: + sam_gpiowrite(GPIO_LED_L, true); + break; + + /* 2: LED_INIRQ, LED_SIGNAL, LED_ASSERTION: L=N/C TX=ON RX=N/C + * + * This case will occur many times. LED TX is active low. + */ + + case 2: + sam_gpiowrite(GPIO_LED_TX, false); + break; + + /* 3: LED_PANIC: L=N/X TX=N/C RX=ON + * + * This case will also occur many times. LED RX is active low. + */ + + case 3: + sam_gpiowrite(GPIO_LED_RX, false); break; } - - sam_gpiowrite(GPIO_LED_RX, rxledon); - sam_gpiowrite(GPIO_LED_TX, txledon); } /**************************************************************************** @@ -160,10 +183,37 @@ void up_ledon(int led) void up_ledoff(int led) { - if (led != 2) + switch (led) { - sam_gpiowrite(GPIO_LED_RX, false); - sam_gpiowrite(GPIO_LED_TX, false); + /* 0: LED_STARTED, LED_HEAPALLOCATE, LED_IRQSENABLED: L=OFF TX=OFF + * RX=OFF + * 1: LED_STACKCREATED: L=ON TX=OFF RX=OFF + * + * These cases should never happen. + */ + + default: + case 1: + case 0: + break; + + /* 2: LED_INIRQ, LED_SIGNAL, LED_ASSERTION: L=N/C TX=OFF RX=N/C + * + * This case will occur many times. LED TX is active low. + */ + + case 2: + sam_gpiowrite(GPIO_LED_TX, true); + break; + + /* 3: LED_PANIC: L=N/X TX=N/C RX=OFF + * + * This case will also occur many times. LED RX is active low. + */ + + case 3: + sam_gpiowrite(GPIO_LED_RX, true); + break; } } diff --git a/configs/arduino-due/src/sam_userleds.c b/configs/arduino-due/src/sam_userleds.c index 5cd87f1c50..465772c64a 100644 --- a/configs/arduino-due/src/sam_userleds.c +++ b/configs/arduino-due/src/sam_userleds.c @@ -95,6 +95,7 @@ void sam_ledinit(void) { /* Configure LED1-2 GPIOs for output */ + sam_configgpio(GPIO_LED_L); sam_configgpio(GPIO_LED_RX); sam_configgpio(GPIO_LED_TX); } @@ -107,13 +108,19 @@ void sam_setled(int led, bool ledon) { uint32_t ledcfg; - if (led == BOARD_LED_RX) + if (led == BOARD_LED_L) { ledcfg = GPIO_LED_RX; } + else if (led == BOARD_LED_RX) + { + ledcfg = GPIO_LED_RX; + ledon = !ledon; + } else if (led == BOARD_LED_TX) { ledcfg = GPIO_LED_TX; + ledon = !ledon; } else { @@ -131,6 +138,9 @@ void sam_setleds(uint8_t ledset) { bool ledon; + ledon = ((ledset & BOARD_LED_L_BIT) != 0); + sam_gpiowrite(GPIO_LED_L, ledon); + ledon = ((ledset & BOARD_LED_RX_BIT) != 0); sam_gpiowrite(GPIO_LED_RX, ledon);