summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-03-10 11:25:06 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-03-10 11:25:06 -0600
commit6635129582a98c037ef0a22593ae93449843416d (patch)
treeddfc82aba771470070a6c501d3955058e30579d0
parent7beb008424ae27e33eaf1e7b1e2caaa864a5a173 (diff)
downloadnuttx-6635129582a98c037ef0a22593ae93449843416d.tar.gz
nuttx-6635129582a98c037ef0a22593ae93449843416d.tar.bz2
nuttx-6635129582a98c037ef0a22593ae93449843416d.zip
Add basic board support for the TM4C123G Launchpad
-rw-r--r--nuttx/ChangeLog2
-rw-r--r--nuttx/Documentation/README.html4
-rw-r--r--nuttx/README.txt2
-rw-r--r--nuttx/configs/Kconfig13
-rw-r--r--nuttx/configs/README.txt8
-rw-r--r--nuttx/configs/tm4c123g-launchpad/Kconfig7
-rw-r--r--nuttx/configs/tm4c123g-launchpad/README.txt665
-rw-r--r--nuttx/configs/tm4c123g-launchpad/include/board.h222
-rw-r--r--nuttx/configs/tm4c123g-launchpad/nsh/Make.defs110
-rw-r--r--nuttx/configs/tm4c123g-launchpad/nsh/defconfig773
-rwxr-xr-xnuttx/configs/tm4c123g-launchpad/nsh/setenv.sh74
-rwxr-xr-xnuttx/configs/tm4c123g-launchpad/scripts/ld.script115
-rw-r--r--nuttx/configs/tm4c123g-launchpad/src/.gitignore2
-rw-r--r--nuttx/configs/tm4c123g-launchpad/src/Makefile91
-rw-r--r--nuttx/configs/tm4c123g-launchpad/src/tm4c_autoleds.c223
-rw-r--r--nuttx/configs/tm4c123g-launchpad/src/tm4c_boot.c92
-rw-r--r--nuttx/configs/tm4c123g-launchpad/src/tm4c_nsh.c92
-rw-r--r--nuttx/configs/tm4c123g-launchpad/src/tm4c_ssi.c132
-rw-r--r--nuttx/configs/tm4c123g-launchpad/src/tmfc123g-launchpad.h152
-rw-r--r--nuttx/configs/tm4c123g-launchpad/tools/lm4f120-launchpad.cfg71
-rw-r--r--nuttx/configs/tm4c123g-launchpad/tools/oocd.sh58
21 files changed, 2906 insertions, 2 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index 86a577ab5..b376e770b 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -6970,4 +6970,6 @@
TM4C123 (2014-3-9).
* arch/arm/src/tiva/: Add GPIO and SYCONTROL register bit defintions
for the TM4C123 (2014-3-10).
+ * configs/tm4c123g-launchpad: Add basic board support for the
+ TM4C123G-Launchpad (2014-3-10).
diff --git a/nuttx/Documentation/README.html b/nuttx/Documentation/README.html
index 3f6aefbd0..c0dcdb383 100644
--- a/nuttx/Documentation/README.html
+++ b/nuttx/Documentation/README.html
@@ -8,7 +8,7 @@
<tr align="center" bgcolor="#e4e4e4">
<td>
<h1><big><font color="#3c34ec"><i>NuttX README Files</i></font></big></h1>
- <p>Last Updated: January 16, 2014</p>
+ <p>Last Updated: March 10, 2014</p>
</td>
</tr>
</table>
@@ -202,6 +202,8 @@
| | | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/configs/sure-pic32mx/README.txt"><b><i>README.txt</i></b></a>
| | |- teensy/
| | | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/configs/teensy/README.txt"><b><i>README.txt</i></b></a>
+ | | |- tm4c123g-launchpad/
+ | | | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/configs/tm4c123g-launchpad/README.txt"><b><i>README.txt</i></b></a>
| | |- twr-k60n512/
| | | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/configs/twr-k60n512/README.txt"><b><i>README.txt</i></b></a>
| | |- ubw32/
diff --git a/nuttx/README.txt b/nuttx/README.txt
index 16a075b63..f96b5189b 100644
--- a/nuttx/README.txt
+++ b/nuttx/README.txt
@@ -1068,6 +1068,8 @@ nuttx
| | `- README.txt
| |- teensy/
| | `- README.txt
+ | |- tm4c123g-launchpad/
+ | | `- README.txt
| |- twr-k60n512/
| | `- README.txt
| |- ubw32/
diff --git a/nuttx/configs/Kconfig b/nuttx/configs/Kconfig
index 654b7f8ce..cb7fd906b 100644
--- a/nuttx/configs/Kconfig
+++ b/nuttx/configs/Kconfig
@@ -737,6 +737,15 @@ config ARCH_BOARD_TEENSY
developed by http://pjrc.com/teensy/. The Teensy++ 2.0 is based
on an Atmel AT90USB1286 MCU.
+config ARCH_BOARD_TM4C123G_LAUNCHPAD
+ bool "Tiva TM4C124G LaunchPad"
+ depends on ARCH_CHIP_TM4C123GH6ZRB
+ select ARCH_HAVE_LEDS
+ select ARCH_HAVE_BUTTONS
+ select ARCH_HAVE_IRQBUTTONS
+ ---help---
+ Tiva TM4C123G LaunchPad.
+
config ARCH_BOARD_TWR_K60N512
bool "FreeScale TWR-K60N512d evelopment board"
depends on ARCH_CHIP_MK60N512VMD100
@@ -958,6 +967,7 @@ config ARCH_BOARD
default "mikroe-stm32f4" if ARCH_BOARD_MIKROE_STM32F4
default "sure-pic32mx" if ARCH_BOARD_SUREPIC32MX
default "teensy" if ARCH_BOARD_TEENSY
+ default "tm4c123g-launchpad" if ARCH_BOARD_TM4C123G_LAUNCHPAD
default "twr-k60n512" if ARCH_BOARD_TWR_K60N512
default "ubw32" if ARCH_BOARD_UBW32
default "us7032evb1" if ARCH_BOARD_US7032EVB1
@@ -1240,6 +1250,9 @@ endif
if ARCH_BOARD_TEENSY
source "configs/teensy/Kconfig"
endif
+if ARCH_BOARD_TM4C123G_LAUNCHPAD
+source "configs/tm4c123g-launchpad/Kconfig"
+endif
if ARCH_BOARD_TWR_K60N512
source "configs/twr-k60n512/Kconfig"
endif
diff --git a/nuttx/configs/README.txt b/nuttx/configs/README.txt
index 28f83c502..133578e90 100644
--- a/nuttx/configs/README.txt
+++ b/nuttx/configs/README.txt
@@ -268,7 +268,7 @@ configs/lm3s8962-ek
configs/lm4f120-launchpad
This is the port of NuttX 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\
+ platform for ARM® Cortex™-M4F-based microcontrollers from Texas
Instruments.
configs/lpcxpresso-lpc1768
@@ -543,6 +543,12 @@ configs/teensy
developed by http://pjrc.com/teensy/. The Teensy++ 2.0 is based
on an Atmel AT90USB1286 MCU.
+configs/tm4c123g-launchpad
+ This is the port of NuttX to the Tiva TM4C123G LaunchPad. The
+ Tiva® TM4C123G LaunchPad Evaluation Board is a low-cost evaluation
+ platform for ARM® Cortex™-M4F-based microcontrollers from Texas
+ Instruments.
+
configs/twr-k60n512
Kinetis K60 Cortex-M4 MCU. This port uses the FreeScale TWR-K60N512
development board.
diff --git a/nuttx/configs/tm4c123g-launchpad/Kconfig b/nuttx/configs/tm4c123g-launchpad/Kconfig
new file mode 100644
index 000000000..beca73b10
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/Kconfig
@@ -0,0 +1,7 @@
+#
+# For a description of the syntax of this configuration file,
+# see misc/tools/kconfig-language.txt.
+#
+
+if ARCH_BOARD_TM4C123G_LAUNCHPAD
+endif
diff --git a/nuttx/configs/tm4c123g-launchpad/README.txt b/nuttx/configs/tm4c123g-launchpad/README.txt
new file mode 100644
index 000000000..daef9f545
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/README.txt
@@ -0,0 +1,665 @@
+README
+^^^^^^
+
+README for NuttX port to the Tiva TM4C123G LaunchPad. The Tiva TM4C123G
+LaunchPad Evaluation Board is a low-cost evaluation platform for ARM®
+Cortex™-M4F-based microcontrollers from Texas Instruments.
+
+Contents
+^^^^^^^^
+
+ On-Board GPIO Usage
+ Development Environment
+ GNU Toolchain Options
+ IDEs
+ NuttX EABI "buildroot" Toolchain
+ NuttX OABI "buildroot" Toolchain
+ NXFLAT Toolchain
+ LEDs
+ Serial Console
+ USB Device Controller Functions
+ Using OpenOCD and GDB with an FT2232 JTAG emulator
+ TM4C123G LaunchPad Configuration Options
+ Configurations
+
+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 Connects to PD0 via resistor, GPIO, J2 pin 7
+ 04 PB7/SSI2TX/T0CCP1 Connects to PD1 via resistor, 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/olimex-lpc1766stk/README.txt
+
+ Installing OpenOCD in Linux:
+
+ sudo apt-get install openocd
+
+ As of this writing, there is no support for the tm4c123g in the package
+ above. You will have to build openocd from its source (as of this writing
+ the latest commit was b9b4bd1a6410ff1b2885d9c2abe16a4ae7cb885f):
+
+ git clone http://git.code.sf.net/p/openocd/code openocd
+ cd openocd
+
+ Then, add the patches provided by http://openocd.zylin.com/922:
+
+ git fetch http://openocd.zylin.com/openocd refs/changes/22/922/14 && git checkout FETCH_HEAD
+ ./bootstrap
+ ./configure --enable-maintainer-mode --enable-ti-icdi
+ make
+ sudo make install
+
+ For additional help, see http://processors.wiki.ti.com/index.php/Tiva_Launchpad_with_OpenOCD_and_Linux
+
+ Helper Scripts.
+
+ I have been using the on-board In-Circuit Debug Interface (ICDI) interface.
+ OpenOCD requires a configuration file. I keep the one I used last here:
+
+ configs/tm4c123g-launchpad/tools/tm4c123g-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 tm4c123g-launchpad.cfg file with configuration files in
+ /usr/share/openocd/scripts. As of this writing, the configuration
+ files of interest were:
+
+ /usr/local/share/openocd/scripts/board/ek-tm4c123gxl.cfg
+ /usr/local/share/openocd/scripts/interface/ti-icdi.cfg
+ /usr/local/share/openocd/scripts/target/stellaris_icdi.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/tm4c123g-launchpad/tools/tm4c123g-launchpad.cfg
+
+ Starting OpenOCD
+
+ If you are in the top-level NuttX build directlory then you should
+ be able to start the OpenOCD daemon like:
+
+ oocd.sh $PWD
+
+ The relative path to the oocd.sh script is configs/tm4c123g-launchpad/tools,
+ but that should have been added to your PATH variable when you sourced
+ the setenv.sh script.
+
+ Note that OpenOCD needs to be run with administrator privileges in
+ some environments (sudo).
+
+ 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 paths: You will need include/, arch/arm/src/tiva,
+ 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/tiva/tiva_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 tm4c123g-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 TM4C123G 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/tm4c123g-launchpad/include/board.h - Defines LED constants, types and
+ prototypes the LED interface functions.
+
+ - configs/tm4c123g-launchpad/src/tm4c123g-launchpad.h - GPIO settings for the LEDs.
+
+ - configs/tm4c123g-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.
+
+Serial Console
+^^^^^^^^^^^^^^
+
+ By default, all configurations use UART0 which connects to the USB VCOM
+ on the DEBUG port on the TM4C123G LaunchPad:
+
+ UART0 RX - PA.0
+ UART0 TX - PA.1
+
+ However, if you use an external RS232 driver, then other options are
+ available. UART1 has option pin settings and flow control capabilities
+ that are not available with the other UARTS::
+
+ UART1 RX - PB.0 or PC.4 (Need disambiguation in board.h)
+ UART1 TX - PB.1 or PC.5 (" " " " "" " ")
+
+ UART1_RTS - PF.0 or PC.4
+ UART1_CTS - PF.1 or PC.5
+
+ NOTE: board.h currently selects PB.0, PB.1, PF.0 and PF.1 for UART1, but
+ that can be changed by editting board.h
+
+ UART2-5, 7 are also available, UART2 is not recommended because it shares
+ some pin usage with USB device mode. UART6 is not available because its
+ only RX/TX pin options are dedicated to USB support.
+
+ UART2 RX - PD.6
+ UART2 TX - PD.7 (Also used for USB VBUS detection)
+
+ UART3 RX - PC.6
+ UART3 TX - PC.7
+
+ UART4 RX - PC.4
+ UART4 TX - PC.5
+
+ UART5 RX - PE.4
+ UART5 TX - PE.5
+
+ UART6 RX - PD.4, Not available. Dedicated for USB_DM
+ UART6 TX - PD.5, Not available. Dedicated for USB_DP
+
+ UART7 RX - PE.0
+ UART7 TX - PE.1
+
+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 TM4C123G 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 TM4C123G over USB. Once the FT2232 VCP
+ driver is installed, Windows assigns a COM port number to the VCP channel.
+
+TM4C123G 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_CORTEXM4=y
+
+ CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
+
+ CONFIG_ARCH_CHIP="tiva"
+
+ CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
+ chip:
+
+ CONFIG_ARCH_CHIP_TM4C123GH6ZRB
+
+ CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
+ hence, the board that supports the particular chip or SoC.
+
+ CONFIG_ARCH_BOARD=tm4c123g-launchpad (for the TM4C123G LaunchPad)
+
+ CONFIG_ARCH_BOARD_name - For use in C code
+
+ CONFIG_ARCH_BOARD_TM4C123G_LAUNCHPAD
+
+ CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
+ of delay loops
+
+ CONFIG_ENDIAN_BIG - define if big endian (default is little
+ endian)
+
+ CONFIG_RAM_SIZE - Describes the installed DRAM (SRAM in this case):
+
+ CONFIG_RAM_SIZE=0x00008000 (32Kb)
+
+ CONFIG_RAM_START - The start address of installed DRAM
+
+ CONFIG_RAM_START=0x20000000
+
+ CONFIG_ARCH_IRQPRIO - The TM4C123G supports interrupt prioritization
+
+ CONFIG_ARCH_IRQPRIO=n
+
+ 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 TM4C123G.
+ Additional interrupt support can be disabled if desired to reduce memory
+ footprint.
+
+ CONFIG_TIVA_DISABLE_GPIOA_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOB_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOC_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOD_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOE_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOF_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOG_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOH_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOJ_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOK_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOL_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOM_IRQS=n
+ CONFIG_TIVA_DISABLE_GPION_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOP_IRQS=n
+ CONFIG_TIVA_DISABLE_GPIOQ_IRQS=n
+
+ TM4C123G 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_TIVA_ETHERNET - This must be set (along with CONFIG_NET)
+ to build the Tiva Ethernet driver
+ CONFIG_TIVA_ETHLEDS - Enable to use Ethernet LEDs on the board.
+ CONFIG_TIVA_BOARDMAC - If the board-specific logic can provide
+ a MAC address (via tiva_ethernetmac()), then this should be selected.
+ CONFIG_TIVA_ETHHDUPLEX - Set to force half duplex operation
+ CONFIG_TIVA_ETHNOAUTOCRC - Set to suppress auto-CRC generation
+ CONFIG_TIVA_ETHNOPAD - Set to suppress Tx padding
+ CONFIG_TIVA_MULTICAST - Set to enable multicast frames
+ CONFIG_TIVA_PROMISCUOUS - Set to enable promiscuous mode
+ CONFIG_TIVA_BADCRC - Set to enable bad CRC rejection.
+ CONFIG_TIVA_DUMPPACKET - Dump each packet received/sent to the console.
+
+Configurations
+^^^^^^^^^^^^^^
+
+Each TM4C123G LaunchPad configuration is maintained in a
+sub-directory and can be selected as follow:
+
+ cd tools
+ ./configure.sh tm4c123g-launchpad/<subdir>
+ cd -
+ . ./setenv.sh
+
+Where <subdir> is one of the following:
+
+ nsh:
+ ---
+ Configures the NuttShell (nsh) located at apps/examples/nsh. The
+ configuration enables the serial VCOM interfaces on UART0. Support for
+ builtin applications is enabled, but in the base configuration no
+ builtin applications are selected.
+
+ 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. By default, this configuration uses the CodeSourcery toolchain
+ for Windows and builds under Cygwin (or probably MSYS). That
+ can easily be reconfigured, of course.
+
+ 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/tm4c123g-launchpad/include/board.h b/nuttx/configs/tm4c123g-launchpad/include/board.h
new file mode 100644
index 000000000..f2ebca3f4
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/include/board.h
@@ -0,0 +1,222 @@
+/************************************************************************************
+ * configs/tm4c123g-launchpad/include/board.h
+ *
+ * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+#ifndef __CONFIGS_TMC4C123G_LAUNCHPAD_INCLUDE_BOARD_H
+#define __CONFIGS_TMC4C123G_LAUNCHPAD_INCLUDE_BOARD_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/* Clocking *************************************************************************/
+
+/* RCC settings. Crystals on-board the TMC4C123G 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 crystal 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 / 1) / 5 = 80MHz (Using RCC2 and DIV400).
+ */
+
+#define TIVA_SYSDIV 5
+#define SYSCLK_FREQUENCY 80000000 /* 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 TIVA_RCC_VALUE (SYSCON_RCC_OSCSRC | SYSCON_RCC_XTAL | \
+ SYSCON_RCC_USESYSDIV | SYSCON_RCC_SYSDIV(TIVA_SYSDIV))
+
+/* RCC2 settings
+ *
+ * - PLL and sys dividers not bypassed.
+ * - PLL not powered down
+ * - Not using RCC2
+ *
+ * When SYSCON_RCC2_DIV400 is not selected, SYSDIV2 is the divisor-1.
+ * When SYSCON_RCC2_DIV400 is selected, SYSDIV2 is the divisor-1)/2, plus
+ * the LSB:
+ *
+ * SYSDIV2 SYSDIV2LSB DIVISOR
+ * 0 N/A 2
+ * 1 0 3
+ * " 1 4
+ * 2 0 5
+ * " 1 6
+ * etc.
+ */
+
+#if (TIVA_SYSDIV & 1) == 0
+# define TIVA_RCC2_VALUE (SYSCON_RCC2_OSCSRC | SYSCON_RCC2_SYSDIV2LSB | \
+ SYSCON_RCC2_SYSDIV_DIV400(TIVA_SYSDIV) | \
+ SYSCON_RCC2_DIV400 | SYSCON_RCC2_USERCC2)
+#else
+# define TIVA_RCC2_VALUE (SYSCON_RCC2_OSCSRC | SYSCON_RCC2_SYSDIV_DIV400(TIVA_SYSDIV) | \
+ SYSCON_RCC2_DIV400 | SYSCON_RCC2_USERCC2)
+#endif
+
+/* LED definitions ******************************************************************/
+/* The TMC4C123G LaunchPad 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 tm4c_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 tm4c_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 4 /* ON OFF OFF (flashing 2Hz) */
+
+/* LED definitions ******************************************************************/
+/* The TMC4C123G LaunchPad 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)
+
+/* Pin Multiplexing Disambiguation **************************************************/
+
+#define GPIO_UART1_CTS GPIO_UART1_CTS_1
+#define GPIO_UART1_RTS GPIO_UART1_RTS_1
+#define GPIO_UART1_RX GPIO_UART1_RX_1
+#define GPIO_UART1_TX GPIO_UART1_TX_1
+
+/************************************************************************************
+ * Public Function Prototypes
+ ************************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/************************************************************************************
+ * Name: tiva_boardinitialize
+ *
+ * Description:
+ * All Tiva 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 tiva_boardinitialize(void);
+
+/************************************************************************************
+ * Name: tm4c_ledinit, tm4c_setled, and tm4c_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 tm4c_ledinit(void);
+void tm4c_setled(int led, bool ledon);
+void tm4c_setleds(uint8_t ledset);
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __CONFIGS_TMC4C123G_LAUNCHPAD_INCLUDE_BOARD_H */
diff --git a/nuttx/configs/tm4c123g-launchpad/nsh/Make.defs b/nuttx/configs/tm4c123g-launchpad/nsh/Make.defs
new file mode 100644
index 000000000..551f706ae
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/nsh/Make.defs
@@ -0,0 +1,110 @@
+############################################################################
+# configs/tm4c123g-launchpad/nsh/Make.defs
+#
+# Copyright (C) 2014 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <gnutt@nuttx.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+# used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+
+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}"
+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
+endif
+
+ifneq ($(CONFIG_DEBUG_NOOPT),y)
+ 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/tm4c123g-launchpad/nsh/defconfig b/nuttx/configs/tm4c123g-launchpad/nsh/defconfig
new file mode 100644
index 000000000..0ea9c59a0
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/nsh/defconfig
@@ -0,0 +1,773 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Nuttx/ Configuration
+#
+
+#
+# Build Setup
+#
+# CONFIG_EXPERIMENTAL is not set
+# CONFIG_DEFAULT_SMALL 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_STDINT_H is not set
+# 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_ARCH_HAVE_STACKCHECK=y
+# CONFIG_ARCH_HAVE_HEAPCHECK is not set
+# CONFIG_DEBUG_SYMBOLS is not set
+CONFIG_ARCH_HAVE_CUSTOMOPT=y
+# CONFIG_DEBUG_NOOPT is not set
+# CONFIG_DEBUG_CUSTOMOPT is not set
+CONFIG_DEBUG_FULLOPT=y
+
+#
+# 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_A1X is not set
+# CONFIG_ARCH_CHIP_C5471 is not set
+# CONFIG_ARCH_CHIP_CALYPSO is not set
+# CONFIG_ARCH_CHIP_DM320 is not set
+# CONFIG_ARCH_CHIP_IMX is not set
+# CONFIG_ARCH_CHIP_KINETIS is not set
+# CONFIG_ARCH_CHIP_KL is not set
+# CONFIG_ARCH_CHIP_LM is not set
+CONFIG_ARCH_CHIP_TIVA=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_NUC1XX is not set
+# CONFIG_ARCH_CHIP_SAMA5 is not set
+# CONFIG_ARCH_CHIP_SAMD is not set
+# CONFIG_ARCH_CHIP_SAM34 is not set
+# CONFIG_ARCH_CHIP_STM32 is not set
+# CONFIG_ARCH_CHIP_STR71X is not set
+# CONFIG_ARCH_ARM7TDMI is not set
+# CONFIG_ARCH_ARM926EJS is not set
+# CONFIG_ARCH_ARM920T is not set
+# CONFIG_ARCH_CORTEXM0 is not set
+# CONFIG_ARCH_CORTEXM3 is not set
+CONFIG_ARCH_CORTEXM4=y
+# CONFIG_ARCH_CORTEXA5 is not set
+# CONFIG_ARCH_CORTEXA8 is not set
+CONFIG_ARCH_FAMILY="armv7-m"
+CONFIG_ARCH_CHIP="tiva"
+# CONFIG_ARMV7M_USEBASEPRI is not set
+CONFIG_ARCH_HAVE_CMNVECTOR=y
+# CONFIG_ARMV7M_CMNVECTOR is not set
+CONFIG_ARCH_HAVE_FPU=y
+# CONFIG_ARCH_FPU is not set
+CONFIG_ARCH_HAVE_MPU=y
+# CONFIG_ARMV7M_MPU is not set
+
+#
+# ARMV7M Configuration Options
+#
+CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y
+# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set
+# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set
+# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set
+CONFIG_ARMV7M_OABI_TOOLCHAIN=y
+
+#
+# Tiva/Stellaris Configuration Options
+#
+CONFIG_ARCH_CHIP_TM4C123GH6ZRB=y
+CONFIG_ARCH_CHIP_TM4C=y
+
+#
+# Tiva/Stellaris Peripheral Support
+#
+CONFIG_TIVA_UART0=y
+# CONFIG_TIVA_UART1 is not set
+# CONFIG_TIVA_UART2 is not set
+# CONFIG_TIVA_UART3 is not set
+# CONFIG_TIVA_UART4 is not set
+# CONFIG_TIVA_UART5 is not set
+# CONFIG_TIVA_UART6 is not set
+# CONFIG_TIVA_UART7 is not set
+# CONFIG_SSI0_DISABLE is not set
+CONFIG_SSI1_DISABLE=y
+# CONFIG_TIVA_ETHERNET is not set
+# CONFIG_TIVA_FLASH is not set
+
+#
+# Disable GPIO Interrupts
+#
+# CONFIG_TIVA_DISABLE_GPIOA_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOB_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOC_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOD_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOE_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOF_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOG_IRQS is not set
+CONFIG_TIVA_DISABLE_GPIOH_IRQS=y
+CONFIG_TIVA_DISABLE_GPIOJ_IRQS=y
+# CONFIG_TIVA_DISABLE_GPIOK_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOL_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOM_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPION_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOP_IRQS is not set
+# CONFIG_TIVA_DISABLE_GPIOQ_IRQS is not set
+
+#
+# Tiva/Stellaris SSI Configuration
+#
+CONFIG_SSI_POLLWAIT=y
+CONFIG_SSI_TXLIMIT=4
+
+#
+# Architecture Options
+#
+# CONFIG_ARCH_NOINTC is not set
+# CONFIG_ARCH_VECNOTIRQ is not set
+# CONFIG_ARCH_DMA is not set
+CONFIG_ARCH_HAVE_IRQPRIO=y
+# CONFIG_CUSTOM_STACK is not set
+# CONFIG_ADDRENV is not set
+CONFIG_ARCH_HAVE_VFORK=y
+# CONFIG_ARCH_HAVE_MMU is not set
+# CONFIG_ARCH_NAND_HWECC is not set
+CONFIG_ARCH_IRQPRIO=y
+CONFIG_ARCH_STACKDUMP=y
+# CONFIG_ENDIAN_BIG is not set
+# CONFIG_ARCH_IDLE_CUSTOM is not set
+# CONFIG_ARCH_HAVE_RAMFUNCS is not set
+CONFIG_ARCH_HAVE_RAMVECTORS=y
+# CONFIG_ARCH_RAMVECTORS is not set
+
+#
+# Board Settings
+#
+CONFIG_BOARD_LOOPSPERMSEC=4531
+# CONFIG_ARCH_CALIBRATION is not set
+
+#
+# Interrupt options
+#
+CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
+CONFIG_ARCH_INTERRUPTSTACK=0
+CONFIG_ARCH_HAVE_HIPRI_INTERRUPT=y
+# CONFIG_ARCH_HIPRI_INTERRUPT is not set
+
+#
+# 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
+
+#
+# Boot Memory Configuration
+#
+CONFIG_RAM_START=0x20000000
+CONFIG_RAM_SIZE=32768
+# CONFIG_ARCH_HAVE_SDRAM is not set
+
+#
+# Board Selection
+#
+CONFIG_ARCH_BOARD_TM4C123G_LAUNCHPAD=y
+# CONFIG_ARCH_BOARD_CUSTOM is not set
+CONFIG_ARCH_BOARD="tm4c123g-launchpad"
+
+#
+# Common Board Options
+#
+CONFIG_ARCH_HAVE_LEDS=y
+CONFIG_ARCH_LEDS=y
+CONFIG_ARCH_HAVE_BUTTONS=y
+# CONFIG_ARCH_BUTTONS is not set
+CONFIG_ARCH_HAVE_IRQBUTTONS=y
+CONFIG_NSH_MMCSDMINOR=0
+
+#
+# Board-Specific Options
+#
+
+#
+# RTOS Features
+#
+# CONFIG_BOARD_INITIALIZE is not set
+CONFIG_MSEC_PER_TICK=10
+# CONFIG_SYSTEM_TIME64 is not set
+CONFIG_RR_INTERVAL=200
+# CONFIG_SCHED_CPULOAD is not set
+# CONFIG_SCHED_INSTRUMENTATION is not set
+CONFIG_TASK_NAME_SIZE=0
+# CONFIG_SCHED_HAVE_PARENT is not set
+# CONFIG_JULIAN_TIME is not set
+CONFIG_START_YEAR=2013
+CONFIG_START_MONTH=3
+CONFIG_START_DAY=24
+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 is not set
+CONFIG_SCHED_WAITPID=y
+# CONFIG_SCHED_STARTHOOK is not set
+# CONFIG_SCHED_ATEXIT is not set
+# CONFIG_SCHED_ONEXIT is not set
+CONFIG_USER_ENTRYPOINT="nsh_main"
+CONFIG_DISABLE_OS_API=y
+# CONFIG_DISABLE_CLOCK is not set
+# CONFIG_DISABLE_POSIX_TIMERS is not set
+# CONFIG_DISABLE_PTHREAD is not set
+# CONFIG_DISABLE_SIGNALS is not set
+# CONFIG_DISABLE_MQUEUE is not set
+# CONFIG_DISABLE_ENVIRON is not set
+
+#
+# Signal Numbers
+#
+CONFIG_SIG_SIGUSR1=1
+CONFIG_SIG_SIGUSR2=2
+CONFIG_SIG_SIGALARM=3
+CONFIG_SIG_SIGCONDTIMEDOUT=16
+
+#
+# Sizes of configurable things (0 disables)
+#
+CONFIG_MAX_TASKS=16
+CONFIG_MAX_TASK_ARGS=4
+CONFIG_NPTHREAD_KEYS=4
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NFILE_STREAMS=8
+CONFIG_NAME_MAX=32
+CONFIG_PREALLOC_MQ_MSGS=4
+CONFIG_MQ_MAXMSGSIZE=32
+CONFIG_MAX_WDOGPARMS=2
+CONFIG_PREALLOC_WDOGS=4
+CONFIG_PREALLOC_TIMERS=4
+
+#
+# Stack and heap information
+#
+CONFIG_IDLETHREAD_STACKSIZE=1024
+CONFIG_USERMAIN_STACKSIZE=2048
+CONFIG_PTHREAD_STACK_MIN=256
+CONFIG_PTHREAD_STACK_DEFAULT=2048
+
+#
+# Device Drivers
+#
+CONFIG_DISABLE_POLL=y
+CONFIG_DEV_NULL=y
+# CONFIG_DEV_ZERO is not set
+# CONFIG_LOOP is not set
+# CONFIG_RAMDISK is not set
+# CONFIG_CAN is not set
+# CONFIG_ARCH_HAVE_PWM_PULSECOUNT is not set
+# CONFIG_PWM is not set
+# CONFIG_ARCH_HAVE_I2CRESET is not set
+# CONFIG_I2C is not set
+# CONFIG_SPI is not set
+# CONFIG_I2S is not set
+# CONFIG_RTC is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_ANALOG is not set
+# CONFIG_AUDIO_DEVICES is not set
+# CONFIG_VIDEO_DEVICES is not set
+# CONFIG_BCH is not set
+# CONFIG_INPUT is not set
+# CONFIG_LCD is not set
+# CONFIG_MMCSD is not set
+# CONFIG_MTD is not set
+# CONFIG_PIPES is not set
+# CONFIG_PM is not set
+# CONFIG_POWER is not set
+# CONFIG_SENSORS is not set
+# CONFIG_SERCOMM_CONSOLE is not set
+CONFIG_SERIAL=y
+# CONFIG_DEV_LOWCONSOLE is not set
+# CONFIG_16550_UART is not set
+# CONFIG_ARCH_HAVE_UART is not set
+CONFIG_ARCH_HAVE_UART0=y
+# CONFIG_ARCH_HAVE_UART1 is not set
+# CONFIG_ARCH_HAVE_UART2 is not set
+# CONFIG_ARCH_HAVE_UART3 is not set
+# CONFIG_ARCH_HAVE_UART4 is not set
+# CONFIG_ARCH_HAVE_UART5 is not set
+# CONFIG_ARCH_HAVE_UART6 is not set
+# CONFIG_ARCH_HAVE_UART7 is not set
+# CONFIG_ARCH_HAVE_UART8 is not set
+# CONFIG_ARCH_HAVE_SCI0 is not set
+# CONFIG_ARCH_HAVE_SCI1 is not set
+# CONFIG_ARCH_HAVE_USART0 is not set
+# CONFIG_ARCH_HAVE_USART1 is not set
+# CONFIG_ARCH_HAVE_USART2 is not set
+# CONFIG_ARCH_HAVE_USART3 is not set
+# CONFIG_ARCH_HAVE_USART4 is not set
+# CONFIG_ARCH_HAVE_USART5 is not set
+# CONFIG_ARCH_HAVE_USART6 is not set
+# CONFIG_ARCH_HAVE_USART7 is not set
+# CONFIG_ARCH_HAVE_USART8 is not set
+
+#
+# USART Configuration
+#
+CONFIG_MCU_SERIAL=y
+CONFIG_STANDARD_SERIAL=y
+CONFIG_UART0_SERIAL_CONSOLE=y
+# CONFIG_NO_SERIAL_CONSOLE is not set
+
+#
+# UART0 Configuration
+#
+CONFIG_UART0_RXBUFSIZE=256
+CONFIG_UART0_TXBUFSIZE=256
+CONFIG_UART0_BAUD=115200
+CONFIG_UART0_BITS=8
+CONFIG_UART0_PARITY=0
+CONFIG_UART0_2STOP=0
+# CONFIG_UART0_IFLOWCONTROL is not set
+# CONFIG_UART0_OFLOWCONTROL is not set
+# CONFIG_SERIAL_IFLOWCONTROL is not set
+# CONFIG_SERIAL_OFLOWCONTROL is not set
+# CONFIG_USBDEV is not set
+# CONFIG_USBHOST is not set
+# CONFIG_WIRELESS is not set
+
+#
+# System Logging Device Options
+#
+
+#
+# System Logging
+#
+# CONFIG_RAMLOG is not set
+
+#
+# Networking Support
+#
+# CONFIG_ARCH_HAVE_NET is not set
+# CONFIG_ARCH_HAVE_PHY is not set
+# CONFIG_NET is not set
+
+#
+# File Systems
+#
+
+#
+# File system configuration
+#
+# CONFIG_DISABLE_MOUNTPOINT is not set
+# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
+# CONFIG_FS_READABLE is not set
+# CONFIG_FS_WRITABLE is not set
+# CONFIG_FS_RAMMAP is not set
+# CONFIG_FS_FAT is not set
+# CONFIG_FS_NXFFS is not set
+# CONFIG_FS_ROMFS is not set
+# CONFIG_FS_SMARTFS is not set
+# CONFIG_FS_BINFS is not set
+# CONFIG_FS_PROCFS is not set
+
+#
+# System Logging
+#
+# CONFIG_SYSLOG_ENABLE is not set
+# CONFIG_SYSLOG is not set
+
+#
+# Graphics Support
+#
+# CONFIG_NX is not set
+
+#
+# Memory Management
+#
+# CONFIG_MM_MULTIHEAP is not set
+# CONFIG_MM_SMALL is not set
+CONFIG_MM_REGIONS=1
+# CONFIG_ARCH_HAVE_HEAP2 is not set
+# CONFIG_GRAN is not set
+
+#
+# Audio Support
+#
+# CONFIG_AUDIO is not set
+
+#
+# Binary Formats
+#
+# CONFIG_BINFMT_DISABLE is not set
+# CONFIG_BINFMT_EXEPATH is not set
+# CONFIG_NXFLAT is not set
+# CONFIG_ELF is not set
+CONFIG_BUILTIN=y
+# CONFIG_PIC is not set
+# CONFIG_SYMTAB_ORDEREDBYNAME is not set
+
+#
+# Library Routines
+#
+
+#
+# Standard C Library Options
+#
+CONFIG_STDIO_BUFFER_SIZE=64
+CONFIG_STDIO_LINEBUFFER=y
+CONFIG_NUNGET_CHARS=2
+CONFIG_LIB_HOMEDIR="/"
+# CONFIG_LIBM is not set
+# CONFIG_NOPRINTF_FIELDWIDTH is not set
+# CONFIG_LIBC_FLOATINGPOINT is not set
+CONFIG_LIB_RAND_ORDER=1
+# CONFIG_EOL_IS_CR is not set
+# CONFIG_EOL_IS_LF is not set
+# CONFIG_EOL_IS_BOTH_CRLF is not set
+CONFIG_EOL_IS_EITHER_CRLF=y
+# CONFIG_LIBC_EXECFUNCS is not set
+CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024
+CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
+# CONFIG_LIBC_STRERROR is not set
+# CONFIG_LIBC_PERROR_STDOUT is not set
+CONFIG_ARCH_LOWPUTC=y
+CONFIG_LIB_SENDFILE_BUFSIZE=512
+# CONFIG_ARCH_ROMGETC is not set
+# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
+
+#
+# Non-standard Library Support
+#
+# CONFIG_SCHED_WORKQUEUE is not set
+# CONFIG_LIB_KBDCODEC is not set
+# CONFIG_LIB_SLCDCODEC is not set
+
+#
+# Basic CXX Support
+#
+# CONFIG_C99_BOOL8 is not set
+# CONFIG_HAVE_CXX is not set
+
+#
+# Application Configuration
+#
+
+#
+# Built-In Applications
+#
+CONFIG_BUILTIN_PROXY_STACKSIZE=1024
+
+#
+# Examples
+#
+# CONFIG_EXAMPLES_BUTTONS is not set
+# CONFIG_EXAMPLES_CAN is not set
+# CONFIG_EXAMPLES_CONFIGDATA is not set
+# CONFIG_EXAMPLES_DHCPD is not set
+# CONFIG_EXAMPLES_ELF is not set
+# CONFIG_EXAMPLES_FTPC is not set
+# CONFIG_EXAMPLES_FTPD is not set
+# CONFIG_EXAMPLES_HELLO is not set
+# CONFIG_EXAMPLES_HELLOXX is not set
+# CONFIG_EXAMPLES_JSON is not set
+# CONFIG_EXAMPLES_HIDKBD is not set
+# CONFIG_EXAMPLES_KEYPADTEST is not set
+# CONFIG_EXAMPLES_IGMP is not set
+# CONFIG_EXAMPLES_LCDRW is not set
+# CONFIG_EXAMPLES_MM is not set
+# CONFIG_EXAMPLES_MODBUS is not set
+# CONFIG_EXAMPLES_MOUNT is not set
+# CONFIG_EXAMPLES_NRF24L01TERM is not set
+CONFIG_EXAMPLES_NSH=y
+# CONFIG_EXAMPLES_NULL is not set
+# CONFIG_EXAMPLES_NX is not set
+# CONFIG_EXAMPLES_NXCONSOLE is not set
+# CONFIG_EXAMPLES_NXFFS is not set
+# CONFIG_EXAMPLES_NXFLAT is not set
+# CONFIG_EXAMPLES_NXHELLO is not set
+# CONFIG_EXAMPLES_NXIMAGE is not set
+# CONFIG_EXAMPLES_NXLINES is not set
+# CONFIG_EXAMPLES_NXTEXT is not set
+# CONFIG_EXAMPLES_OSTEST is not set
+# CONFIG_EXAMPLES_PASHELLO is not set
+# CONFIG_EXAMPLES_PIPE is not set
+# CONFIG_EXAMPLES_POSIXSPAWN is not set
+# CONFIG_EXAMPLES_QENCODER is not set
+# CONFIG_EXAMPLES_RGMP is not set
+# CONFIG_EXAMPLES_ROMFS is not set
+# CONFIG_EXAMPLES_SENDMAIL is not set
+# CONFIG_EXAMPLES_SERLOOP is not set
+# CONFIG_EXAMPLES_SLCD is not set
+# CONFIG_EXAMPLES_SMART_TEST is not set
+# CONFIG_EXAMPLES_SMART is not set
+# CONFIG_EXAMPLES_TCPECHO is not set
+# CONFIG_EXAMPLES_TELNETD is not set
+# CONFIG_EXAMPLES_THTTPD is not set
+# CONFIG_EXAMPLES_TIFF is not set
+# CONFIG_EXAMPLES_TOUCHSCREEN is not set
+# CONFIG_EXAMPLES_UDP is not set
+# CONFIG_EXAMPLES_UIP is not set
+# CONFIG_EXAMPLES_USBSERIAL is not set
+# CONFIG_EXAMPLES_USBTERM is not set
+# CONFIG_EXAMPLES_WATCHDOG is not set
+
+#
+# Graphics Support
+#
+# CONFIG_TIFF is not set
+
+#
+# Interpreters
+#
+# CONFIG_INTERPRETERS_FICL is not set
+# CONFIG_INTERPRETERS_PCODE is not set
+
+#
+# Network Utilities
+#
+
+#
+# Networking Utilities
+#
+# CONFIG_NETUTILS_CODECS is not set
+# CONFIG_NETUTILS_DHCPD is not set
+# CONFIG_NETUTILS_FTPC is not set
+# CONFIG_NETUTILS_FTPD is not set
+# CONFIG_NETUTILS_JSON is not set
+# CONFIG_NETUTILS_SMTP is not set
+# CONFIG_NETUTILS_TFTPC is not set
+# CONFIG_NETUTILS_THTTPD is not set
+# CONFIG_NETUTILS_UIPLIB is not set
+# CONFIG_NETUTILS_WEBCLIENT is not set
+
+#
+# FreeModBus
+#
+# CONFIG_MODBUS is not set
+
+#
+# NSH Library
+#
+CONFIG_NSH_LIBRARY=y
+CONFIG_NSH_READLINE=y
+# CONFIG_NSH_CLE is not set
+CONFIG_NSH_BUILTIN_APPS=y
+
+#
+# Disable Individual commands
+#
+# CONFIG_NSH_DISABLE_ADDROUTE is not set
+# CONFIG_NSH_DISABLE_CAT is not set
+# CONFIG_NSH_DISABLE_CD is not set
+# CONFIG_NSH_DISABLE_CP is not set
+# CONFIG_NSH_DISABLE_CMP is not set
+# CONFIG_NSH_DISABLE_DD is not set
+# CONFIG_NSH_DISABLE_DF is not set
+# CONFIG_NSH_DISABLE_DELROUTE is not set
+# CONFIG_NSH_DISABLE_ECHO is not set
+# CONFIG_NSH_DISABLE_EXEC is not set
+# CONFIG_NSH_DISABLE_EXIT is not set
+# CONFIG_NSH_DISABLE_FREE is not set
+# CONFIG_NSH_DISABLE_GET is not set
+# CONFIG_NSH_DISABLE_HELP is not set
+# CONFIG_NSH_DISABLE_HEXDUMP is not set
+# CONFIG_NSH_DISABLE_IFCONFIG is not set
+# CONFIG_NSH_DISABLE_KILL is not set
+# CONFIG_NSH_DISABLE_LOSETUP is not set
+# CONFIG_NSH_DISABLE_LS is not set
+# CONFIG_NSH_DISABLE_MB is not set
+# CONFIG_NSH_DISABLE_MKDIR is not set
+# CONFIG_NSH_DISABLE_MKFIFO is not set
+# CONFIG_NSH_DISABLE_MKRD is not set
+# CONFIG_NSH_DISABLE_MH is not set
+# CONFIG_NSH_DISABLE_MOUNT is not set
+# CONFIG_NSH_DISABLE_MW is not set
+# CONFIG_NSH_DISABLE_PS is not set
+# CONFIG_NSH_DISABLE_PUT is not set
+# CONFIG_NSH_DISABLE_PWD is not set
+# CONFIG_NSH_DISABLE_RM is not set
+# CONFIG_NSH_DISABLE_RMDIR is not set
+# CONFIG_NSH_DISABLE_SET is not set
+# CONFIG_NSH_DISABLE_SH is not set
+# CONFIG_NSH_DISABLE_SLEEP is not set
+# CONFIG_NSH_DISABLE_TEST is not set
+# CONFIG_NSH_DISABLE_UMOUNT is not set
+# CONFIG_NSH_DISABLE_UNSET is not set
+# CONFIG_NSH_DISABLE_USLEEP is not set
+# CONFIG_NSH_DISABLE_WGET is not set
+# CONFIG_NSH_DISABLE_XD is not set
+
+#
+# Configure Command Options
+#
+CONFIG_NSH_CMDOPT_DF_H=y
+CONFIG_NSH_CODECS_BUFSIZE=128
+CONFIG_NSH_CMDOPT_HEXDUMP=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+# CONFIG_NSH_DISABLE_SEMICOLON is not set
+CONFIG_NSH_CMDPARMS=y
+CONFIG_NSH_TMPDIR="/tmp"
+CONFIG_NSH_MAXARGUMENTS=6
+CONFIG_NSH_ARGCAT=y
+CONFIG_NSH_NESTDEPTH=3
+# CONFIG_NSH_DISABLESCRIPT is not set
+# CONFIG_NSH_DISABLE_ITEF is not set
+# CONFIG_NSH_DISABLE_LOOPS is not set
+# CONFIG_NSH_DISABLEBG is not set
+CONFIG_NSH_CONSOLE=y
+
+#
+# USB Trace Support
+#
+# CONFIG_NSH_CONDEV is not set
+# CONFIG_NSH_ARCHINIT is not set
+
+#
+# NxWidgets/NxWM
+#
+
+#
+# Platform-specific Support
+#
+# CONFIG_PLATFORM_CONFIGDATA is not set
+
+#
+# System Libraries and NSH Add-Ons
+#
+
+#
+# USB CDC/ACM Device Commands
+#
+
+#
+# USB Composite Device Commands
+#
+
+#
+# Custom Free Memory Command
+#
+# CONFIG_SYSTEM_FREE is not set
+
+#
+# I2C tool
+#
+
+#
+# INI File Parser
+#
+# CONFIG_SYSTEM_INIFILE is not set
+
+#
+# FLASH Program Installation
+#
+# CONFIG_SYSTEM_INSTALL is not set
+
+#
+# FLASH Erase-all Command
+#
+
+#
+# NxPlayer media player library / command Line
+#
+# CONFIG_SYSTEM_NXPLAYER is not set
+
+#
+# RAM test
+#
+# CONFIG_SYSTEM_RAMTEST is not set
+
+#
+# readline()
+#
+CONFIG_SYSTEM_READLINE=y
+CONFIG_READLINE_ECHO=y
+
+#
+# Power Off
+#
+# CONFIG_SYSTEM_POWEROFF is not set
+
+#
+# RAMTRON
+#
+# CONFIG_SYSTEM_RAMTRON is not set
+
+#
+# SD Card
+#
+# CONFIG_SYSTEM_SDCARD is not set
+
+#
+# Sysinfo
+#
+# CONFIG_SYSTEM_SYSINFO is not set
+
+#
+# USB Monitor
+#
+
+#
+# EMACS-like Command Line Editor
+#
+# CONFIG_SYSTEM_CLE is not set
+
+#
+# VI Work-Alike Editor
+#
+# CONFIG_SYSTEM_VI is not set
+
+#
+# Stack Monitor
+#
+
+#
+# USB Mass Storage Device Commands
+#
+
+#
+# Zmodem Commands
+#
+# CONFIG_SYSTEM_ZMODEM is not set
diff --git a/nuttx/configs/tm4c123g-launchpad/nsh/setenv.sh b/nuttx/configs/tm4c123g-launchpad/nsh/setenv.sh
new file mode 100755
index 000000000..a7426c4fb
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/nsh/setenv.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+# configs/tm4c123g-launchpad/nsh/setenv.sh
+#
+# Copyright (C) 2014 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <gnutt@nuttx.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+# used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+if [ "$_" = "$0" ] ; then
+ echo "You must source this script, not run it!" 1>&2
+ exit 1
+fi
+
+WD=`pwd`
+if [ ! -x "setenv.sh" ]; then
+ echo "This script must be executed from the top-level NuttX build directory"
+ exit 1
+fi
+
+if [ -z "${PATH_ORIG}" ]; then
+ export PATH_ORIG="${PATH}"
+fi
+
+# This is the Cygwin path to the location where I installed the CodeSourcery
+# toolchain under windows. You will also have to edit this if you install
+# the CodeSourcery toolchain in any other location
+#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
+#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin"
+
+# These are the Cygwin paths to the locations where I installed the Atollic
+# toolchain under windows. You will also have to edit this if you install
+# the Atollic toolchain in any other location. /usr/bin is added before
+# the Atollic bin path because there is are binaries named gcc.exe and g++.exe
+# at those locations as well.
+#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for ARM Pro 2.3.0/ARMTools/bin"
+#export TOOLCHAIN_BIN="/usr/bin:/cygdrive/c/Program Files (x86)/Atollic/TrueSTUDIO for STMicroelectronics STM32 Lite 2.3.0/ARMTools/bin"
+
+# This is the Cygwin path to the location where I build the buildroot
+# toolchain.
+export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
+
+# The tm4c123g-launchpad/tools directory
+export TOOL_DIR="${WD}/configs/tm4c123g-launchpad/tools"
+
+# Add the path to the toolchain and tools directory to the PATH varialble
+export PATH="${TOOLCHAIN_BIN}:${TOOL_DIR}:/sbin:/usr/sbin:${PATH_ORIG}"
+
+echo "PATH : ${PATH}"
diff --git a/nuttx/configs/tm4c123g-launchpad/scripts/ld.script b/nuttx/configs/tm4c123g-launchpad/scripts/ld.script
new file mode 100755
index 000000000..f28cb2a52
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/scripts/ld.script
@@ -0,0 +1,115 @@
+/****************************************************************************
+ * configs/tm4c123g-launchpad/scripts/ld.script
+ *
+ * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/* The TM4C123GH6ZRB 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/tm4c123g-launchpad/src/.gitignore b/nuttx/configs/tm4c123g-launchpad/src/.gitignore
new file mode 100644
index 000000000..726d936e1
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/src/.gitignore
@@ -0,0 +1,2 @@
+/.depend
+/Make.dep
diff --git a/nuttx/configs/tm4c123g-launchpad/src/Makefile b/nuttx/configs/tm4c123g-launchpad/src/Makefile
new file mode 100644
index 000000000..e4bb06b6e
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/src/Makefile
@@ -0,0 +1,91 @@
+############################################################################
+# configs/tm4c123g-launchpad/src/Makefile
+#
+# Copyright (C) 2014 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <gnutt@nuttx.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+# used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+
+-include $(TOPDIR)/Make.defs
+
+CFLAGS += -I$(TOPDIR)/sched
+
+ASRCS =
+AOBJS = $(ASRCS:.S=$(OBJEXT))
+CSRCS = tm4c_boot.c tm4c_ssi.c
+
+ifeq ($(CONFIG_ARCH_LEDS),y)
+CSRCS += tm4c_autoleds.c
+endif
+
+ifeq ($(CONFIG_NSH_ARCHINIT),y)
+CSRCS += tm4c_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/tm4c123g-launchpad/src/tm4c_autoleds.c b/nuttx/configs/tm4c123g-launchpad/src/tm4c_autoleds.c
new file mode 100644
index 000000000..7646898b1
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/src/tm4c_autoleds.c
@@ -0,0 +1,223 @@
+/****************************************************************************
+ * configs/tm4c123g-launchpad/src/tm4c_leds.c
+ *
+ * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdbool.h>
+#include <debug.h>
+
+#include <arch/board/board.h>
+
+#include "chip.h"
+#include "up_arch.h"
+#include "up_internal.h"
+#include "tiva_gpio.h"
+#include "tm4c123g-launchpad.h"
+
+/****************************************************************************
+ * Definitions
+ ****************************************************************************/
+/* The TM4C123G LaunchPad 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 4 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) tiva_dumpgpio(LED_GPIO, m)
+#else
+# define led_dumpgpio(m)
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: tm4c_ledinit
+ *
+ * Description:
+ * Called to initialize the on-board LEDs.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_ARCH_LEDS
+void tm4c_ledinit(void)
+{
+ leddbg("Initializing\n");
+
+ /* Configure Port E, Bit 1 as an output, initial value=OFF */
+
+ led_dumpgpio("tm4c_ledinit before tiva_configgpio()");
+ tiva_configgpio(GPIO_LED_R);
+ tiva_configgpio(GPIO_LED_G);
+ tiva_configgpio(GPIO_LED_B);
+ led_dumpgpio("tm4c_ledinit after tiva_configgpio()");
+}
+
+/****************************************************************************
+ * Name: board_led_on
+ ****************************************************************************/
+
+void board_led_on(int led)
+{
+ switch (led)
+ {
+ /* All components stay off until the file initialization step */
+
+ default:
+ case 0:
+ break;
+
+ /* The GREEN component is illuminated at the final initialization step */
+
+ case 1:
+ tiva_gpiowrite(GPIO_LED_G, false);
+ break;
+
+ /* These will illuminate the BLUE component with on effect no RED and GREEN */
+
+ case 2:
+ tiva_gpiowrite(GPIO_LED_B, false);
+ break;
+
+ /* This will turn off RED and GREEN and turn RED on */
+
+ case 4:
+ tiva_gpiowrite(GPIO_LED_G, true);
+ tiva_gpiowrite(GPIO_LED_B, true);
+
+ /* This will illuminate the RED component with no effect on RED and GREEN */
+
+ case 3:
+ tiva_gpiowrite(GPIO_LED_R, false);
+ break;
+ }
+}
+
+/****************************************************************************
+ * Name: board_led_off
+ ****************************************************************************/
+
+void board_led_off(int led)
+{
+ switch (led)
+ {
+ /* These should not happen and are ignored */
+
+ default:
+ case 0:
+ case 1:
+ break;
+
+ /* These will extinguish the BLUE component with no effect on RED and GREEN */
+
+ case 2:
+ tiva_gpiowrite(GPIO_LED_B, true);
+ break;
+
+ /* These will extinguish the RED component with on effect on RED and GREEN */
+
+ case 3:
+ case 4:
+ tiva_gpiowrite(GPIO_LED_R, true);
+ break;
+ }
+}
+
+#endif /* CONFIG_ARCH_LEDS */
diff --git a/nuttx/configs/tm4c123g-launchpad/src/tm4c_boot.c b/nuttx/configs/tm4c123g-launchpad/src/tm4c_boot.c
new file mode 100644
index 000000000..067c133bf
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/src/tm4c_boot.c
@@ -0,0 +1,92 @@
+/************************************************************************************
+ * configs/tm4c123g-launchpad/src/tm4c_boot.c
+ *
+ * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <debug.h>
+
+#include <arch/board/board.h>
+
+#include "up_arch.h"
+#include "up_internal.h"
+#include "tm4c123g-launchpad.h"
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Private Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: tiva_boardinitialize
+ *
+ * Description:
+ * All Tiva 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 tiva_boardinitialize(void)
+{
+ /* Configure SPI chip selects if 1) SSI is not disabled, and 2) the weak function
+ * tm4c_ssiinitialize() has been brought into the link.
+ */
+
+ /* The TM4C123G LaunchPad microSD CS and OLED are on SSI0 */
+
+#if !defined(CONFIG_SSI0_DISABLE) || !defined(CONFIG_SSI1_DISABLE)
+ if (tm4c_ssiinitialize)
+ {
+ tm4c_ssiinitialize();
+ }
+#endif
+
+ /* Configure on-board LEDs if LED support has been selected. */
+
+#ifdef CONFIG_ARCH_LEDS
+ tm4c_ledinit();
+#endif
+}
diff --git a/nuttx/configs/tm4c123g-launchpad/src/tm4c_nsh.c b/nuttx/configs/tm4c123g-launchpad/src/tm4c_nsh.c
new file mode 100644
index 000000000..88cc3544c
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/src/tm4c_nsh.c
@@ -0,0 +1,92 @@
+/****************************************************************************
+ * config/tm4c123g-launchpad/src/tm4c_nsh.c
+ *
+ * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdio.h>
+#include <debug.h>
+#include <errno.h>
+
+#include <nuttx/spi/spi.h>
+#include <nuttx/mmcsd.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+/* 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/tm4c123g-launchpad/src/tm4c_ssi.c b/nuttx/configs/tm4c123g-launchpad/src/tm4c_ssi.c
new file mode 100644
index 000000000..f0e456f5f
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/src/tm4c_ssi.c
@@ -0,0 +1,132 @@
+/************************************************************************************
+ * configs/tm4c123g-launchpad/src/tm4c_ssi.c
+ *
+ * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <debug.h>
+
+#include <nuttx/spi/spi.h>
+#include <arch/board/board.h>
+
+#include "up_arch.h"
+#include "chip.h"
+#include "tiva_gpio.h"
+#include "tm4c123g-launchpad.h"
+
+/* The TM4C123G 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
+#else
+# define ssidbg(x...)
+#endif
+
+/* Dump GPIO registers */
+
+#if defined(CONFIG_DEBUG_SPI) && defined(CONFIG_DEBUG_VERBOSE)
+# define ssivdbg lldbg
+# define ssi_dumpgpio(m) tiva_dumpgpio(SDCCS_GPIO, m)
+#else
+# define ssivdbg(x...)
+# define ssi_dumpgpio(m)
+#endif
+
+/************************************************************************************
+ * Private Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: tm4c_ssiinitialize
+ *
+ * Description:
+ * Called to configure SPI chip select GPIO pins for the TM4C123G LaunchPad.
+ *
+ ************************************************************************************/
+
+void weak_function tm4c_ssiinitialize(void)
+{
+}
+
+/****************************************************************************
+ * The external functions, tiva_spiselect and tiva_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/spi.h).
+ * All othermethods (including tiva_spiinitialize()) are provided by common
+ * logic. To use this common SPI logic on your board:
+ *
+ * 1. Provide tiva_spiselect() and tiva_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 tiva_spiinitialize() in your low level initialization
+ * logic
+ * 3. The handle returned by tiva_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 tiva_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("tiva_spiselect() Entry");
+ ssi_dumpgpio("tiva_spiselect() Exit");
+}
+
+uint8_t tiva_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/tm4c123g-launchpad/src/tmfc123g-launchpad.h b/nuttx/configs/tm4c123g-launchpad/src/tmfc123g-launchpad.h
new file mode 100644
index 000000000..25edac0aa
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/src/tmfc123g-launchpad.h
@@ -0,0 +1,152 @@
+/************************************************************************************
+ * configs/tm4c123g-launchpad/src/tm4c123g-launchpad.h
+ *
+ * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+#ifndef __CONFIGS_TM4C123G_LAUNCHPAD_TM4C123G_LAUNCHPAD_H
+#define __CONFIGS_TM4C123G_LAUNCHPAD_TM4C123G_LAUNCHPAD_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+#include <nuttx/compiler.h>
+
+#include "chip.h"
+#include "tiva_gpio.h"
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/* How many SSI modules does this chip support? */
+
+#if TIVA_NSSI < 1
+# undef CONFIG_SSI0_DISABLE
+# define CONFIG_SSI0_DISABLE 1
+# undef CONFIG_SSI1_DISABLE
+# define CONFIG_SSI1_DISABLE 1
+#elif TIVA_NSSI < 2
+# undef CONFIG_SSI1_DISABLE
+# define CONFIG_SSI1_DISABLE 1
+#endif
+
+/* TM4C123G LaunchPad ***************************************************************/
+/* The TM4C123G LaunchPad 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 TM4C123G LaunchPad 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: tm4c_ssiinitialize
+ *
+ * Description:
+ * Called to configure SPI chip select GPIO pins for the TM4C123G LaunchPad.
+ *
+ ************************************************************************************/
+
+void weak_function tm4c_ssiinitialize(void);
+
+/****************************************************************************
+ * Name: tm4c_ledinit
+ *
+ * Description:
+ * Called to initialize the on-board LEDs.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_ARCH_LEDS
+void tm4c_ledinit(void);
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __CONFIGS_TM4C123G_LAUNCHPAD_TM4C123G_LAUNCHPAD_H */
+
diff --git a/nuttx/configs/tm4c123g-launchpad/tools/lm4f120-launchpad.cfg b/nuttx/configs/tm4c123g-launchpad/tools/lm4f120-launchpad.cfg
new file mode 100644
index 000000000..c91b3b1d5
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/tools/lm4f120-launchpad.cfg
@@ -0,0 +1,71 @@
+#
+# TI Tiva Launchpad ek-tm4c123gxl Evaluation Kits
+#
+# http://www.ti.com/tool/ek-tm4c123gxl
+#
+
+#
+# NOTE: using the bundled ICDI interface is optional!
+# This interface is not ftdi based as previous boards were
+#
+
+# Interface configuration
+
+#
+# TI Tiva In-Circuit Debug Interface (ICDI) Board
+#
+# This is the propriety ICDI interface used on newer boards such as
+# LM4F232 Evaluation Kit - http://www.ti.com/tool/ek-lm4f232
+# Tiva Launchpad - http://www.ti.com/stellaris-launchpad
+# http://www.ti.com/tool/ek-lm4f232
+#
+
+interface hla
+hla_layout ti-icdi
+hla_vid_pid 0x1cbe 0x00fd
+
+# Board configuration
+
+# unused but set to disable warnings
+adapter_khz 1000
+
+set WORKAREASIZE 0x8000
+set CHIPNAME tm4c123gh5qr
+
+# Target configuration
+
+#
+# lm3s icdi pseudo target
+#
+
+if { [info exists CHIPNAME] } {
+ set _CHIPNAME $CHIPNAME
+} else {
+ set _CHIPNAME lm3s
+}
+
+# Work-area is a space in RAM used for flash programming
+# By default use 16kB
+if { [info exists WORKAREASIZE] } {
+ set _WORKAREASIZE $WORKAREASIZE
+} else {
+ set _WORKAREASIZE 0x4000
+}
+
+#
+# possible value are hla_jtag
+# currently swd is not supported
+#
+transport select hla_jtag
+
+# do not check id as icdi currently does not support it
+hla newtap $_CHIPNAME cpu -expected-id 0
+
+set _TARGETNAME $_CHIPNAME.cpu
+target create $_TARGETNAME hla_target -chain-position $_TARGETNAME
+
+$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
+
+# flash configuration ... autodetects sizes, autoprobed
+flash bank $_CHIPNAME.flash stellaris 0 0 0 0 $_TARGETNAME
+
diff --git a/nuttx/configs/tm4c123g-launchpad/tools/oocd.sh b/nuttx/configs/tm4c123g-launchpad/tools/oocd.sh
new file mode 100644
index 000000000..bbe08e207
--- /dev/null
+++ b/nuttx/configs/tm4c123g-launchpad/tools/oocd.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# See configs/tm4c123g-launchpad/README.txt for information about
+# this file.
+
+TOPDIR=$1
+USAGE="$0 <TOPDIR> [-d]"
+if [ -z "${TOPDIR}" ]; then
+ echo "Missing argument"
+ echo $USAGE
+ exit 1
+fi
+
+# Assume that OpenOCD was installed and at /usr/local/bin. Uncomment
+# the following to run directly from the build directory
+
+# OPENOCD_PATH="/home/OpenOCD/openocd/src"
+# OPENOCD_PATH="/usr/bin"
+OPENOCD_PATH="/usr/local/bin"
+
+# TARGET_PATH="/home/OpenOCD/openocd/tcl"
+# TARGET_PATH="/usr/share/openocd/scripts"
+TARGET_PATH="/usr/local/share/openocd/scripts"
+
+# Assume a Unix development environment. Uncomment to use a Windows
+# like environment
+
+# OPENOCD_EXE=openocd.exe
+OPENOCD_EXE=openocd
+
+OPENOCD_CFG="${TOPDIR}/configs/tm4c123g-launchpad/tools/tm4c123g-launchpad.cfg"
+OPENOCD_ARGS="-f ${OPENOCD_CFG} -s ${TARGET_PATH}"
+
+if [ "X$2" = "X-d" ]; then
+ OPENOCD_ARGS=$OPENOCD_ARGS" -d3"
+ set -x
+fi
+
+if [ ! -d ${OPENOCD_PATH} ]; then
+ echo "OpenOCD path does not exist: ${OPENOCD_PATH}"
+ exit 1
+fi
+if [ ! -x ${OPENOCD_PATH}/${OPENOCD_EXE} ]; then
+ echo "OpenOCD does not exist: ${OPENOCD_PATH}/${OPENOCD_EXE}"
+ exit 1
+fi
+if [ ! -f ${OPENOCD_CFG} ]; then
+ echo "OpenOCD config file does not exist: ${OPENOCD_CFG}"
+ exit 1
+fi
+
+echo "Starting OpenOCD"
+cd ${OPENOCD_PATH} || { echo "Failed to CD to ${OPENOCD_PATH}"; exit 1; }
+${OPENOCD_EXE} ${OPENOCD_ARGS} &
+echo "OpenOCD daemon started"
+ps -ef | grep openocd
+echo "In GDB: target remote localhost:3333"
+