summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-03-01 19:10:02 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-03-01 19:10:02 +0000
commit7b9858c44c827799d2d4c898fc081b907bce7b49 (patch)
tree1764a99eb1971176a2b242949ec23c742b46dd83
parent632648b224dfcefbf70347d7fb3a60d8f6e7fad4 (diff)
downloadnuttx-7b9858c44c827799d2d4c898fc081b907bce7b49.tar.gz
nuttx-7b9858c44c827799d2d4c898fc081b907bce7b49.tar.bz2
nuttx-7b9858c44c827799d2d4c898fc081b907bce7b49.zip
Add a configuration to begin development of an LM4F120 LaunchPad port
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5692 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/ChangeLog4
-rw-r--r--nuttx/Documentation/NuttX.html25
-rw-r--r--nuttx/arch/arm/src/lm/lm_gpio.c6
-rw-r--r--nuttx/arch/arm/src/lm/lm_gpio.h14
-rw-r--r--nuttx/configs/lm4f120-launchpad/Kconfig13
-rw-r--r--nuttx/configs/lm4f120-launchpad/README.txt636
-rw-r--r--nuttx/configs/lm4f120-launchpad/include/board.h251
-rw-r--r--nuttx/configs/lm4f120-launchpad/ostest/Make.defs109
-rwxr-xr-xnuttx/configs/lm4f120-launchpad/ostest/defconfig531
-rwxr-xr-xnuttx/configs/lm4f120-launchpad/ostest/setenv.sh46
-rwxr-xr-xnuttx/configs/lm4f120-launchpad/scripts/ld.script115
-rw-r--r--nuttx/configs/lm4f120-launchpad/src/Makefile91
-rw-r--r--nuttx/configs/lm4f120-launchpad/src/lm4f_autoleds.c227
-rw-r--r--nuttx/configs/lm4f120-launchpad/src/lm4f_boot.c93
-rw-r--r--nuttx/configs/lm4f120-launchpad/src/lm4f_nsh.c102
-rw-r--r--nuttx/configs/lm4f120-launchpad/src/lm4f_ssi.c134
-rw-r--r--nuttx/configs/lm4f120-launchpad/src/lmf4120-launchpad.h143
-rw-r--r--nuttx/configs/zkit-arm-1769/nsh/defconfig2
18 files changed, 2531 insertions, 11 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index db909eab2..d518d863d 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -4225,3 +4225,7 @@
* drivers/mmcsd/mmcsd_spi.c: When bus is shared, the speed has to be
set every time. Also SD cards require a few dummy clocks to react
into CS release. From Petteri Aimonen.
+ * configs/lm4f120-launchpad: In initial configuration for testing
+ the LM4F120 LaunchPad port. This is to support testing only and
+ is not yet a functional board port (as of 2013-03-01).
+
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index e7fa65981..435540f44 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -2017,16 +2017,33 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
As of this writing, more device drivers are needed to make this a more complete port.
</p>
<p>
- For a full-featured RTOS such as NuttX, providing support in a usable and meaningful way within the tiny memories of the NUC120 demonstrates the scalability of NuttX (128KB FLASH and 16KB of SRAM in a 48-pin package).
- When running the NSH configuration (a full up application), there is still more than 9KB or SRAM available:
+ <b>Memory Usage</b>.
+ For a full-featured RTOS such as NuttX, providing support in a usable and meaningful way within the tiny memories of the NUC120 demonstrates the scalability of NuttX. The NUC120LE2AN comes in a 48-pin package and has 128KB FLASH and 16KB of SRAM.
+ When running the NSH configuration (itself a full up application), there is still more than 90KB of FLASH and 10KB or SRAM available for further application development).
+ </p>
+ <p>
+ Static memory usage can be shown with <code>size</code> command:
+ </p>
+ <ul><pre>
+$ size nuttx
+ text data bss dec hex filename
+ 35037 106 1092 36235 8d8b nuttx
+</pre></ul>
+ <p>
+ NuttX, the NSH application, and GCC libraries use 34.2KB of FLASH leaving 93.8KB of FLASH (72%) free from additional application development.
+ Static SRAM usage is about 1.2KB (&lt;4%) and leaves 13.8KB (86%) available for heap at runtime.
+ SRAM usage at run-time can be shown with the NSH <code>free</code> command:
</p>
<ul><pre>
NuttShell (NSH) NuttX-6.26
nsh> free
total used free largest
-Mem: 13344 3944 9400 9400
+Mem: 14160 3944 10216 10216
nsh>
- </ul>
+</pre></ul>
+ <p>
+ You can see that 10.0KB (62%) is available for further application development.
+ </p>
<p>
<b>Development Environments:</b>
1) Linux with native Linux GNU toolchain, 2) Cygwin/MSYS with Cygwin GNU toolchain, 3) Cygwin/MSYS
diff --git a/nuttx/arch/arm/src/lm/lm_gpio.c b/nuttx/arch/arm/src/lm/lm_gpio.c
index be851e67c..5b49f5a6c 100644
--- a/nuttx/arch/arm/src/lm/lm_gpio.c
+++ b/nuttx/arch/arm/src/lm/lm_gpio.c
@@ -715,7 +715,7 @@ int lm_configgpio(uint32_t cfgset)
func = (cfgset & GPIO_FUNC_MASK) >> GPIO_FUNC_SHIFT;
port = (cfgset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
- pinno = (cfgset & GPIO_NUMBER_MASK);
+ pinno = (cfgset & GPIO_PIN_MASK);
pin = (1 <<pinno);
DEBUGASSERT(func <= GPIO_FUNC_MAX);
@@ -792,7 +792,7 @@ void lm_gpiowrite(uint32_t pinset, bool value)
/* Decode the basics */
port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
- pinno = (pinset & GPIO_NUMBER_MASK);
+ pinno = (pinset & GPIO_PIN_MASK);
/* Get the base address associated with the GPIO port */
@@ -830,7 +830,7 @@ bool lm_gpioread(uint32_t pinset, bool value)
/* Decode the basics */
port = (pinset & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
- pinno = (pinset & GPIO_NUMBER_MASK);
+ pinno = (pinset & GPIO_PIN_MASK);
/* Get the base address associated with the GPIO port */
diff --git a/nuttx/arch/arm/src/lm/lm_gpio.h b/nuttx/arch/arm/src/lm/lm_gpio.h
index 1447eb065..5938b7891 100644
--- a/nuttx/arch/arm/src/lm/lm_gpio.h
+++ b/nuttx/arch/arm/src/lm/lm_gpio.h
@@ -135,12 +135,20 @@
#define GPIO_PORTH (7 << GPIO_PORT_SHIFT) /* GPIOH */
#define GPIO_PORTJ (8 << GPIO_PORT_SHIFT) /* GPIOJ */
-/* This identifies the bit in the port:
+/* This identifies the pin number in the port:
* nnnn nnnn nnnn nnnn nnnn nnnn nnnn nBBB
*/
-#define GPIO_NUMBER_SHIFT 0 /* Bits 0-2: GPIO number: 0-7 */
-#define GPIO_NUMBER_MASK (7 << GPIO_NUMBER_SHIFT)
+#define GPIO_PIN_SHIFT 0 /* Bits 0-2: GPIO pin: 0-7 */
+#define GPIO_PIN_MASK (7 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_0 (0 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_1 (1 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_2 (2 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_3 (3 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_4 (4 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_5 (5 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_6 (6 << GPIO_PIN_SHIFT)
+# define GPIO_PIN_7 (7 << GPIO_PIN_SHIFT)
/************************************************************************************
* Public Types
diff --git a/nuttx/configs/lm4f120-launchpad/Kconfig b/nuttx/configs/lm4f120-launchpad/Kconfig
new file mode 100644
index 000000000..24afc84f8
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/Kconfig
@@ -0,0 +1,13 @@
+#
+# For a description of the syntax of this configuration file,
+# see misc/tools/kconfig-language.txt.
+#
+
+if ARCH_BOARD_LM4FLAUNCHPAD
+config ARCH_LEDS
+ bool "NuttX LED support"
+ default n
+ ---help---
+ "Support control of board LEDs by NuttX to indicate system state"
+
+endif
diff --git a/nuttx/configs/lm4f120-launchpad/README.txt b/nuttx/configs/lm4f120-launchpad/README.txt
new file mode 100644
index 000000000..d05e37966
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/README.txt
@@ -0,0 +1,636 @@
+README
+^^^^^^
+
+README for NuttX port to the Stellaris LM4F120 LaunchPad. The Stellaris® LM4F120 LaunchPad Evaluation Board is a low-cost evaluation platform for ARM® Cortex™-M4F-based microcontrollers from Texas Instruments.
+
+Contents
+^^^^^^^^
+
+ Stellaris LM4F120 LaunchPad
+ On-Board GPIO Usage
+ Development Environment
+ GNU Toolchain Options
+ IDEs
+ NuttX EABI "buildroot" Toolchain
+ NuttX OABI "buildroot" Toolchain
+ NXFLAT Toolchain
+ LEDs
+ USB Device Controller Functions
+ Using OpenOCD and GDB with an FT2232 JTAG emulator
+ LM4F120 LaunchPad Configuration Options
+ Configurations
+
+Stellaris LM4F120 LaunchPad
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The Stellaris® LM4F120 LaunchPad Evaluation Kit offers these features:
+
+o A Stellaris® LaunchPad Evaluation board (EK-LM4F120XL)
+o On-board Stellaris® In-Circuit Debug Interface (ICDI)
+o Programmable user buttons and an RGB LED for custom applications.
+o USB Micro-B plug to USB-A plug cable
+
+Features of the LM4F120H5QR Microcontroller
+
+o 32-bit ARM® Cortex™-M4F 80-MHz processor core.
+o On-chip memory, featuring 256 KB single-cycle Flash up to 40 MHz (a
+ prefetch buffer improves performance above 40 MHz), 32 KB single-cycle
+ SRAM; internal ROM loaded with StellarisWare® software; 2KB EEPROM
+o Two Controller Area Network (CAN) modules, using CAN protocol version
+ 2.0 part A/B and with bit rates up to 1 Mbps
+o Universal Serial Bus (USB) controller with USB 2.0 full-speed (12 Mbps)
+ and low-speed (1.5 Mbps) operation, 32 endpoints, and USB OTG/Host/Device
+ mode
+o Advanced serial integration, featuring: eight UARTs with IrDA, 9-bit, and
+ ISO 7816 support (one UART with modem status and modem flow control); four
+ Synchronous Serial Interface (SSI) modules, supporting operation for
+ Freescale SPI, MICROWIRE, or Texas Instruments synchronous serial
+ interfaces; four Inter-Integrated Circuit (I2C) modules, providing
+ Standard (100 Kbps) and Fast (400 Kbps) transmission and support for
+ sending and receiving data as either a master or a slave
+o ARM PrimeCell® 32-channel configurable µDMA controller, providing a way to
+ offload data transfer tasks from the Cortex™-M4F processor, allowing for
+ more efficient use of the processor and the available bus bandwidth
+o Analog support, featuring: two 12-bit Analog-to-Digital Converters (ADC)
+ with 12 analog input channels and a sample rate of one million
+ samples/second; two analog comparators; 16 digital comparators; on-chip
+ voltage regulator
+o Advanced motion control, featuring: eight Pulse Width Modulation (PWM)
+ generator blocks, each with one 16-bit counter, two PWM comparators, a
+ PWM signal generator, a dead-band generator, and an interrupt/ADC-trigger
+ selector; two PWM fault inputs to promote low-latency shutdown; two
+ Quadrature Encoder Interface (QEI) modules, with position integrator to
+ rack encoder position and velocity capture using built-in timer
+o Two ARM FiRM-compliant watchdog timers; six 32-bit general-purpose timers
+ (up to twelve 16-bit); six wide 64-bit general-purpose timers (up to twelve
+ 32-bit); 12 16/32-bit and 12 32/64-bit Capture Compare PWM (CCP) pins
+o Up to 43 GPIOs (depending on configuration), with programmable control for
+ GPIO interrupts and pad configuration, and highly flexible pin muxing
+o Lower-power battery-backed Hibernation module with Real-Time Clock
+o Multiple clock sources for microcontroller system clock: Precision
+ Oscillator (PIOSC), Main Oscillator (MOSC), 32.768-kHz external oscillator
+ for the Hibernation Module, and Internal 30-kHz Oscillator
+o Full-featured debug solution with debug access via JTAG and Serial Wire
+ interfaces, and IEEE 1149.1-1990 compliant Test Access Port (TAP) controller
+o Industrial-range (-40°C to 85°C) RoHS-compliant 64-pin LQFP
+
+On-Board GPIO Usage
+===================
+
+PIN SIGNAL(S) LanchPad Function
+--- ---------------------------------------- ---------------------------------------
+ 17 PA0/U0RX DEBUG/VCOM, Virtual COM port receive
+ 18 PA1/U0TX DEBUG/VCOM, Virtual COM port transmit
+ 19 PA2/SSIOCLK GPIO, J2 pin 10
+ 20 PA3/SSIOFSS GPIO, J2 pin 9
+ 21 PA4/SSIORX GPIO, J2 pin 8
+ 22 PA5/SSIOTX GPIO, J1 pin 8
+ 23 PA6/I2CLSCL GPIO, J1 pin 9
+ 24 PA7/I2CLSDA GPIO, J1 pin 10
+
+ 45 PB0/T2CCP0/U1Rx GPIO, J1 pin 3
+ 46 PB1/T2CCP1/U1Tx GPIO, J1 pin 4
+ 47 PB2/I2C0SCL/T3CCP0 GPIO, J2, pin 3
+ 48 PB3/I2C0SDA/T3CCP1 GPIO, J4 pin 3
+ 58 PB4/AIN10/CAN0Rx/SSI2CLK/T1CCP0 GPIO, J1 pin 7
+ 57 PB5/AIN11/CAN0Tx/SSI2FSS/T1CCP1 GPIO, J1 pin 2
+ 01 PB6/SSI2RX/T0CCP0 GPIO, J2 pin 7
+ 04 PB7/SSI2TX/T0CCP1 GPIO, J2 pin 6
+
+ 52 PC0/SWCLK/T4CCP0/TCK DEBUG/VCOM
+ 51 PC1/SWDIO/T4CCP1/TMS DEBUG/VCOM
+ 50 PC2/T5CCP0/TDI DEBUG/VCOM
+ 49 PC3/SWO/T5CCP1/TDO DEBUG/VCOM
+ 16 PC4/C1-/U1RTS/U1RX/U4RX/WT0CCP0 GPIO, J4 pin 4
+ 15 PC5/C1+/U1CTS/U1TX/U4TX/WT0CCP1 GPIO, J4 pin 5
+ 14 PC6/C0+/U3RX/WT1CCP0 GPIO, J4 pin 6
+ 13 PC7/C0-/U3TX/WT1CCP1 GPIO, J4 pin 7
+
+ 61 PD0/AIN7/I2C3SCL/SSI1CLK/SSI3CLKWT2CCP0 Connects to PB6 via resistor, GPIO, J3 pin 3
+ 62 PD1/AIN6/I2C3SDA/SSI1Fss/SSI3Fss/WT2CCP1 Connects to PB7 via resistor, GPIO, J3 Pin 4
+ 63 PD2/AIN5/SSI1RX/SSI3RX/WT3CCP0 GPIO, J3 pin 5
+ 64 PD3/AIN4/SSI1TX/SSI3TX/WT3CCP1 GPIO, J3 pin 6
+ 43 PD4/U6RX/USB0DM/WT4CCP0 USB_DM
+ 44 PD5/U6TX/USB0DP/WT4CCP1 USB_DP
+ 53 PD6/U2RX/WT5CCP0 GPIO, J4 pin 8
+ 10 PD7/NMI/U2TX/WT5CCP1 +USB_VBUS, GPIO, J4 pin 9
+ Used for VBUS detection when
+ configured as a self-powered USB
+ Device
+
+ 09 PE0/AIN3/U7RX GPIO, J2 pin 3
+ 08 PE1/AIN2/U7TX GPIO, J3 pin 7
+ 07 PE2/AIN1 GPIO, J3 pin 8
+ 06 PE3/AIN0 GPIO, J3 pin 9
+ 59 PE4/AIN9/CAN0RX/I2C2SCL/U5RX GPIO, J1 pin 5
+ 60 PE5/AIN8/CAN0TX/I2C2SDA/U5TX GPIO, J1 pin 6
+
+ 28 PF0/C0O/CAN0RX/NMI/SSI1RX/T0CCP0/U1RTS USR_SW2 (Low when pressed), GPIO, J2 pin 4
+ 29 PF1/C1O/SSI1TX/T0CCP1/TRD1/U1CTS LED_R, GPIO, J3 pin 10
+ 30 PF2/SSI1CLK/T1CCP0/TRD0 LED_B, GPIO, J4 pin 1
+ 31 PF3/CAN0TX/SSI1FSS/T1CCP1/TRCLK LED_G, GPIO, J4 pin 2
+ 05 PF4/T2CCP0 USR_SW1 (Low when pressed), GPIO, J4 pin 10
+
+Using OpenOCD and GDB with an FT2232 JTAG emulator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Building OpenOCD under Cygwin:
+
+ Refer to configs/lm4f120-launchpad/README.txt
+
+ Installing OpenOCD in Linux:
+
+ sudo apt-get install openocd
+
+ Helper Scripts.
+
+ I have been using the on-board FT2232 JTAG/SWD/SWO interface. OpenOCD
+ requires a configuration file. I keep the one I used last here:
+
+ configs/lm4f120-launchpad/tools/lm4f120-launchpad.cfg
+
+ However, the "correct" configuration script to use with OpenOCD may
+ change as the features of OpenOCD evolve. So you should at least
+ compare that lm4f120-launchpad.cfg file with configuration files in
+ /usr/share/openocd/scripts. As of this writing, the configuration
+ files of interest were:
+
+ /usr/share/openocd/scripts/interface/luminary.cfg
+ /usr/share/openocd/scripts/board/ek-lm3s6965.cfg
+ /usr/share/openocd/scripts/target/stellaris.cfg
+
+ There is also a script on the tools/ directory that I use to start
+ the OpenOCD daemon on my system called oocd.sh. That script will
+ probably require some modifications to work in another environment:
+
+ - Possibly the value of OPENOCD_PATH and TARGET_PATH
+ - It assumes that the correct script to use is the one at
+ configs/lm4f120-launchpad/tools/lm4f120-launchpad.cfg
+
+ Starting OpenOCD
+
+ Then you should be able to start the OpenOCD daemon like:
+
+ configs/lm4f120-launchpad/tools/oocd.sh $PWD
+
+ Connecting GDB
+
+ Once the OpenOCD daemon has been started, you can connect to it via
+ GDB using the following GDB command:
+
+ arm-nuttx-elf-gdb
+ (gdb) target remote localhost:3333
+
+ NOTE: The name of your GDB program may differ. For example, with the
+ CodeSourcery toolchain, the ARM GDB would be called arm-none-eabi-gdb.
+
+ After starting GDB, you can load the NuttX ELF file:
+
+ (gdb) symbol-file nuttx
+ (gdb) monitor reset
+ (gdb) monitor halt
+ (gdb) load nuttx
+
+ NOTES:
+ 1. Loading the symbol-file is only useful if you have built NuttX to
+ include debug symbols (by setting CONFIG_DEBUG_SYMBOLS=y in the
+ .config file).
+ 2. The MCU must be halted prior to loading code using 'mon reset'
+ as described below.
+
+ OpenOCD will support several special 'monitor' commands. These
+ GDB commands will send comments to the OpenOCD monitor. Here
+ are a couple that you will need to use:
+
+ (gdb) monitor reset
+ (gdb) monitor halt
+
+ NOTES:
+ 1. The MCU must be halted using 'mon halt' prior to loading code.
+ 2. Reset will restart the processor after loading code.
+ 3. The 'monitor' command can be abbreviated as just 'mon'.
+
+Development Environment
+^^^^^^^^^^^^^^^^^^^^^^^
+
+ Either Linux or Cygwin on Windows can be used for the development environment.
+ The source has been built only using the GNU toolchain (see below). Other
+ toolchains will likely cause problems. Testing was performed using the Cygwin
+ environment.
+
+GNU Toolchain Options
+^^^^^^^^^^^^^^^^^^^^^
+
+ The NuttX make system has been modified to support the following different
+ toolchain options.
+
+ 1. The NuttX buildroot Toolchain (default, see below),
+ 2. The CodeSourcery GNU toolchain,
+ 3. The devkitARM GNU toolchain,
+ 4. The Atollic toolchain, or
+ 5. The Code Red toolchain
+
+ All testing has been conducted using the Buildroot toolchain for Cygwin/Linux.
+ To use a different toolchain, you simply need to add one of the following
+ configuration options to your .config (or defconfig) file:
+
+ CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y : NuttX buildroot under Linux or Cygwin (default)
+ CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery under Windows or Cygwin
+ CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL=y : CodeSourcery under Linux
+ CONFIG_ARMV7M_TOOLCHAIN_DEVKITARM=y : The Atollic toolchain under Windows or Cygwin
+ CONFIG_ARMV7M_TOOLCHAIN_CODEREDW=y : The Code Red toolchain under Windows
+ CONFIG_ARMV7M_TOOLCHAIN_CODEREDL=y : The Code Red toolchain under Linux
+
+ CONFIG_ARMV7M_OABI_TOOLCHAIN=y : If you use an older, OABI buildroot toolchain
+
+ If you change the default toolchain, then you may also have to modify the PATH in
+ the setenv.h file if your make cannot find the tools.
+
+ NOTE: the CodeSourcery (for Windows), Atollic, devkitARM, and Code Red (for Windows)
+ toolchains are Windows native toolchains. The CodeSourcey (for Linux) and NuttX
+ buildroot toolchains are Cygwin and/or Linux native toolchains. There are several
+ limitations to using a Windows based toolchain in a Cygwin environment. The three
+ biggest are:
+
+ 1. The Windows toolchain cannot follow Cygwin paths. Path conversions are
+ performed automatically in the Cygwin makefiles using the 'cygpath' utility
+ but you might easily find some new path problems. If so, check out 'cygpath -w'
+
+ 2. Windows toolchains cannot follow Cygwin symbolic links. Many symbolic links
+ are used in Nuttx (e.g., include/arch). The make system works around these
+ problems for the Windows tools by copying directories instead of linking them.
+ But this can also cause some confusion for you: For example, you may edit
+ a file in a "linked" directory and find that your changes had no effect.
+ That is because you are building the copy of the file in the "fake" symbolic
+ directory. If you use a Windows toolchain, you should get in the habit of
+ making like this:
+
+ make clean_context all
+
+ An alias in your .bashrc file might make that less painful.
+
+ 3. Dependencies are not made when using Windows versions of the GCC. This is
+ because the dependencies are generated using Windows pathes which do not
+ work with the Cygwin make.
+
+ MKDEP = $(TOPDIR)/tools/mknulldeps.sh
+
+ NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization
+ level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with
+ -Os.
+
+ NOTE 2: The devkitARM toolchain includes a version of MSYS make. Make sure that
+ the paths to Cygwin's /bin and /usr/bin directories appear BEFORE the devkitARM
+ path or will get the wrong version of make.
+
+IDEs
+^^^^
+
+ NuttX is built using command-line make. It can be used with an IDE, but some
+ effort will be required to create the project.
+
+ Makefile Build
+ --------------
+ Under Eclipse, it is pretty easy to set up an "empty makefile project" and
+ simply use the NuttX makefile to build the system. That is almost for free
+ under Linux. Under Windows, you will need to set up the "Cygwin GCC" empty
+ makefile project in order to work with Windows (Google for "Eclipse Cygwin" -
+ there is a lot of help on the internet).
+
+ Native Build
+ ------------
+ Here are a few tips before you start that effort:
+
+ 1) Select the toolchain that you will be using in your .config file
+ 2) Start the NuttX build at least one time from the Cygwin command line
+ before trying to create your project. This is necessary to create
+ certain auto-generated files and directories that will be needed.
+ 3) Set up include pathes: You will need include/, arch/arm/src/lm,
+ arch/arm/src/common, arch/arm/src/armv7-m, and sched/.
+ 4) All assembly files need to have the definition option -D __ASSEMBLY__
+ on the command line.
+
+ Startup files will probably cause you some headaches. The NuttX startup file
+ is arch/arm/src/lm/lm_vectors.S.
+
+NuttX EABI "buildroot" Toolchain
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ A GNU GCC-based toolchain is assumed. The files */setenv.sh should
+ be modified to point to the correct path to the Cortex-M3 GCC toolchain (if
+ different from the default in your PATH variable).
+
+ If you have no Cortex-M3 toolchain, one can be downloaded from the NuttX
+ SourceForge download site (https://sourceforge.net/projects/nuttx/files/buildroot/).
+ This GNU toolchain builds and executes in the Linux or Cygwin environment.
+
+ 1. You must have already configured Nuttx in <some-dir>/nuttx.
+
+ cd tools
+ ./configure.sh lm4f120-launchpad/<sub-dir>
+
+ 2. Download the latest buildroot package into <some-dir>
+
+ 3. unpack the buildroot tarball. The resulting directory may
+ have versioning information on it like buildroot-x.y.z. If so,
+ rename <some-dir>/buildroot-x.y.z to <some-dir>/buildroot.
+
+ 4. cd <some-dir>/buildroot
+
+ 5. cp configs/cortexm3-eabi-defconfig-4.6.3 .config
+
+ 6. make oldconfig
+
+ 7. make
+
+ 8. Edit setenv.h, if necessary, so that the PATH variable includes
+ the path to the newly built binaries.
+
+ See the file configs/README.txt in the buildroot source tree. That has more
+ details PLUS some special instructions that you will need to follow if you
+ are building a Cortex-M3 toolchain for Cygwin under Windows.
+
+ NOTE: Unfortunately, the 4.6.3 EABI toolchain is not compatible with the
+ the NXFLAT tools. See the top-level TODO file (under "Binary loaders") for
+ more information about this problem. If you plan to use NXFLAT, please do not
+ use the GCC 4.6.3 EABI toochain; instead use the GCC 4.3.3 OABI toolchain.
+ See instructions below.
+
+NuttX OABI "buildroot" Toolchain
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ The older, OABI buildroot toolchain is also available. To use the OABI
+ toolchain:
+
+ 1. When building the buildroot toolchain, either (1) modify the cortexm3-eabi-defconfig-4.6.3
+ configuration to use EABI (using 'make menuconfig'), or (2) use an exising OABI
+ configuration such as cortexm3-defconfig-4.3.3
+
+ 2. Modify the Make.defs file to use the OABI conventions:
+
+ +CROSSDEV = arm-nuttx-elf-
+ +ARCHCPUFLAGS = -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft
+ +NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-gotoff.ld -no-check-sections
+ -CROSSDEV = arm-nuttx-eabi-
+ -ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
+ -NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
+
+NXFLAT Toolchain
+^^^^^^^^^^^^^^^^
+
+ If you are *not* using the NuttX buildroot toolchain and you want to use
+ the NXFLAT tools, then you will still have to build a portion of the buildroot
+ tools -- just the NXFLAT tools. The buildroot with the NXFLAT tools can
+ be downloaded from the NuttX SourceForge download site
+ (https://sourceforge.net/projects/nuttx/files/).
+
+ This GNU toolchain builds and executes in the Linux or Cygwin environment.
+
+ 1. You must have already configured Nuttx in <some-dir>/nuttx.
+
+ cd tools
+ ./configure.sh lpcxpresso-lpc1768/<sub-dir>
+
+ 2. Download the latest buildroot package into <some-dir>
+
+ 3. unpack the buildroot tarball. The resulting directory may
+ have versioning information on it like buildroot-x.y.z. If so,
+ rename <some-dir>/buildroot-x.y.z to <some-dir>/buildroot.
+
+ 4. cd <some-dir>/buildroot
+
+ 5. cp configs/cortexm3-defconfig-nxflat .config
+
+ 6. make oldconfig
+
+ 7. make
+
+ 8. Edit setenv.h, if necessary, so that the PATH variable includes
+ the path to the newly builtNXFLAT binaries.
+
+LEDs
+^^^^
+ The LM32F120 has a single RGB LED. If CONFIG_ARCH_LEDS is defined, then
+ support for the LaunchPad LEDs will be included in the build. See:
+
+ - configs/lm4f120-launchpad/include/board.h - Defines LED constants, types and
+ prototypes the LED interface functions.
+
+ - configs/lm4f120-launchpad/src/lm4f120-launchpad.h - GPIO settings for the LEDs.
+
+ - configs/lm4f120-launchpad/src/up_leds.c - LED control logic.
+
+ OFF:
+ - OFF means that the OS is still initializing. Initialization is very fast so
+ if you see this at all, it probably means that the system is hanging up
+ somewhere in the initialization phases.
+
+ GREEN or GREEN-ish
+ - This means that the OS completed initialization.
+
+ Bluish:
+ - Whenever and interrupt or signal handler is entered, the BLUE LED is
+ illuminated and extinguished when the interrupt or signal handler exits.
+ This will add a BLUE-ish tinge to the LED.
+
+ Redish:
+ - If a recovered assertion occurs, the RED component will be illuminated
+ briefly while the assertion is handled. You will probably never see this.
+
+ Flashing RED:
+ - In the event of a fatal crash, the BLUE and GREEN components will be
+ extinguished and the RED component will FLASH at a 2Hz rate.
+
+USB Device Controller Functions
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Device Overview
+
+ An FT2232 device from Future Technology Devices International Ltd manages
+ USB-to-serial conversion. The FT2232 is factory configured by Luminary
+ Micro to implement a JTAG/SWD port (synchronous serial) on channel A and
+ a Virtual COM Port (VCP) on channel B. This feature allows two simultaneous
+ communications links between the host computer and the target device using
+ a single USB cable. Separate Windows drivers for each function are provided
+ on the Documentation and Software CD.
+
+ Debugging with JTAG/SWD
+
+ The FT2232 USB device performs JTAG/SWD serial operations under the control
+ of the debugger or the Luminary Flash Programmer. It also operate as an
+ In-Circuit Debugger Interface (ICDI), allowing debugging of any external
+ target board. Debugging modes:
+
+ MODE DEBUG FUNCTION USE SELECTED BY
+ 1 Internal ICDI Debug on-board LM4F120 Default Mode
+ microcontroller over USB
+ interface.
+ 2 ICDI out to JTAG/SWD The EVB is used as a USB Connecting to an external
+ header to SWD/JTAG interface to target and starting debug
+ an external target. software. The red Debug Out
+ LED will be ON.
+ 3 In from JTAG/SWD For users who prefer an Connecting an external
+ header external debug interface debugger to the JTAG/SWD
+ (ULINK, JLINK, etc.) with header.
+ the EVB.
+
+ Virtual COM Port
+
+ The Virtual COM Port (VCP) allows Windows applications (such as HyperTerminal)
+ to communicate with UART0 on the LM4F120 over USB. Once the FT2232 VCP
+ driver is installed, Windows assigns a COM port number to the VCP channel.
+
+LM4F120 LaunchPad Configuration Options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ CONFIG_ARCH - Identifies the arch/ subdirectory. This should
+ be set to:
+
+ CONFIG_ARCH=arm
+
+ CONFIG_ARCH_family - For use in C code:
+
+ CONFIG_ARCH_ARM=y
+
+ CONFIG_ARCH_architecture - For use in C code:
+
+ CONFIG_ARCH_CORTEXM3=y
+
+ CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
+
+ CONFIG_ARCH_CHIP=lm
+
+ CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
+ chip:
+
+ CONFIG_ARCH_CHIP_LM4F120
+
+ CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
+ hence, the board that supports the particular chip or SoC.
+
+ CONFIG_ARCH_BOARD=lm4f120-launchpad (for the LM4F120 LaunchPad)
+
+ CONFIG_ARCH_BOARD_name - For use in C code
+
+ CONFIG_ARCH_BOARD_LM4FLAUNCHPAD
+
+ CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
+ of delay loops
+
+ CONFIG_ENDIAN_BIG - define if big endian (default is little
+ endian)
+
+ CONFIG_DRAM_SIZE - Describes the installed DRAM (SRAM in this case):
+
+ CONFIG_DRAM_SIZE=0x00010000 (64Kb)
+
+ CONFIG_DRAM_START - The start address of installed DRAM
+
+ CONFIG_DRAM_START=0x20000000
+
+ CONFIG_ARCH_IRQPRIO - The LM4F120 supports interrupt prioritization
+
+ CONFIG_ARCH_IRQPRIO=y
+
+ CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
+ have LEDs
+
+ CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
+ stack. If defined, this symbol is the size of the interrupt
+ stack in bytes. If not defined, the user task stacks will be
+ used during interrupt handling.
+
+ CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
+
+ CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
+
+ CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
+ cause a 100 second delay during boot-up. This 100 second delay
+ serves no purpose other than it allows you to calibratre
+ CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
+ the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
+ the delay actually is 100 seconds.
+
+ There are configurations for disabling support for interrupts GPIO ports.
+ GPIOJ must be disabled because it does not exist on the LM4F120.
+ Additional interrupt support can be disabled if desired to reduce memory
+ footprint.
+
+ CONFIG_LM_DISABLE_GPIOA_IRQS=n
+ CONFIG_LM_DISABLE_GPIOB_IRQS=n
+ CONFIG_LM_DISABLE_GPIOC_IRQS=n
+ CONFIG_LM_DISABLE_GPIOD_IRQS=n
+ CONFIG_LM_DISABLE_GPIOE_IRQS=n
+ CONFIG_LM_DISABLE_GPIOF_IRQS=n
+ CONFIG_LM_DISABLE_GPIOG_IRQS=n
+ CONFIG_LM_DISABLE_GPIOH_IRQS=n
+ CONFIG_LM_DISABLE_GPIOJ_IRQS=y
+
+ LM4F120 specific device driver settings
+
+ CONFIG_UARTn_SERIAL_CONSOLE - selects the UARTn for the
+ console and ttys0 (default is the UART0).
+ CONFIG_UARTn_RXBUFSIZE - Characters are buffered as received.
+ This specific the size of the receive buffer
+ CONFIG_UARTn_TXBUFSIZE - Characters are buffered before
+ being sent. This specific the size of the transmit buffer
+ CONFIG_UARTn_BAUD - The configure BAUD of the UART. Must be
+ CONFIG_UARTn_BITS - The number of bits. Must be either 7 or 8.
+ CONFIG_UARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
+ CONFIG_UARTn_2STOP - Two stop bits
+
+ CONFIG_SSI0_DISABLE - Select to disable support for SSI0
+ CONFIG_SSI1_DISABLE - Select to disable support for SSI1
+ CONFIG_SSI_POLLWAIT - Select to disable interrupt driven SSI support.
+ Poll-waiting is recommended if the interrupt rate would be to
+ high in the interrupt driven case.
+ CONFIG_SSI_TXLIMIT - Write this many words to the Tx FIFO before
+ emptying the Rx FIFO. If the SPI frequency is high and this
+ value is large, then larger values of this setting may cause
+ Rx FIFO overrun errors. Default: half of the Tx FIFO size (4).
+
+ CONFIG_LM_ETHERNET - This must be set (along with CONFIG_NET)
+ to build the Stellaris Ethernet driver
+ CONFIG_LM_ETHLEDS - Enable to use Ethernet LEDs on the board.
+ CONFIG_LM_BOARDMAC - If the board-specific logic can provide
+ a MAC address (via lm_ethernetmac()), then this should be selected.
+ CONFIG_LM_ETHHDUPLEX - Set to force half duplex operation
+ CONFIG_LM_ETHNOAUTOCRC - Set to suppress auto-CRC generation
+ CONFIG_LM_ETHNOPAD - Set to suppress Tx padding
+ CONFIG_LM_MULTICAST - Set to enable multicast frames
+ CONFIG_LM_PROMISCUOUS - Set to enable promiscuous mode
+ CONFIG_LM_BADCRC - Set to enable bad CRC rejection.
+ CONFIG_LM_DUMPPACKET - Dump each packet received/sent to the console.
+
+Configurations
+^^^^^^^^^^^^^^
+
+Each LM4F120 LaunchPad configuration is maintained in a
+sub-directory and can be selected as follow:
+
+ cd tools
+ ./configure.sh lm4f120-launchpad/<subdir>
+ cd -
+ . ./setenv.sh
+
+Where <subdir> is one of the following:
+
+ ostest:
+ This configuration directory, performs a simple OS test using
+ examples/ostest.
+
+ NOTES:
+ 1. This configuration uses the mconf-based configuration tool. To
+ change this configuration using that tool, you should:
+
+ a. Build and install the kconfig-mconf tool. See nuttx/README.txt
+ and misc/tools/
+
+ b. Execute 'make menuconfig' in nuttx/ in order to start the
+ reconfiguration process.
+
+ 2. Default platform/toolchain:
+
+ CONFIG_HOST_LINUX=y : Linux (Cygwin under Windows okay too).
+ CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y : Buildroot (arm-nuttx-elf-gcc)
+ CONFIG_RAW_BINARY=y : Output formats: ELF and raw binary
diff --git a/nuttx/configs/lm4f120-launchpad/include/board.h b/nuttx/configs/lm4f120-launchpad/include/board.h
new file mode 100644
index 000000000..87e6dca8f
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/include/board.h
@@ -0,0 +1,251 @@
+/************************************************************************************
+ * configs/lm4f120-launchpad/include/board.h
+ * include/arch/board/board.h
+ *
+ * Copyright (C) 2010 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.
+ *
+ ************************************************************************************/
+
+#ifndef __ARCH_BOARD_BOARD_H
+#define __ARCH_BOARD_BOARD_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/* Clocking *************************************************************************/
+
+/* RCC settings. Crytals on-board the LM4F120 LaunchPad include:
+ *
+ * 16MHz connected to OSC0/1 (pins 40/41)
+ * 32.768kHz connected to XOSC0/1 (pins 34/36)
+ */
+
+#define SYSCON_RCC_XTAL SYSCON_RCC_XTAL16000KHZ /* On-board crystall is 16 MHz */
+#define XTAL_FREQUENCY 16000000
+
+/* Oscillator source is the main oscillator */
+
+#define SYSCON_RCC_OSCSRC SYSCON_RCC_OSCSRC_MOSC
+#define SYSCON_RCC2_OSCSRC SYSCON_RCC2_OSCSRC2_MOSC
+#define OSCSRC_FREQUENCY XTAL_FREQUENCY
+
+/* Use system divider = 4; this corresponds to a system clock frequency
+ * of (400 / 2) / 4 = 50MHz
+ */
+
+#define LM_SYSDIV 4
+#define SYSCLK_FREQUENCY 50000000 /* 50MHz */
+#warning "FIXME: LM4F120 should run at 80MHz"
+
+/* Other RCC settings:
+ *
+ * - Main and internal oscillators enabled.
+ * - PLL and sys dividers not bypassed
+ * - PLL not powered down
+ * - No auto-clock gating reset
+ */
+
+#define LM_RCC_VALUE (SYSCON_RCC_OSCSRC | SYSCON_RCC_XTAL | SYSCON_RCC_USESYSDIV | SYSCON_RCC_SYSDIV(LM_SYSDIV))
+
+/* RCC2 settings -- RCC2 not used. Other RCC2 settings
+ *
+ * - PLL and sys dividers not bypassed.
+ * - PLL not powered down
+ * - Not using RCC2
+ */
+
+#define LM_RCC2_VALUE (SYSCON_RCC2_OSCSRC | SYSCON_RCC2_SYSDIV(LM_SYSDIV))
+
+/* LED definitions ******************************************************************/
+/* The LM32F120 has a single RGB LED. There is only one visible LED which will vary
+ * in color. But, from the standpoint of the firmware, this appears as three LEDs:
+ *
+ * BOARD_LED_R -- Connected to PF1
+ * BOARD_LED_G -- Connected to PF3
+ * BOARD_LED_B -- Connected to PF2
+ */
+
+/* LED index values for use with lm4f_setled() */
+
+#define BOARD_LED_R 0
+#define BOARD_LED_G 1
+#define BOARD_LED_B 2
+#define BOARD_NLEDS 3
+
+/* LED bits for use with lm4f_setleds() */
+
+#define BOARD_LED1_BIT (1 << BOARD_LED1)
+#define BOARD_LED2_BIT (1 << BOARD_LED2)
+
+/* If CONFIG_ARCH_LEDS is defined, then automated support for the LaunchPad LEDs
+ * will be included in the build:
+ *
+ * OFF:
+ * - OFF means that the OS is still initializing. Initialization is very fast so
+ * if you see this at all, it probably means that the system is hanging up
+ * somewhere in the initialization phases.
+ *
+ * GREEN or GREEN-ish
+ * - This means that the OS completed initialization.
+ *
+ * Bluish:
+ * - Whenever and interrupt or signal handler is entered, the BLUE LED is
+ * illuminated and extinguished when the interrupt or signal handler exits.
+ * This will add a BLUE-ish tinge to the LED.
+ *
+ * Redish:
+ * - If a recovered assertion occurs, the RED component will be illuminated
+ * briefly while the assertion is handled. You will probably never see this.
+ *
+ * Flashing RED:
+ * - In the event of a fatal crash, the BLUE and GREEN components will be
+ * extinguished and the RED component will FLASH at a 2Hz rate.
+ */
+ /* RED GREEN BLUE */
+#define LED_STARTED 0 /* OFF OFF OFF */
+#define LED_HEAPALLOCATE 0 /* OFF OFF OFF */
+#define LED_IRQSENABLED 0 /* OFF OFF OFF */
+#define LED_STACKCREATED 1 /* OFF ON OFF */
+#define LED_INIRQ 2 /* NC NC ON (momentary) */
+#define LED_SIGNAL 2 /* NC NC ON (momentary) */
+#define LED_ASSERTION 3 /* ON NC NC (momentary) */
+#define LED_PANIC 3 /* ON OFF OFF (flashing 2Hz) */
+
+/* LED definitions ******************************************************************/
+/* The LM32F120 has a two buttons:
+ *
+ * BOARD_SW1 -- Connected to PF4
+ * BOARD_SW2 -- Connected to PF0
+ */
+
+#define BUTTON_SW1 0
+#define BUTTON_SW2 1
+#define NUM_BUTTONS 2
+
+#define BUTTON_SW1_BIT (1 << BUTTON_SW1)
+#define BUTTON_SW2_BIT (1 << BUTTON_SW2)
+
+/************************************************************************************
+ * Public Function Prototypes
+ ************************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/************************************************************************************
+ * Name: lm_boardinitialize
+ *
+ * Description:
+ * All Stellaris architectures must provide the following entry point. This entry
+ * point is called early in the intitialization -- after all memory has been
+ * configured and mapped but before any devices have been initialized.
+ *
+ ************************************************************************************/
+
+void lm_boardinitialize(void);
+
+/************************************************************************************
+ * Name: lm4f_ledinit, lm4f_setled, and lm4f_setleds
+ *
+ * Description:
+ * If CONFIG_ARCH_LEDS is defined, then NuttX will control the on-board LED. If
+ * CONFIG_ARCH_LEDS is not defined, then the following interfaces are available to
+ * control the LEDs from user applications.
+ *
+ ************************************************************************************/
+
+#ifndef CONFIG_ARCH_LEDS
+void lm4f_ledinit(void);
+void lm4f_setled(int led, bool ledon);
+void lm4f_setleds(uint8_t ledset);
+#endif
+
+/************************************************************************************
+ * Name: up_buttoninit
+ *
+ * Description:
+ * up_buttoninit() must be called to initialize button resources. After that,
+ * up_buttons() may be called to collect the current state of all buttons or
+ * up_irqbutton() may be called to register button interrupt handlers.
+ *
+ ************************************************************************************/
+
+#ifdef CONFIG_ARCH_BUTTONS
+void up_buttoninit(void);
+
+/************************************************************************************
+ * Name: up_buttons
+ *
+ * Description:
+ * up_buttoninit() must be called to initialize button resources. After that,
+ * up_buttons() may be called to collect the current state of all buttons.
+ *
+ * After up_buttoninit() has been called, up_buttons() may be called to collect
+ * the state of all buttons. up_buttons() returns an 8-bit bit set with each bit
+ * associated with a button. See the BOARD_BUTTON_*_BIT and BOARD_JOYSTICK_*_BIT
+ * definitions above for the meaning of each bit.
+ *
+ ************************************************************************************/
+
+uint8_t up_buttons(void);
+
+/************************************************************************************
+ * Button support.
+ *
+ * Description:
+ * up_buttoninit() must be called to initialize button resources. After that,
+ * up_irqbutton() may be called to register button interrupt handlers.
+ *
+ * up_irqbutton() may be called to register an interrupt handler that will be called
+ * when a button is depressed or released. The ID value is a button enumeration
+ * value that uniquely identifies a button resource. See the BOARD_BUTTON_* and
+ * BOARD_JOYSTICK_* definitions in above for the meaning of enumeration values
+ * The previous interrupt handler address is returned (so that it may restored, if
+ * so desired).
+ *
+ * Note that up_irqbutton() also enables button interrupts. Button interrupts
+ * will remain enabled after the interrupt handler is attached. Interrupts may
+ * be disabled (and detached) by calling up_irqbutton with irqhandler equal to
+ * NULL.
+ *
+ ************************************************************************************/
+
+#if defined(CONFIG_ARCH_IRQBUTTONS) && defined(CONFIG_GPIO_IRQ)
+xcpt_t up_irqbutton(int id, xcpt_t irqhandler);
+#endif
+#endif /* CONFIG_ARCH_BUTTONS */
+
+#endif /* __ASSEMBLY__ */
+#endif /* __ARCH_BOARD_BOARD_H */
diff --git a/nuttx/configs/lm4f120-launchpad/ostest/Make.defs b/nuttx/configs/lm4f120-launchpad/ostest/Make.defs
new file mode 100644
index 000000000..fdf79f3c7
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/ostest/Make.defs
@@ -0,0 +1,109 @@
+############################################################################
+# configs/lm4f120-launchpad/ostest/Make.defs
+#
+# Copyright (C) 2010 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.
+#
+############################################################################
+
+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/nuttx/configs/lm4f120-launchpad/ostest/defconfig b/nuttx/configs/lm4f120-launchpad/ostest/defconfig
new file mode 100755
index 000000000..fdc515995
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/ostest/defconfig
@@ -0,0 +1,531 @@
+#
+# 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_LM=y
+CONFIG_ARCH_CHIP_LM4F=y
+# 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_SAM3U is not set
+# CONFIG_ARCH_CHIP_STM32 is not set
+# CONFIG_ARCH_CHIP_STR71X is not set
+CONFIG_ARCH_CORTEXM4=y
+CONFIG_ARCH_FAMILY="armv7-m"
+CONFIG_ARCH_CHIP="lm"
+CONFIG_ARCH_HAVE_MPU=y
+# CONFIG_ARMV7M_MPU is not set
+CONFIG_BOARD_LOOPSPERMSEC=4531
+# CONFIG_ARCH_CALIBRATION 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_EABI is not set
+CONFIG_ARMV7M_OABI_TOOLCHAIN=y
+
+#
+# Stellaris Configuration Options
+#
+# CONFIG_ARCH_CHIP_LM3S6918 is not set
+# CONFIG_ARCH_CHIP_LM3S9B96 is not set
+# CONFIG_ARCH_CHIP_LM3S6432 is not set
+CONFIG_ARCH_CHIP_LM4F120=y
+# CONFIG_ARCH_CHIP_LM3S8962 is not set
+# CONFIG_LM_REVA2 is not set
+
+#
+# Select Stellaris Peripheral Support
+#
+CONFIG_LM_UART0=y
+# CONFIG_LM_UART1 is not set
+# CONFIG_SSI0_DISABLE is not set
+CONFIG_SSI1_DISABLE=y
+# CONFIG_LM_UART2 is not set
+# CONFIG_LM_ETHERNET is not set
+
+#
+# Disable GPIO Interrupts
+#
+# CONFIG_LM_DISABLE_GPIOA_IRQS is not set
+# CONFIG_LM_DISABLE_GPIOB_IRQS is not set
+# CONFIG_LM_DISABLE_GPIOC_IRQS is not set
+# CONFIG_LM_DISABLE_GPIOD_IRQS is not set
+# CONFIG_LM_DISABLE_GPIOE_IRQS is not set
+# CONFIG_LM_DISABLE_GPIOF_IRQS is not set
+# CONFIG_LM_DISABLE_GPIOG_IRQS is not set
+CONFIG_LM_DISABLE_GPIOH_IRQS=y
+CONFIG_LM_DISABLE_GPIOJ_IRQS=y
+
+#
+# Stellaris SSI Configuration
+#
+CONFIG_SSI_POLLWAIT=y
+CONFIG_SSI_TXLIMIT=4
+# CONFIG_SDIO_DMA is not set
+# CONFIG_SDIO_WIDTH_D1_ONLY is not set
+
+#
+# Architecture Options
+#
+# CONFIG_ARCH_NOINTC 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_STACKDUMP=y
+# CONFIG_ENDIAN_BIG is not set
+
+#
+# Board Settings
+#
+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_LM4FLAUNCHPAD=y
+# CONFIG_ARCH_BOARD_CUSTOM is not set
+CONFIG_ARCH_BOARD="lm4f120-launchpad"
+
+#
+# Common Board Options
+#
+CONFIG_ARCH_HAVE_LEDS=y
+CONFIG_ARCH_LEDS=y
+
+#
+# Board-Specific Options
+#
+
+#
+# RTOS Features
+#
+CONFIG_MSEC_PER_TICK=10
+CONFIG_RR_INTERVAL=200
+# CONFIG_SCHED_INSTRUMENTATION is not set
+CONFIG_TASK_NAME_SIZE=0
+# CONFIG_JULIAN_TIME is not set
+CONFIG_START_YEAR=2010
+CONFIG_START_MONTH=5
+CONFIG_START_DAY=6
+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_WORKQUEUE is not set
+# CONFIG_SCHED_WAITPID is not set
+# CONFIG_SCHED_ATEXIT is not set
+# CONFIG_SCHED_ONEXIT is not set
+CONFIG_USER_ENTRYPOINT="ostest_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_MOUNTPOINT=y
+CONFIG_DISABLE_ENVIRON=y
+CONFIG_DISABLE_POLL=y
+
+#
+# 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_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_BCH is not set
+# CONFIG_INPUT is not set
+# CONFIG_LCD is not set
+CONFIG_MMCSD=y
+CONFIG_MMCSD_NSLOTS=1
+# CONFIG_MMCSD_READONLY is not set
+# CONFIG_MMCSD_MULTIBLOCK_DISABLE is not set
+CONFIG_MMCSD_MMCSUPPORT=y
+CONFIG_MMCSD_HAVECARDDETECT=y
+CONFIG_MMCSD_SPI=y
+CONFIG_MMCSD_SPICLOCK=12500000
+# CONFIG_MMCSD_SDIO is not set
+# CONFIG_SDIO_MUXBUS 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_SERCOMM_CONSOLE is not set
+CONFIG_SERIAL=y
+CONFIG_DEV_LOWCONSOLE=y
+# CONFIG_16550_UART is not set
+CONFIG_ARCH_HAVE_UART0=y
+CONFIG_MCU_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_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_FS_RAMMAP is not set
+
+#
+# System Logging
+#
+# CONFIG_SYSLOG is not set
+
+#
+# Graphics Support
+#
+# CONFIG_NX is not set
+
+#
+# Memory Management
+#
+# CONFIG_MM_SMALL is not set
+CONFIG_MM_REGIONS=1
+# CONFIG_GRAN is not set
+
+#
+# Binary Formats
+#
+# CONFIG_BINFMT_DISABLE is not set
+# CONFIG_NXFLAT is not set
+# CONFIG_ELF is not set
+# 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_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_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 Helper Functions
+#
+# CONFIG_LIB_KBDCODEC is not set
+
+#
+# Basic CXX Support
+#
+# CONFIG_C99_BOOL8 is not set
+# CONFIG_HAVE_CXX is not set
+
+#
+# Application Configuration
+#
+
+#
+# Built-In Applications
+#
+# CONFIG_BUILTIN is not set
+
+#
+# Examples
+#
+# CONFIG_EXAMPLES_BUTTONS is not set
+# CONFIG_EXAMPLES_CAN is not set
+# CONFIG_EXAMPLES_CDCACM is not set
+# CONFIG_EXAMPLES_COMPOSITE 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_MOUNT is not set
+# CONFIG_EXAMPLES_MODBUS is not set
+# CONFIG_EXAMPLES_NETTEST is not set
+# CONFIG_EXAMPLES_NSH is not set
+# 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=y
+# CONFIG_EXAMPLES_OSTEST_BUILTIN is not set
+CONFIG_EXAMPLES_OSTEST_LOOPS=1
+CONFIG_EXAMPLES_OSTEST_STACKSIZE=2048
+CONFIG_EXAMPLES_OSTEST_NBARRIER_THREADS=3
+CONFIG_EXAMPLES_OSTEST_RR_RANGE=10000
+CONFIG_EXAMPLES_OSTEST_RR_RUNS=10
+# CONFIG_EXAMPLES_PASHELLO is not set
+# CONFIG_EXAMPLES_PIPE is not set
+# CONFIG_EXAMPLES_POLL 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_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
+
+#
+# Interpreters
+#
+
+#
+# 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
+
+#
+# ModBus
+#
+
+#
+# FreeModbus
+#
+# CONFIG_MODBUS is not set
+
+#
+# NSH Library
+#
+# CONFIG_NSH_LIBRARY 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
+
+#
+# readline()
+#
+# CONFIG_SYSTEM_READLINE is not set
+
+#
+# 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
diff --git a/nuttx/configs/lm4f120-launchpad/ostest/setenv.sh b/nuttx/configs/lm4f120-launchpad/ostest/setenv.sh
new file mode 100755
index 000000000..831ad2add
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/ostest/setenv.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# configs/lm4f120-launchpad/ostest/setenv.sh
+#
+# Copyright (C) 2010 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.
+#
+
+if [ "$(basename $0)" = "setenv.sh" ] ; then
+ echo "You must source this script, not run it!" 1>&2
+ exit 1
+fi
+
+if [ -z "${PATH_ORIG}" ]; then export PATH_ORIG="${PATH}"; fi
+
+WD=`pwd`
+export BUILDROOT_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
+export PATH="${BUILDROOT_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
+
+echo "PATH : ${PATH}"
diff --git a/nuttx/configs/lm4f120-launchpad/scripts/ld.script b/nuttx/configs/lm4f120-launchpad/scripts/ld.script
new file mode 100755
index 000000000..bff22ec50
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/scripts/ld.script
@@ -0,0 +1,115 @@
+/****************************************************************************
+ * configs/lm4f120-launchpad/scripts/ld.script
+ *
+ * Copyright (C) 2013 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.
+ *
+ ****************************************************************************/
+
+/* The LM4F120H5QR has 256Kb of FLASH beginning at address 0x0000:0000 and
+ * 32Kb of SRAM beginning at 0x2000:0000.
+ */
+
+MEMORY
+{
+ flash (rx) : ORIGIN = 0x00000000, LENGTH = 256K
+ sram (rwx) : ORIGIN = 0x20000000, LENGTH = 32K
+}
+
+OUTPUT_ARCH(arm)
+ENTRY(_stext)
+
+SECTIONS
+{
+ .text : {
+ _stext = ABSOLUTE(.);
+ *(.vectors)
+ *(.text .text.*)
+ *(.fixup)
+ *(.gnu.warning)
+ *(.rodata .rodata.*)
+ *(.gnu.linkonce.t.*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.got)
+ *(.gcc_except_table)
+ *(.gnu.linkonce.r.*)
+ _etext = ABSOLUTE(.);
+ } > flash
+
+ .init_section : {
+ _sinit = ABSOLUTE(.);
+ *(.init_array .init_array.*)
+ _einit = ABSOLUTE(.);
+ } > flash
+
+ .ARM.extab : {
+ *(.ARM.extab*)
+ } > flash
+
+ __exidx_start = ABSOLUTE(.);
+ .ARM.exidx : {
+ *(.ARM.exidx*)
+ } > flash
+ __exidx_end = ABSOLUTE(.);
+
+ _eronly = ABSOLUTE(.);
+
+ .data : {
+ _sdata = ABSOLUTE(.);
+ *(.data .data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ _edata = ABSOLUTE(.);
+ } > sram AT > flash
+
+ .bss : {
+ _sbss = ABSOLUTE(.);
+ *(.bss .bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ _ebss = ABSOLUTE(.);
+ } > sram
+
+ /* Stabs debugging sections. */
+
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_info 0 : { *(.debug_info) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ .debug_aranges 0 : { *(.debug_aranges) }
+}
diff --git a/nuttx/configs/lm4f120-launchpad/src/Makefile b/nuttx/configs/lm4f120-launchpad/src/Makefile
new file mode 100644
index 000000000..ba45657d0
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/src/Makefile
@@ -0,0 +1,91 @@
+############################################################################
+# configs/lm4f120-launchpad/src/Makefile
+#
+# Copyright (C) 2013 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.
+#
+############################################################################
+
+-include $(TOPDIR)/Make.defs
+
+CFLAGS += -I$(TOPDIR)/sched
+
+ASRCS =
+AOBJS = $(ASRCS:.S=$(OBJEXT))
+CSRCS = lm4f_boot.c lm4f_ssi.c
+
+ifeq ($(CONFIG_ARCH_LEDS),y)
+CSRCS += lm4f_autoleds.c
+endif
+
+ifeq ($(CONFIG_NSH_ARCHINIT),y)
+CSRCS += lm4f_nsh.c
+endif
+
+COBJS = $(CSRCS:.c=$(OBJEXT))
+
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
+
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+ifeq ($(WINTOOL),y)
+ CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
+ -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
+ -I "${shell cygpath -w $(ARCH_SRCDIR)/armv7-m}"
+else
+ CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(ARCH_SRCDIR)/armv7-m
+endif
+
+all: libboard$(LIBEXT)
+
+$(AOBJS): %$(OBJEXT): %.S
+ $(call ASSEMBLE, $<, $@)
+
+$(COBJS) $(LINKOBJS): %$(OBJEXT): %.c
+ $(call COMPILE, $<, $@)
+
+libboard$(LIBEXT): $(OBJS)
+ $(call ARCHIVE, $@, $(OBJS))
+
+.depend: Makefile $(SRCS)
+ $(Q) $(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
+ $(Q) touch $@
+
+depend: .depend
+
+clean:
+ $(call DELFILE, libboard$(LIBEXT))
+ $(call CLEAN)
+
+distclean: clean
+ $(call DELFILE, Make.dep)
+ $(call DELFILE, .depend)
+
+-include Make.dep
diff --git a/nuttx/configs/lm4f120-launchpad/src/lm4f_autoleds.c b/nuttx/configs/lm4f120-launchpad/src/lm4f_autoleds.c
new file mode 100644
index 000000000..313c995da
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/src/lm4f_autoleds.c
@@ -0,0 +1,227 @@
+/****************************************************************************
+ * configs/lm4f120-launchpad/src/lm4f_leds.c
+ * arch/arm/src/board/lm4f_leds.c
+ *
+ * Copyright (C) 2013 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 <stdbool.h>
+#include <debug.h>
+
+#include <arch/board/board.h>
+
+#include "chip.h"
+#include "up_arch.h"
+#include "up_internal.h"
+#include "lm_gpio.h"
+#include "lmf4120-launchpad.h"
+
+/****************************************************************************
+ * Definitions
+ ****************************************************************************/
+/* The LM32F120 has a single RGB LED. There is only one visible LED which will vary
+ * in color. But, from the standpoint of the firmware, this appears as three LEDs:
+ *
+ * BOARD_LED_R -- Connected to PF1
+ * BOARD_LED_G -- Connected to PF3
+ * BOARD_LED_B -- Connected to PF2
+ *
+ * If CONFIG_ARCH_LEDS is defined, then automated support for the LaunchPad LEDs
+ * will be included in the build:
+ *
+ * OFF:
+ * - OFF means that the OS is still initializing. Initialization is very fast so
+ * if you see this at all, it probably means that the system is hanging up
+ * somewhere in the initialization phases.
+ *
+ * GREEN or GREEN-ish
+ * - This means that the OS completed initialization.
+ *
+ * Bluish:
+ * - Whenever and interrupt or signal handler is entered, the BLUE LED is
+ * illuminated and extinguished when the interrupt or signal handler exits.
+ * This will add a BLUE-ish tinge to the LED.
+ *
+ * Redish:
+ * - If a recovered assertion occurs, the RED component will be illuminated
+ * briefly while the assertion is handled. You will probably never see this.
+ *
+ * Flashing RED:
+ * - In the event of a fatal crash, the BLUE and GREEN components will be
+ * extinguished and the RED component will FLASH at a 2Hz rate.
+ *
+ * RED GREEN BLUE
+ * LED_STARTED 0 OFF OFF OFF
+ * LED_HEAPALLOCATE 0 OFF OFF OFF
+ * LED_IRQSENABLED 0 OFF OFF OFF
+ * LED_STACKCREATED 1 OFF ON OFF
+ * LED_INIRQ 2 NC NC ON (momentary)
+ * LED_SIGNAL 2 NC NC ON (momentary)
+ * LED_ASSERTION 3 ON NC NC (momentary)
+ * LED_PANIC 3 ON OFF OFF (flashing 2Hz)
+ */
+
+/* CONFIG_DEBUG_LEDS enables debug output from this file (needs CONFIG_DEBUG
+ * with CONFIG_DEBUG_VERBOSE too)
+ */
+
+#ifdef CONFIG_DEBUG_LEDS
+# define leddbg lldbg
+# define ledvdbg llvdbg
+#else
+# define leddbg(x...)
+# define ledvdbg(x...)
+#endif
+
+/* Dump GPIO registers */
+
+#ifdef CONFIG_DEBUG_LEDS
+# define led_dumpgpio(m) lm_dumpgpio(LED_GPIO, m)
+#else
+# define led_dumpgpio(m)
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: lm4f_ledinit
+ ****************************************************************************/
+
+#ifdef CONFIG_ARCH_LEDS
+void lm4f_ledinit(void)
+{
+ leddbg("Initializing\n");
+
+ /* Configure Port E, Bit 1 as an output, initial value=OFF */
+
+ led_dumpgpio("lm4f_ledinit before lm_configgpio()");
+ lm_configgpio(GPIO_LED_R);
+ lm_configgpio(GPIO_LED_G);
+ lm_configgpio(GPIO_LED_B);
+ led_dumpgpio("lm4f_ledinit after lm_configgpio()");
+}
+
+/****************************************************************************
+ * Name: up_ledon
+ ****************************************************************************/
+
+void up_ledon(int led)
+{
+ switch (led)
+ {
+ /* All components stay off until the file initialization step */
+
+ default:
+ case LED_STARTED:
+ case LED_HEAPALLOCATE:
+ case LED_IRQSENABLED:
+ default:
+ break;
+
+ /* The GREEN component is illuminated at the final initialization step */
+
+ case LED_STACKCREATED:
+ lm_gpiowrite(GPIO_LED_GREEN, false);
+ break;
+
+ /* These will illuminate the BLUE component with on effect no RED and GREEN */
+
+ case LED_INIRQ:
+ case LED_SIGNAL:
+ lm_gpiowrite(GPIO_LED_BLUE, false);
+ break;
+
+ /* This will turn off RED and GREEN and turn RED on */
+
+ case LED_PANIC:
+ lm_gpiowrite(GPIO_LED_GREEN, true);
+ lm_gpiowrite(GPIO_LED_BLUE, true);
+
+ /* This will illuminate the RED component with no effect on RED and GREEN */
+
+ case LED_ASSERTION:
+ lm_gpiowrite(GPIO_LED_RED, false);
+ break;
+ }
+}
+
+/****************************************************************************
+ * Name: up_ledoff
+ ****************************************************************************/
+
+void up_ledoff(int led)
+{
+ switch (led)
+ {
+ /* These should not happen and are ignored */
+
+ default:
+ case LED_STARTED:
+ case LED_HEAPALLOCATE:
+ case LED_IRQSENABLED:
+ case LED_STACKCREATED:
+ default:
+ break;
+
+ /* These will extinguish the BLUE component with no effect on RED and GREEN */
+
+ case LED_INIRQ:
+ case LED_SIGNAL:
+ lm_gpiowrite(GPIO_LED_BLUE, true);
+ break;
+
+ /* These will extinguish the RED component with on effect on RED and GREEN */
+
+ case LED_INIRQ:
+ case LED_SIGNAL:
+ lm_gpiowrite(GPIO_LED_RED, true);
+ break;
+ }
+}
+
+#endif /* CONFIG_ARCH_LEDS */
diff --git a/nuttx/configs/lm4f120-launchpad/src/lm4f_boot.c b/nuttx/configs/lm4f120-launchpad/src/lm4f_boot.c
new file mode 100644
index 000000000..537dc15e3
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/src/lm4f_boot.c
@@ -0,0 +1,93 @@
+/************************************************************************************
+ * configs/lm4f120-launchpad/src/lm4f_boot.c
+ * arch/arm/src/board/lm4f_boot.c
+ *
+ * Copyright (C) 2013 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 <debug.h>
+
+#include <arch/board/board.h>
+
+#include "up_arch.h"
+#include "up_internal.h"
+#include "lmf4120-launchpad.h"
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Private Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: lm_boardinitialize
+ *
+ * Description:
+ * All Stellaris architectures must provide the following entry point. This entry
+ * point is called early in the intitialization -- after all memory has been
+ * configured and mapped but before any devices have been initialized.
+ *
+ ************************************************************************************/
+
+void lm_boardinitialize(void)
+{
+ /* Configure SPI chip selects if 1) SSI is not disabled, and 2) the weak function
+ * lm_ssiinitialize() has been brought into the link.
+ */
+
+ /* The LM4F LaunchPad microSD CS and OLED are on SSI0 (Duh! There is no SSI1) */
+
+#if !defined(CONFIG_SSI0_DISABLE) /* || !defined(CONFIG_SSI1_DISABLE) */
+ if (lm4f_ssiinitialize)
+ {
+ lm4f_ssiinitialize();
+ }
+#endif
+
+ /* Configure on-board LEDs if LED support has been selected. */
+
+#ifdef CONFIG_ARCH_LEDS
+ lm4f_ledinit();
+#endif
+}
diff --git a/nuttx/configs/lm4f120-launchpad/src/lm4f_nsh.c b/nuttx/configs/lm4f120-launchpad/src/lm4f_nsh.c
new file mode 100644
index 000000000..3efcf4c72
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/src/lm4f_nsh.c
@@ -0,0 +1,102 @@
+/****************************************************************************
+ * config/lm4f120-launchpad/src/lm4f_nsh.c
+ * arch/arm/src/board/lm4f_nsh.c
+ *
+ * Copyright (C) 2013 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 <stdio.h>
+#include <debug.h>
+#include <errno.h>
+
+#include <nuttx/spi.h>
+#include <nuttx/mmcsd.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+/* PORT and SLOT number probably depend on the board configuration */
+
+#ifdef CONFIG_ARCH_BOARD_LM4FLAUNCHPAD
+# undef NSH_HAVEUSBDEV
+#else
+# error "Unrecognized lm3s board"
+# undef NSH_HAVEUSBDEV
+#endif
+
+/* Can't support USB features if USB is not enabled */
+
+#ifndef CONFIG_USBDEV
+# undef NSH_HAVEUSBDEV
+#endif
+
+/* Debug ********************************************************************/
+
+#ifdef CONFIG_CPP_HAVE_VARARGS
+# ifdef CONFIG_DEBUG
+# define message(...) lowsyslog(__VA_ARGS__)
+# else
+# define message(...) printf(__VA_ARGS__)
+# endif
+#else
+# ifdef CONFIG_DEBUG
+# define message lowsyslog
+# else
+# define message printf
+# endif
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nsh_archinitialize
+ *
+ * Description:
+ * Perform architecture specific initialization
+ *
+ ****************************************************************************/
+
+int nsh_archinitialize(void)
+{
+ return OK;
+}
diff --git a/nuttx/configs/lm4f120-launchpad/src/lm4f_ssi.c b/nuttx/configs/lm4f120-launchpad/src/lm4f_ssi.c
new file mode 100644
index 000000000..92b68d082
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/src/lm4f_ssi.c
@@ -0,0 +1,134 @@
+/************************************************************************************
+ * configs/lm4f120-launchpad/src/lm4f_ssi.c
+ * arch/arm/src/board/lm4f_ssi.c
+ *
+ * Copyright (C) 2013 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 <stdint.h>
+#include <stdbool.h>
+#include <debug.h>
+
+#include <nuttx/spi.h>
+#include <arch/board/board.h>
+
+#include "up_arch.h"
+#include "chip.h"
+#include "lm_gpio.h"
+#include "lmf4120-launchpad.h"
+
+/* The LM4F LaunchPad microSD CS is on SSI0 */
+
+#if !defined(CONFIG_SSI0_DISABLE) || !defined(CONFIG_SSI1_DISABLE)
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/* CONFIG_DEBUG_SPI enables debug output from this file (needs CONFIG_DEBUG too) */
+
+#ifdef CONFIG_DEBUG_SPI
+# define ssidbg lldbg
+# endif
+#else
+# define ssidbg(x...)
+#endif
+
+/* Dump GPIO registers */
+
+#if defined(CONFIG_DEBUG_SPI) && defined(CONFIG_DEBUG_VERBOSE)
+# define ssivdbg lldbg
+# define ssi_dumpgpio(m) lm_dumpgpio(SDCCS_GPIO, m)
+#else
+# define ssivdbg(x...)
+# define ssi_dumpgpio(m)
+#endif
+
+/************************************************************************************
+ * Private Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: lm4f_ssiinitialize
+ *
+ * Description:
+ * Called to configure SPI chip select GPIO pins for the LM4F LaunchPad.
+ *
+ ************************************************************************************/
+
+void weak_function lm4f_ssiinitialize(void)
+{
+}
+
+/****************************************************************************
+ * The external functions, lm_spiselect and lm_spistatus must be provided
+ * by board-specific logic. The are implementations of the select and status
+ * methods SPI interface defined by struct spi_ops_s (see include/nuttx/spi.h).
+ * All othermethods (including lm_spiinitialize()) are provided by common
+ * logic. To use this common SPI logic on your board:
+ *
+ * 1. Provide lm_spiselect() and lm_spistatus() functions in your
+ * board-specific logic. This function will perform chip selection and
+ * status operations using GPIOs in the way your board is configured.
+ * 2. Add a call to lm_spiinitialize() in your low level initialization
+ * logic
+ * 3. The handle returned by lm_spiinitialize() may then be used to bind the
+ * SPI driver to higher level logic (e.g., calling
+ * mmcsd_spislotinitialize(), for example, will bind the SPI driver to
+ * the SPI MMC/SD driver).
+ *
+ ****************************************************************************/
+
+void lm_spiselect(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
+{
+ ssidbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
+ ssi_dumpgpio("lm_spiselect() Entry");
+ ssi_dumpgpio("lm_spiselect() Exit");
+}
+
+uint8_t lm_spistatus(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
+{
+ ssidbg("Returning SPI_STATUS_PRESENT\n");
+ return SPI_STATUS_PRESENT;
+}
+
+#endif /* !CONFIG_SSI0_DISABLE || !CONFIG_SSI1_DISABLE */
diff --git a/nuttx/configs/lm4f120-launchpad/src/lmf4120-launchpad.h b/nuttx/configs/lm4f120-launchpad/src/lmf4120-launchpad.h
new file mode 100644
index 000000000..5f5812645
--- /dev/null
+++ b/nuttx/configs/lm4f120-launchpad/src/lmf4120-launchpad.h
@@ -0,0 +1,143 @@
+/************************************************************************************
+ * configs/lm4f120-launchpad/src/lmf4120-launchpad.h
+ * arch/arm/src/board/lmf4120-launchpad.h
+ *
+ * Copyright (C) 2013 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.
+ *
+ ************************************************************************************/
+
+#ifndef __CONFIGS_LM4F120_LAUNCHPAD_LM4F120_LAUNCHPAD_H
+#define __CONFIGS_LM4F120_LAUNCHPAD_LM4F120_LAUNCHPAD_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+#include <nuttx/compiler.h>
+
+#include "chip.h"
+#include "lm_gpio.h"
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/* How many SSI modules does this chip support? The LM3S6965 supports 1 SSI
+ * module (others may support more than 2 -- in such case, the following must be
+ * expanded).
+ */
+
+#if LM_NSSI < 1
+# undef CONFIG_SSI0_DISABLE
+# define CONFIG_SSI0_DISABLE 1
+# undef CONFIG_SSI1_DISABLE
+# define CONFIG_SSI1_DISABLE 1
+#elif LM_NSSI < 2
+# undef CONFIG_SSI1_DISABLE
+# define CONFIG_SSI1_DISABLE 1
+#endif
+
+/* LM4F LaunchPad *******************************************************************/
+/* The LM32F120 has a single RGB LED. There is only one visible LED which will vary
+ * in color. But, from the standpoint of the firmware, this appears as three LEDs:
+ *
+ * BOARD_LED_R -- Connected to PF1
+ * BOARD_LED_G -- Connected to PF3
+ * BOARD_LED_B -- Connected to PF2
+ *
+ * If CONFIG_ARCH_LEDS is defined, then automated support for the LaunchPad LEDs
+ * will be included in the build:
+ *
+ * OFF:
+ * - OFF means that the OS is still initializing. Initialization is very fast so
+ * if you see this at all, it probably means that the system is hanging up
+ * somewhere in the initialization phases.
+ *
+ * GREEN or GREEN-ish
+ * - This means that the OS completed initialization.
+ *
+ * Bluish:
+ * - Whenever and interrupt or signal handler is entered, the BLUE LED is
+ * illuminated and extinguished when the interrupt or signal handler exits.
+ * This will add a BLUE-ish tinge to the LED.
+ *
+ * Redish:
+ * - If a recovered assertion occurs, the RED component will be illuminated
+ * briefly while the assertion is handled. You will probably never see this.
+ *
+ * Flashing RED:
+ * - In the event of a fatal crash, the BLUE and GREEN components will be
+ * extinguished and the RED component will FLASH at a 2Hz rate.
+ *
+ * RED GREEN BLUE
+ * LED_STARTED 0 OFF OFF OFF
+ * LED_HEAPALLOCATE 0 OFF OFF OFF
+ * LED_IRQSENABLED 0 OFF OFF OFF
+ * LED_STACKCREATED 1 OFF ON OFF
+ * LED_INIRQ 2 NC NC ON (momentary)
+ * LED_SIGNAL 2 NC NC ON (momentary)
+ * LED_ASSERTION 3 ON NC NC (momentary)
+ * LED_PANIC 3 ON OFF OFF (flashing 2Hz)
+ */
+
+#define GPIO_LED_R (GPIO_FUNC_OUTPUT | GPIO_VALUE_ONE | GPIO_PORTF | GPIO_PIN_1)
+#define GPIO_LED_G (GPIO_FUNC_OUTPUT | GPIO_VALUE_ONE | GPIO_PORTF | GPIO_PIN_3)
+#define GPIO_LED_B (GPIO_FUNC_OUTPUT | GPIO_VALUE_ONE | GPIO_PORTF | GPIO_PIN_2)
+
+/* The LM32F120 has a two buttons:
+ *
+ * BOARD_SW1 -- Connected to PF4
+ * BOARD_SW2 -- Connected to PF0
+ */
+
+#define GPIO_SW1 (GPIO_FUNC_INTERRUPT | GPIO_INT_BOTHEDGES | GPIO_PORTF | GPIO_PIN_1)
+#define GPIO_SW2 (GPIO_FUNC_INTERRUPT | GPIO_INT_BOTHEDGES | GPIO_PORTF | GPIO_PIN_1)
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/************************************************************************************
+ * Name: lm4f_ssiinitialize
+ *
+ * Description:
+ * Called to configure SPI chip select GPIO pins for the LM4F LaunchPad.
+ *
+ ************************************************************************************/
+
+extern void weak_function lm4f_ssiinitialize(void);
+
+#endif /* __ASSEMBLY__ */
+#endif /* __CONFIGS_LM4F120_LAUNCHPAD_LM4F120_LAUNCHPAD_H */
+
diff --git a/nuttx/configs/zkit-arm-1769/nsh/defconfig b/nuttx/configs/zkit-arm-1769/nsh/defconfig
index baa36f259..cd414d984 100644
--- a/nuttx/configs/zkit-arm-1769/nsh/defconfig
+++ b/nuttx/configs/zkit-arm-1769/nsh/defconfig
@@ -331,7 +331,7 @@ CONFIG_DEV_NULL=y
# CONFIG_I2C is not set
CONFIG_SPI=y
# CONFIG_SPI_OWNBUS is not set
-CONFIG_SPI_EXCHANGE=y
+# CONFIG_SPI_EXCHANGE is not set
# CONFIG_SPI_CMDDATA is not set
# CONFIG_RTC is not set
# CONFIG_WATCHDOG is not set