From 41ffa0e5976e6dd4969e757097b8ed64a486ab35 Mon Sep 17 00:00:00 2001
From: patacongo
Date: Tue, 26 Feb 2013 14:09:43 +0000
Subject: Add port to Zilogic Systems ZKIT-ARM-1769 board (more coming)
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5673 42af7a65-404d-4744-a932-0658087f49c3
---
apps/examples/ostest/roundrobin.c | 29 +-
nuttx/ChangeLog | 2 +
nuttx/Documentation/NuttX.html | 14 +
nuttx/Documentation/README.html | 24 +-
nuttx/README.txt | 20 +-
nuttx/configs/Kconfig | 11 +
nuttx/configs/README.txt | 4 +
nuttx/configs/zkit-arm-1769/Kconfig | 13 +
nuttx/configs/zkit-arm-1769/README.txt | 555 +++++++++++++++++++++
nuttx/configs/zkit-arm-1769/include/board.h | 342 +++++++++++++
nuttx/configs/zkit-arm-1769/src/Makefile | 97 ++++
nuttx/configs/zkit-arm-1769/src/up_boot.c | 98 ++++
nuttx/configs/zkit-arm-1769/src/up_leds.c | 161 ++++++
nuttx/configs/zkit-arm-1769/src/up_nsh.c | 176 +++++++
nuttx/configs/zkit-arm-1769/src/up_ssp.c | 214 ++++++++
nuttx/configs/zkit-arm-1769/src/up_usbmsc.c | 147 ++++++
nuttx/configs/zkit-arm-1769/src/zkitarm_internal.h | 236 +++++++++
nuttx/sched/pthread_create.c | 2 +
18 files changed, 2123 insertions(+), 22 deletions(-)
create mode 100644 nuttx/configs/zkit-arm-1769/Kconfig
create mode 100644 nuttx/configs/zkit-arm-1769/README.txt
create mode 100644 nuttx/configs/zkit-arm-1769/include/board.h
create mode 100644 nuttx/configs/zkit-arm-1769/src/Makefile
create mode 100644 nuttx/configs/zkit-arm-1769/src/up_boot.c
create mode 100644 nuttx/configs/zkit-arm-1769/src/up_leds.c
create mode 100644 nuttx/configs/zkit-arm-1769/src/up_nsh.c
create mode 100644 nuttx/configs/zkit-arm-1769/src/up_ssp.c
create mode 100644 nuttx/configs/zkit-arm-1769/src/up_usbmsc.c
create mode 100644 nuttx/configs/zkit-arm-1769/src/zkitarm_internal.h
diff --git a/apps/examples/ostest/roundrobin.c b/apps/examples/ostest/roundrobin.c
index bfd344df3..787a2ae28 100644
--- a/apps/examples/ostest/roundrobin.c
+++ b/apps/examples/ostest/roundrobin.c
@@ -83,7 +83,8 @@ static void get_primes(int *count, int *last)
{
int number;
int local_count = 0;
- *last = 0; // to make compiler happy
+
+ *last = 0; /* To make the compiler happy */
for (number = 1; number < CONFIG_EXAMPLES_OSTEST_RR_RANGE; number++)
{
@@ -114,10 +115,12 @@ static void get_primes(int *count, int *last)
* Name: get_primes_thread
********************************************************************************/
-static void *get_primes_thread(void *parameter)
+static FAR void *get_primes_thread(FAR void *parameter)
{
int id = (int)parameter;
- int i, count, last;
+ int count;
+ int last;
+ int i;
printf("get_primes_thread id=%d started, looking for primes < %d, doing %d run(s)\n",
id, CONFIG_EXAMPLES_OSTEST_RR_RANGE, CONFIG_EXAMPLES_OSTEST_RR_RUNS);
@@ -154,14 +157,14 @@ void rr_test(void)
status = pthread_attr_init(&attr);
if (status != OK)
{
- printf("rr_test: pthread_attr_init failed, status=%d\n", status);
+ printf("rr_test: ERROR: pthread_attr_init failed, status=%d\n", status);
}
sparam.sched_priority = sched_get_priority_min(SCHED_FIFO);
status = pthread_attr_setschedparam(&attr, &sparam);
if (status != OK)
{
- printf("rr_test: pthread_attr_setschedparam failed, status=%d\n", status);
+ printf("rr_test: ERROR: pthread_attr_setschedparam failed, status=%d\n", status);
}
else
{
@@ -171,7 +174,7 @@ void rr_test(void)
status = pthread_attr_setschedpolicy(&attr, SCHED_RR);
if (status != OK)
{
- printf("rr_test: pthread_attr_setschedpolicy failed, status=%d\n", status);
+ printf("rr_test: ERROR: pthread_attr_setschedpolicy failed, status=%d\n", status);
}
else
{
@@ -180,23 +183,25 @@ void rr_test(void)
printf("rr_test: Starting first get_primes_thread\n");
- status = pthread_create(&get_primes1_thread, &attr, get_primes_thread, (void*)1);
+ status = pthread_create(&get_primes1_thread, &attr, get_primes_thread, (FAR void *)1);
if (status != 0)
{
- printf("rr_test: Error in thread 1 creation, status=%d\n", status);
+ printf(" ERROR: Thread 1 creation failed: %d\n", status);
}
+ printf(" First get_primes_thread: %d\n", (int)get_primes1_thread);
printf("rr_test: Starting second get_primes_thread\n");
- status = pthread_create(&get_primes2_thread, &attr, get_primes_thread, (void*)2);
+ status = pthread_create(&get_primes2_thread, &attr, get_primes_thread, (FAR void *)2);
if (status != 0)
{
- printf("rr_test: Error in thread 2 creation, status=%d\n", status);
+ printf(" ERROR: Thread 2 creation failed: %d\n", status);
}
+ printf(" Second get_primes_thread: %d\n", (int)get_primes2_thread);
printf("rr_test: Waiting for threads to complete -- this should take awhile\n");
- printf("rr_test: If RR scheduling is working, they should start and complete at\n");
- printf("rr_test: about the same time\n");
+ printf(" If RR scheduling is working, they should start and complete at\n");
+ printf(" about the same time\n");
pthread_join(get_primes2_thread, &result);
pthread_join(get_primes1_thread, &result);
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index 3724af185..6924e75f0 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -4204,3 +4204,5 @@
is code complete and ready for testing.
* configs/ekk-lm3s9b96/ostest and nsh: All EKK-LM3S9B96 configurations
converted to use the mconf configuration tool.
+ * configs/zkit-arm-1769: Add support for Zilogic System's ARM development
+ Kit, ZKIT-ARM-1769.
\ No newline at end of file
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index 1efe66ec6..e086b1476 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -2376,6 +2376,9 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
The Embedded Artists base board with NXP LPCXpresso LPC1768.
+
+ Zilogic's ZKIT-ARM-1769 board.
+
The Micromint Lincoln60 board with an NXP LPC1769.
@@ -2466,6 +2469,17 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
Verifed configurations include DHCPD, the NuttShell (NSH), NuttX graphis (NX), the NuttX OS test, THTTPD, and USB mass storage device.
+
Micromint Lincoln60 board with an NXP LPC1769
diff --git a/nuttx/Documentation/README.html b/nuttx/Documentation/README.html
index 4582a3bb8..89ed095f0 100644
--- a/nuttx/Documentation/README.html
+++ b/nuttx/Documentation/README.html
@@ -61,6 +61,8 @@
| | | |- include/README.txt
| | | |- src/README.txt
| | | `- README.txt
+ | | |- cloudctrl/
+ | | | `- README.txt
| | |- compal_e88/
| | | `- README.txt
| | |- compal_e99/
@@ -95,10 +97,10 @@
| | | |- RIDE/README.txt
| | | |- src/README.txt
| | | `- README.txt
- | | |- lincoln60/
- | | | `- README.txt
| | |- kwikstik-k40/
| | | `- README.txt
+ | | |- lincoln60/
+ | | | `- README.txt
| | |- lm3s6432-s2e/
| | | |- include/README.txt
| | | |- src/README.txt
@@ -111,10 +113,10 @@
| | | |- include/README.txt
| | | |- src/README.txt
| | | `- README.txt
- | | |- lpcxpresso-lpc1768/
- | | | `- README.txt
| | |- lpc4330-xplorer/
| | | `- README.txt
+ | | |- lpcxpresso-lpc1768/
+ | | | `- README.txt
| | |- m68332evb/
| | | |- include/README.txt
| | | `- src/README.txt
@@ -160,6 +162,8 @@
| | | `- README.txt
| | |- pic32-starterkit/
| | | `- README.txt
+ | | |- pic32mx7mmb/
+ | | | `- README.txt
| | |- pjrc-8051/
| | | |- include/README.txt
| | | |- src/README.txt
@@ -174,12 +178,12 @@
| | | `- README.txt>
| | |- sam3u-ek/
| | | `- README.txt
+ | | |- shenzhou/
+ | | | `- README.txt
| | |- sim/
| | | |- include/README.txt
| | | |- src/README.txt
| | | `- README.txt
- | | |- shenzhou/
- | | | `- README.txt
| | |- skp16c26/
| | | |- include/README.txt
| | | |- src/README.txt
@@ -195,6 +199,8 @@
| | | `- README.txt
| | |- stm32f100rc_generic/
| | | `- README.txt
+ | | |- stm32f3discovery/
+ | | | `- README.txt
| | |- stm32f4discovery/
| | | `- README.txt
| | |- sure-pic32mx/
@@ -203,6 +209,8 @@
| | | `- README.txt
| | |- twr-k60n512/
| | | `- README.txt
+ | | |- ubw32/
+ | | | `- README.txt
| | |- us7032evb1/
| | | |- bin/README.txt
| | | |- include/README.txt
@@ -229,6 +237,10 @@
| | |- z8f64200100kit/
| | | |- ostest/README.txt
| | | `- README.txt
+ | | |- zkit-arm-1769/
+ | | | `- README.txt
+ | | |- zp214xpa/
+ | | | `- README.txt
| | `- README.txt
| |- drivers/
| | |- lcd/
diff --git a/nuttx/README.txt b/nuttx/README.txt
index 3b2eae702..efe9a13dd 100644
--- a/nuttx/README.txt
+++ b/nuttx/README.txt
@@ -974,6 +974,8 @@ nuttx
| | |- include/README.txt
| | |- src/README.txt
| | `- README.txt
+ | |- cloudctrl
+ | | `- README.txt
| |- compal_e88
| | `- README.txt
| |- compal_e99
@@ -1007,10 +1009,10 @@ nuttx
| | |- include/README.txt
| | |- src/README.txt
| | `- README.txt
- | |- lincoln60/
- | | `- README.txt
| |- kwikstik-k40/
| | `- README.txt
+ | |- lincoln60/
+ | | `- README.txt
| |- lm3s6432-s2e/
| | |- include/README.txt
| | |- src/README.txt
@@ -1023,10 +1025,10 @@ nuttx
| | |- include/README.txt
| | |- src/README.txt
| | `- README.txt
- | |- lpcxpresso-lpc1768/
- | | `- README.txt
| |- lpc4330-xplorer/
| | `- README.txt
+ | |- lpcxpresso-lpc1768/
+ | | `- README.txt
| |- m68332evb/
| | |- include/README.txt
| | `- src/README.txt
@@ -1072,6 +1074,8 @@ nuttx
| | `- README.txt
| |- pic32-starterkit/
| | `- README.txt
+ | |- pic32mx7mmb/
+ | | `- README.txt
| |- pjrc-8051/
| | |- include/README.txt
| | |- src/README.txt
@@ -1107,6 +1111,8 @@ nuttx
| | `- README.txt
| |- stm32f100rc_generic/
| | `- README.txt
+ | |- stm32f3discovery/
+ | | `- README.txt
| |- stm32f4discovery/
| | `- README.txt
| |- sure-pic32mx/
@@ -1115,6 +1121,8 @@ nuttx
| | `- README.txt
| |- twr-k60n512/
| | `- README.txt
+ | |- ubw32/
+ | | `- README.txt
| |- us7032evb1/
| | |- bin/README.txt
| | |- include/README.txt
@@ -1141,6 +1149,10 @@ nuttx
| |- z8f64200100kit/
| | |- ostest/README.txt
| | `- README.txt
+ | |- zkit-arm-1769/
+ | | `- README.txt
+ | |- zp214xpa/
+ | | `- README.txt
| `- README.txt
|- drivers/
| |- lcd/
diff --git a/nuttx/configs/Kconfig b/nuttx/configs/Kconfig
index 44ed4ce39..7933f48e3 100644
--- a/nuttx/configs/Kconfig
+++ b/nuttx/configs/Kconfig
@@ -653,6 +653,13 @@ config ARCH_BOARD_ZP214XPA
ZPA213X/4XPA development board. Includes support for the
UG-2864AMBAG01 OLED also from The0.net
+config ARCH_BOARD_ZKITARM
+ bool "Zilogic ZKit-ARM-1769 Development Kit"
+ depends on ARCH_CHIP_LPC1768
+ ---help---
+ Zilogic System's ARM development Kit, ZKIT-ARM-1769. This board is based
+ on the NXP LPC1769. The Nuttx Buildroot toolchain is used by default.
+
config ARCH_BOARD_SIM
bool "User mode simulation"
depends on ARCH_SIM
@@ -738,6 +745,7 @@ config ARCH_BOARD
default "z8encore000zco" if ARCH_BOARD_Z8ENCORE000ZCO
default "z8f64200100kit" if ARCH_BOARD_Z8F64200100KIT
default "zp214xpa" if ARCH_BOARD_ZP214XPA
+ default "zkit-arm-1769" if ARCH_BOARD_ZKITARM
default "sim" if ARCH_BOARD_SIM
default "" if ARCH_BOARD_CUSTOM
@@ -982,6 +990,9 @@ endif
if ARCH_BOARD_ZP214XPA
source "configs/zp214xpa/Kconfig"
endif
+if ARCH_BOARD_ZKITARM
+source "configs/zkit-arm-1769/Kconfig"
+endif
if ARCH_BOARD_SIM
source "configs/sim/Kconfig"
endif
diff --git a/nuttx/configs/README.txt b/nuttx/configs/README.txt
index 8d9bb381f..dd8b6a10b 100644
--- a/nuttx/configs/README.txt
+++ b/nuttx/configs/README.txt
@@ -2036,6 +2036,10 @@ configs/zp214xpa
ZPA213X/4XPA development board. Includes support for the
UG-2864AMBAG01 OLED also from The0.net
+configs/zkit-arm-1769
+ Zilogic System's ARM development Kit, ZKIT-ARM-1769. This board is based
+ on the NXP LPC1769. The Nuttx Buildroot toolchain is used by default.
+
Configuring NuttX
^^^^^^^^^^^^^^^^^
diff --git a/nuttx/configs/zkit-arm-1769/Kconfig b/nuttx/configs/zkit-arm-1769/Kconfig
new file mode 100644
index 000000000..42ed37151
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/Kconfig
@@ -0,0 +1,13 @@
+#
+# For a description of the syntax of this configuration file,
+# see misc/tools/kconfig-language.txt.
+#
+
+if ARCH_BOARD_ZKITARM
+config ARCH_LEDS
+ bool "NuttX LED support"
+ default n
+ ---help---
+ "Support control of board LEDs by NuttX to indicate system state"
+
+endif
diff --git a/nuttx/configs/zkit-arm-1769/README.txt b/nuttx/configs/zkit-arm-1769/README.txt
new file mode 100644
index 000000000..aee3eb351
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/README.txt
@@ -0,0 +1,555 @@
+README
+^^^^^^
+
+README for NuttX port to the Zilogic's ZKIT-ARM-1769 [NXP-LPC1769]
+board.
+
+Contents
+^^^^^^^^
+
+ ZKit-ARM LPC1769 Board
+ Development Environment
+ GNU Toolchain Options
+ NuttX buildroot Toolchain
+ LEDs
+ ZKit-ARM Configuration Options
+ Configurations
+
+Zilogic's ZKit-ARM-1769 Board
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ Pin Description On Board Connector
+ -------------------------------- ---------------- -------------
+ P0.0/RD1/TXD3/SDA1 RD1 CAN1
+ P0.1/TD1/RXD3/SCL1 TD1
+ P0.2/TXD0/AD0.7 TXD0 COM0
+ P0.3/RXD0/AD0.6 RXD0
+ P0.4/I2SRX_CLK/RD2/CAP2.0 GPIO0
+ P0.5/I2SRX_WS/TD2/CAP2.1 GPIO1
+ P0.6/I2SRX_SDA/SSEL1/MAT2.0 SSEL1 SPI
+ P0.7/I2STX_CLK/SCK1/MAT2.1 SCK1
+ P0.8/I2STX_WS/MISO1/MAT2.2 MISO1
+ P0.9/I2STX_SDA/MOSI1/MAT2.3 MOSI1
+ P0.10/TXD2/SDA2/MAT3.0 TXD2 COM2
+ P0.11/RXD2/SCL2/MAT3.1 RXD2
+ P0.15/TXD1/SCK0/SCK SD-SCK
+ P0.16/RXD1/SSEL0/SSEL SD-SSEL SD-CARD
+ P0.17/CTS1/MISO0/MISO SD-MISO
+ P0.18/DCD1/M0SI0/MOSI SD-MOSI
+ P0.19/DSR1/SDA1 LED1
+ P0.20/DTR1/SCL1 DTR1 COM1
+ P0.21/RI1/RD1 NC LED2
+ P0.22/RTS1/TD1 RTS1 COM1
+ P0.23/AD0.0/I2SRX_CLK/CAP3.0 AD0
+ P0.24/AD0.1/I2SRX_WS/CAP3.1 AD1 AIN
+ P0.25/AD0.2/I2SRX_SDA/TXD3 AD2
+ P0.26/AD0.3/AOUT/RXD3 AD3
+ P0.27/SDA0/USB_SDA SDA0 I2C0
+ P0.28/SCL0/USB_SCL SCL0
+ P0.29/USB_D+ USB-D+ USB
+ P0.30/USB_D- USB-D-
+
+ P1.0/ENET_TXD0 ETH-TXD0
+ P1.1/ENET_TXD1 ETH-TXD1
+ P1.4/ENET_TX_EN ETH-TXEN
+ P1.8/ENET_CRS ETH-CRS
+ P1.9/ENET_RXD0 ETH-RXD0 ETH
+ P1.10/ENET_RXD1 ETH-RXD1
+ P1.14/ENET_RX_ER ETH-RXER
+ P1.15/ENET_REF_CLK ETH-REFCLK
+ P1.16/ENET_MDC ETH-MDC
+ P1.17/ENET_MDIO ETH-MDIO
+ P1.18/USB_UP_LED/PWM1.1/CAP1.0 USB-UP-LED
+ P1.19/MCOA0/nUSB_PPWR/CAP1.1 KEY1
+ P1.20/MCFB0/PWM1.2/SCK0 LCD-SCK
+ P1.21/MCABORT/PWM1.3/SSEL0 LCD-SSEL
+ P1.22/MCOB0/USB_PWRD/MAT1.0 LCD-A0 LCD
+ P1.23/MCFB1/PWM1.4/MISO0 NC
+ P1.24/MCFB2/PWM1.5/MOSI0 LCD_MOSI
+ P1.25/MCOA1/MAT1.1 LCD-RST
+ P1.26/MCOB1/PWM1.6/CAP0.0 LCD-AO
+ P1.27/CLKOUT/nUSB_OVRCR/CAP0.1 KEY2
+ P1.28/MCOA2/MAT0.0 KEY3
+ P1.29/MCOB2/PCAP1.1/MAT0.1 CAP1 PWM-CON
+ P1.30/VBUS/AD0.4 VBUS USB
+ P1.31/SCK1/AD0.5 KEY4
+
+ P2.0/PWM1.1/TXD1 TXD1
+ P2.1/PWM1.2/RXD1 RXD1 COM1
+ P2.2/PWM1.3/CTS1/TRACEDATA3 CTS1
+ P2.3/PWM1.4/DCD1/TRACEDATA2 PWM4
+ P2.4/PWM1.5/DSR1/TRACEDATA1 PWM5 PWM
+ P2.5/PWM1.6/DTR1/TRACEDATA0 PWM6
+ P2.6/PCAP1.0/RI1/TRACECLK CAP0
+ P2.7/RD2/RTS1 RD2 CAN2
+ P2.8/TD2/TXD2 TD2
+ P2.9/USB_CONNECT/RXD2 USB_CONNECT USB
+ P2.10/nEINT0/NMI ISP
+ P2.11/nEINT1/I2STX_CLK INT1 I2C
+ P2.12/nEINT2/I2STX_WS SD-DET SD-CARD
+ P2.13/nEINT3/I2STX_SDA KEY5
+
+ P3.25/MAT0.0/PWM1.2 PWM2 PWM
+ P3.26/STCLK/MAT0.1/PWM1.3 PWM3
+
+ P4.28/RX_MCLK/MAT2.0/TXD3 GPIO2 SPI
+ P4.28/RX_MCLK/MAT2.0/TXD3 GPIO3
+
+Zilogic's ZKit-ARM-1769 Board
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+SD Slot
+-------
+
+ Board LPC1768
+ SD Signal Pin
+ --- ----------- ----------
+ CS SD-SSEL P0.16 SSEL0
+ DIN SD-MOSI P0.18 MOSI0
+ DOUT SD-MISO P0.17 MISO0
+ CLK SD-SCK P0.15 SCK0
+ CD SD-DET P2.12
+
+USB Device
+----------
+
+ Board LPC1768
+ Signal Pin
+ ----------------- -----------------
+ USB_CONNECT P2.9 USB_CONNECT
+ USB_DM P0.29 USB_D-
+ USB_DP P0.30 USB_D+
+ USB_VBUS P1.30 USB_VBUS
+ USB_UPLED P1.18 USB_UPLED
+
+128x64 LCD with SPI interface
+---------------------------------------
+ The LCD display is connected to the SPI-bus.
+
+ ZKit-ARM Signals
+
+ ----------------------------+--------------- -------------------------------------------
+ LPC1758 Pin | Board Signal Description
+ ----------------------------+--------------- -------------------------------------------
+ P1.20/MCFB0/PWM1.2/SCK0 | LCD-SCK LCD Clock signal (D6)
+ P1.21/MCABORT/PWM1.3/SSEL0 | LCD-SSEL LCD Chip Select (CSB)
+ P1.22/MCOB0/USB_PWRD/MAT1.0 | LCD-A0 LCD-A0 (A0)
+ P1.23/MCFB1/PWM1.4/MISO0 | N.C
+ P1.24/MCFB2/PWM1.5/MOSI0 | LCD-MOSI LCD Data (D7)
+ P1.25/MCOA1/MAT1.1 | LCD-RST LCD Reset (RSTB) - Resets Everything in LCD
+ ----------------------------+--------------- -------------------------------------------
+
+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 Code Red GNU toolchain
+ 2. The CodeSourcery GNU toolchain,
+ 3. The devkitARM GNU toolchain,
+ 4. The NuttX buildroot Toolchain (see below).
+
+ All testing has been conducted using the Code Red toolchain and the
+ make system is setup to default to use the Code Red Linux toolchain. To use
+ the other toolchain, you simply need add one of the following configuration
+ options to your .config (or defconfig) file:
+
+ CONFIG_LPC17_CODESOURCERYW=y : CodeSourcery under Windows
+ CONFIG_LPC17_CODESOURCERYL=y : CodeSourcery under Linux
+ CONFIG_LPC17_DEVKITARM=y : devkitARM under Windows
+ CONFIG_LPC17_BUILDROOT=y : NuttX buildroot under Linux or Cygwin (default)
+ CONFIG_LPC17_CODEREDW=n : Code Red toolchain under Windows
+ CONFIG_LPC17_CODEREDL=y : Code Red toolchain under Linux
+
+ 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), devkitARM, and Code Red (for Windoes)
+ are Windows native toolchains. The CodeSourcey (for Linux), Code Red (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.
+
+ Support has been added for making dependencies with the windows-native toolchains.
+ That support can be enabled by modifying your Make.defs file as follows:
+
+ - MKDEP = $(TOPDIR)/tools/mknulldeps.sh
+ + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)"
+
+ If you have problems with the dependency build (for example, if you are not
+ building on C:), then you may need to modify tools/mkdeps.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.
+
+NuttX 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/).
+ This GNU toolchain builds and executes in the Linux or Cygwin environment.
+
+ 1. You must have already configured Nuttx in /nuttx.
+
+ cd tools
+ ./configure.sh zkit-arm-1769/
+
+ 2. Download the latest buildroot package into
+
+ 3. unpack the buildroot tarball. The resulting directory may
+ have versioning information on it like buildroot-x.y.z. If so,
+ rename /buildroot-x.y.z to /buildroot.
+
+ 4. cd /buildroot
+
+ 5. cp configs/cortexm3-defconfig-4.3.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
+ detailed PLUS some special instructions that you will need to follow if you
+ are building a Cortex-M3 toolchain for Cygwin under Windows.
+
+ NOTE: The cortexm3-defconfig-4.3.3 produces an older-style is OABI toolchain.
+ There is another configuration, cortexm3-eabi-defconfig-4.6.3, that will
+ build a newer, EABI, toolchain. Unfortunately, the 4.6.3 EABI toolchain is
+ not compatible with 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.
+
+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 /nuttx.
+
+ cd tools
+ ./configure.sh zkit-arm-1769/
+
+ 2. Download the latest buildroot package into
+
+ 3. unpack the buildroot tarball. The resulting directory may
+ have versioning information on it like buildroot-x.y.z. If so,
+ rename /buildroot-x.y.z to /buildroot.
+
+ 4. cd /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
+^^^^
+
+ If CONFIG_ARCH_LEDS is defined, then support for the ZKit-ARM LEDs will be
+ included in the build. See:
+
+ - configs/zkit-arm-1769/include/board.h - Defines LED constants, types and
+ prototypes the LED interface functions.
+
+ - configs/zkit-arm-1769/src/zkitarm_internal.h - GPIO settings for the LEDs.
+
+ - configs/zkit-arm-1769/src/up_leds.c - LED control logic.
+
+ The ZKit-ARM LPC1768 has a single LEDs (there are more on the Embedded Artists
+ base board, but those are not controlled by NuttX). Usage this single LED by NuttX
+ is as follows:
+
+ - The LED is not illuminated until the ZKit-ARM completes initialization.
+
+ If the LED is stuck in the OFF state, this means that the ZKit-ARM did not
+ complete intialization.
+
+ - Each time the OS enters an interrupt (or a signal) it will turn the LED OFF and
+ restores its previous stated upon return from the interrupt (or signal).
+
+ The normal state, after initialization will be a dull glow. The brightness of
+ the glow will be inversely related to the proportion of time spent within interrupt
+ handling logic. The glow may decrease in brightness when the system is very
+ busy handling device interrupts and increase in brightness as the system becomes
+ idle.
+
+ Stuck in the OFF state suggests that that the system never completed
+ initialization; Stuck in the ON state would indicated that the system
+ intialialized, but is not takint interrupts.
+
+ - If a fatal assertion or a fatal unhandled exception occurs, the LED will flash
+ strongly as a slow, 2Hz rate.
+
+ZKit-ARM Configuration Options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ General Architecture Settings:
+
+ CONFIG_ARCH - Identifies the arch/ subdirectory. This should
+ be set to:
+
+ CONFIG_ARCH=arm
+
+ CONFIG_ARCH_family - For use in C code:
+
+ CONFIG_ARCH_ARM=y
+
+ CONFIG_ARCH_architecture - For use in C code:
+
+ CONFIG_ARCH_CORTEXM3=y
+
+ CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
+
+ CONFIG_ARCH_CHIP=lpc17xx
+
+ CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
+ chip:
+
+ CONFIG_ARCH_CHIP_LPC1768=y
+
+ CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
+ hence, the board that supports the particular chip or SoC.
+
+ CONFIG_ARCH_BOARD=zkit-arm-1769
+
+ CONFIG_ARCH_BOARD_name - For use in C code
+
+ CONFIG_ARCH_BOARD_ZKITARM=y
+
+ CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
+ of delay loops
+
+ CONFIG_ENDIAN_BIG - define if big endian (default is little
+ endian)
+
+ CONFIG_DRAM_SIZE - Describes the installed DRAM (CPU SRAM in this case):
+
+ CONFIG_DRAM_SIZE=(32*1024) (32Kb)
+
+ There is an additional 32Kb of SRAM in AHB SRAM banks 0 and 1.
+
+ CONFIG_DRAM_START - The start address of installed DRAM
+
+ CONFIG_DRAM_START=0x10000000
+
+ CONFIG_ARCH_IRQPRIO - The LPC17xx supports interrupt prioritization
+
+ CONFIG_ARCH_IRQPRIO=y
+
+ CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
+ have LEDs
+
+ CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
+ stack. If defined, this symbol is the size of the interrupt
+ stack in bytes. If not defined, the user task stacks will be
+ used during interrupt handling.
+
+ CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
+
+ CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
+
+ CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
+ cause a 100 second delay during boot-up. This 100 second delay
+ serves no purpose other than it allows you to calibratre
+ CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
+ the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
+ the delay actually is 100 seconds.
+
+ Individual subsystems can be enabled:
+ CONFIG_LPC17_MAINOSC=y
+ CONFIG_LPC17_PLL0=y
+ CONFIG_LPC17_PLL1=n
+ CONFIG_LPC17_ETHERNET=n
+ CONFIG_LPC17_USBHOST=n
+ CONFIG_LPC17_USBOTG=n
+ CONFIG_LPC17_USBDEV=n
+ CONFIG_LPC17_UART0=y
+ CONFIG_LPC17_UART1=n
+ CONFIG_LPC17_UART2=n
+ CONFIG_LPC17_UART3=n
+ CONFIG_LPC17_CAN1=n
+ CONFIG_LPC17_CAN2=n
+ CONFIG_LPC17_SPI=n
+ CONFIG_LPC17_SSP0=n
+ CONFIG_LPC17_SSP1=n
+ CONFIG_LPC17_I2C0=n
+ CONFIG_LPC17_I2C1=n
+ CONFIG_LPC17_I2S=n
+ CONFIG_LPC17_TMR0=n
+ CONFIG_LPC17_TMR1=n
+ CONFIG_LPC17_TMR2=n
+ CONFIG_LPC17_TMR3=n
+ CONFIG_LPC17_RIT=n
+ CONFIG_LPC17_PWM=n
+ CONFIG_LPC17_MCPWM=n
+ CONFIG_LPC17_QEI=n
+ CONFIG_LPC17_RTC=n
+ CONFIG_LPC17_WDT=n
+ CONFIG_LPC17_ADC=n
+ CONFIG_LPC17_DAC=n
+ CONFIG_LPC17_GPDMA=n
+ CONFIG_LPC17_FLASH=n
+
+ LPC17xx 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
+
+ LPC17xx specific CAN device driver settings. These settings all
+ require CONFIG_CAN:
+
+ CONFIG_CAN_EXTID - Enables support for the 29-bit extended ID. Default
+ Standard 11-bit IDs.
+ CONFIG_CAN1_BAUD - CAN1 BAUD rate. Required if CONFIG_LPC17_CAN1 is defined.
+ CONFIG_CAN2_BAUD - CAN1 BAUD rate. Required if CONFIG_LPC17_CAN2 is defined.
+ CONFIG_CAN1_DIVISOR - CAN1 is clocked at CCLK divided by this number.
+ (the CCLK frequency is divided by this number to get the CAN clock).
+ Options = {1,2,4,6}. Default: 4.
+ CONFIG_CAN2_DIVISOR - CAN2 is clocked at CCLK divided by this number.
+ (the CCLK frequency is divided by this number to get the CAN clock).
+ Options = {1,2,4,6}. Default: 4.
+ CONFIG_CAN_TSEG1 - The number of CAN time quanta in segment 1. Default: 6
+ CONFIG_CAN_TSEG2 = the number of CAN time quanta in segment 2. Default: 7
+
+ LPC17xx specific PHY/Ethernet device driver settings. These setting
+ also require CONFIG_NET and CONFIG_LPC17_ETHERNET.
+
+ CONFIG_PHY_KS8721 - Selects Micrel KS8721 PHY
+ CONFIG_PHY_AUTONEG - Enable auto-negotion
+ CONFIG_PHY_SPEED100 - Select 100Mbit vs. 10Mbit speed.
+ CONFIG_PHY_FDUPLEX - Select full (vs. half) duplex
+
+ CONFIG_NET_EMACRAM_SIZE - Size of EMAC RAM. Default: 16Kb
+ CONFIG_NET_NTXDESC - Configured number of Tx descriptors. Default: 18
+ CONFIG_NET_NRXDESC - Configured number of Rx descriptors. Default: 18
+ CONFIG_NET_PRIORITY - Ethernet interrupt priority. The is default is
+ the higest priority.
+ CONFIG_NET_WOL - Enable Wake-up on Lan (not fully implemented).
+ CONFIG_NET_REGDEBUG - Enabled low level register debug. Also needs
+ CONFIG_DEBUG.
+ CONFIG_NET_DUMPPACKET - Dump all received and transmitted packets.
+ Also needs CONFIG_DEBUG.
+ CONFIG_NET_HASH - Enable receipt of near-perfect match frames.
+ CONFIG_NET_MULTICAST - Enable receipt of multicast (and unicast) frames.
+ Automatically set if CONFIG_NET_IGMP is selected.
+
+ LPC17xx USB Device Configuration
+
+ CONFIG_LPC17_USBDEV_FRAME_INTERRUPT
+ Handle USB Start-Of-Frame events.
+ Enable reading SOF from interrupt handler vs. simply reading on demand.
+ Probably a bad idea... Unless there is some issue with sampling the SOF
+ from hardware asynchronously.
+ CONFIG_LPC17_USBDEV_EPFAST_INTERRUPT
+ Enable high priority interrupts. I have no idea why you might want to
+ do that
+ CONFIG_LPC17_USBDEV_NDMADESCRIPTORS
+ Number of DMA descriptors to allocate in SRAM.
+ CONFIG_LPC17_USBDEV_DMA
+ Enable lpc17xx-specific DMA support
+ CONFIG_LPC17_USBDEV_NOVBUS
+ Define if the hardware implementation does not support the VBUS signal
+ CONFIG_LPC17_USBDEV_NOLED
+ Define if the hardware implementation does not support the LED output
+
+ LPC17xx USB Host Configuration (the ZKit-ARM does not support USB Host)
+
+ CONFIG_USBHOST_OHCIRAM_SIZE
+ Total size of OHCI RAM (in AHB SRAM Bank 1)
+ CONFIG_USBHOST_NEDS
+ Number of endpoint descriptors
+ CONFIG_USBHOST_NTDS
+ Number of transfer descriptors
+ CONFIG_USBHOST_TDBUFFERS
+ Number of transfer descriptor buffers
+ CONFIG_USBHOST_TDBUFSIZE
+ Size of one transfer descriptor buffer
+ CONFIG_USBHOST_IOBUFSIZE
+ Size of one end-user I/O buffer. This can be zero if the
+ application can guarantee that all end-user I/O buffers
+ reside in AHB SRAM.
+
+Configurations
+^^^^^^^^^^^^^^
+
+Each ZKit-ARM configuration is maintained in a sudirectory and can be
+selected as follow:
+
+ cd tools
+ ./configure.sh zkit-arm-1769/
+ cd -
+ . ./setenv.sh
+
+Where is one of the following:
+
+ hello:
+ This builds an example application using apps/examples/hello. See
+ apps/examples/README.txt for information about the examples.
+
+ thttpd:
+ This builds the THTTPD web server example using the THTTPD and
+ the apps/examples/thttpd application.
+
+ NOTE: You will need to build the NXFLAT toolchain as described
+ above in order to use this example.
diff --git a/nuttx/configs/zkit-arm-1769/include/board.h b/nuttx/configs/zkit-arm-1769/include/board.h
new file mode 100644
index 000000000..d18e6b1a2
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/include/board.h
@@ -0,0 +1,342 @@
+/************************************************************************************
+ * configs/zkit-arm-1769/include/board.h
+ * include/arch/board/board.h
+ *
+ * Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ * Author: BabuSubashChandar
+ *
+ * Based on configs/lpcxpresso-lpc1768/include/board.h
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+#ifndef __CONFIGS_ZKIT_ARM_1769_INCLUDE_BOARD_H
+#define __CONFIGS_ZKIT_ARM_1769_INCLUDE_BOARD_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include
+
+#include
+
+#if defined(CONFIG_ARCH_IRQBUTTONS) && defined(CONFIG_GPIO_IRQ)
+# include
+#endif
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+/* Clocking *************************************************************************/
+/* NOTE: The following definitions require lpc17_syscon.h. It is not included here
+ * because the including C file may not have that file in its include path.
+ */
+
+#define BOARD_XTAL_FREQUENCY (12000000) /* XTAL oscillator frequency */
+#define BOARD_OSCCLK_FREQUENCY BOARD_XTAL_FREQUENCY /* Main oscillator frequency */
+#define BOARD_RTCCLK_FREQUENCY (32768) /* RTC oscillator frequency */
+#define BOARD_INTRCOSC_FREQUENCY (4000000) /* Internal RC oscillator frequency */
+
+/* This is the clock setup we configure for:
+ *
+ * SYSCLK = BOARD_OSCCLK_FREQUENCY = 12MHz -> Select Main oscillator for source
+ * PLL0CLK = (2 * 20 * SYSCLK) / 1 = 480MHz -> PLL0 multipler=20, pre-divider=1
+ * CCLCK = 480MHz / 6 = 80MHz -> CCLK divider = 6
+ */
+
+#define LPC17_CCLK 80000000 /* 80Mhz */
+
+/* Select the main oscillator as the frequency source. SYSCLK is then the frequency
+ * of the main oscillator.
+ */
+
+#undef CONFIG_LPC17_MAINOSC
+#define CONFIG_LPC17_MAINOSC 1
+#define BOARD_SCS_VALUE SYSCON_SCS_OSCEN
+
+/* Select the main oscillator and CCLK divider. The output of the divider is CCLK.
+ * The input to the divider (PLLCLK) will be determined by the PLL output.
+ */
+
+#define BOARD_CCLKCFG_DIVIDER 6
+#define BOARD_CCLKCFG_VALUE ((BOARD_CCLKCFG_DIVIDER-1) << SYSCON_CCLKCFG_SHIFT)
+
+/* PLL0. PLL0 is used to generate the CPU clock divider input (PLLCLK).
+ *
+ * Source clock: Main oscillator
+ * PLL0 Multiplier value (M): 20
+ * PLL0 Pre-divider value (N): 1
+ *
+ * PLL0CLK = (2 * 20 * SYSCLK) / 1 = 480MHz
+ */
+
+#undef CONFIG_LPC17_PLL0
+#define CONFIG_LPC17_PLL0 1
+#define BOARD_CLKSRCSEL_VALUE SYSCON_CLKSRCSEL_MAIN
+
+#define BOARD_PLL0CFG_MSEL 20
+#define BOARD_PLL0CFG_NSEL 1
+#define BOARD_PLL0CFG_VALUE \
+ (((BOARD_PLL0CFG_MSEL-1) << SYSCON_PLL0CFG_MSEL_SHIFT) | \
+ ((BOARD_PLL0CFG_NSEL-1) << SYSCON_PLL0CFG_NSEL_SHIFT))
+
+/* PLL1 -- Not used. */
+
+#undef CONFIG_LPC17_PLL1
+#define BOARD_PLL1CFG_MSEL 36
+#define BOARD_PLL1CFG_NSEL 1
+#define BOARD_PLL1CFG_VALUE \
+ (((BOARD_PLL1CFG_MSEL-1) << SYSCON_PLL1CFG_MSEL_SHIFT) | \
+ ((BOARD_PLL1CFG_NSEL-1) << SYSCON_PLL1CFG_NSEL_SHIFT))
+
+/* USB divider. This divider is used when PLL1 is not enabled to get the
+ * USB clock from PLL0:
+ *
+ * USBCLK = PLL0CLK / 10 = 48MHz
+ */
+
+#define BOARD_USBCLKCFG_VALUE SYSCON_USBCLKCFG_DIV10
+
+/* FLASH Configuration */
+
+#undef CONFIG_LP17_FLASH
+#define CONFIG_LP17_FLASH 1
+#define BOARD_FLASHCFG_VALUE 0x0000303a
+
+/* Ethernet configuration */
+
+//#define ETH_MCFG_CLKSEL_DIV ETH_MCFG_CLKSEL_DIV44
+#define ETH_MCFG_CLKSEL_DIV ETH_MCFG_CLKSEL_DIV20
+
+/* LED definitions ******************************************************************/
+/* If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in
+ * any way. The following definitions are used to access individual LEDs.
+ *
+ * LED1 -- Connected to P0[19]
+ * LED2 -- Connected to P0[21]
+ */
+
+/* LED index values for use with lpc17_setled() */
+
+#define BOARD_LED1 0
+#define BOARD_LED2 1
+#define BOARD_NLEDS 2
+
+/* LED bits for use with lpc17_setleds() */
+
+#define BOARD_LED1_BIT (1 << BOARD_LED1)
+#define BOARD_LED2_BIT (1 << BOARD_LED2)
+
+/* If CONFIG_ARCH_LEDs is defined, then NuttX will control the 2 LEDs
+ * on board the ZKIT-ARM-1769. The following definitions
+ * describe how NuttX controls the LEDs:
+ */
+ /* LED1 LED2 */
+#define LED_STARTED 0 /* OFF OFF = Still initializing */
+#define LED_HEAPALLOCATE 0 /* OFF OFF = Still initializing */
+#define LED_IRQSENABLED 0 /* OFF OFF = Still initializing */
+#define LED_STACKCREATED 1 /* ON OFF = Initialization complete */
+#define LED_INIRQ 2 /* N/C ON = In an interrupt handler */
+#define LED_SIGNAL 2 /* N/C ON = In a signal handler (glowing) */
+#define LED_ASSERTION 2 /* N/C ON = In an assertion */
+#define LED_PANIC 2 /* N/C ON = Oops! We crashed. (flashing) */
+#define LED_IDLE 3 /* OFF N/C = LPC17 in sleep mode (LED1 glowing) */
+
+/* Button definitions ***************************************************************/
+/* The ZKIT-ARM-1769 supports several buttons. All will read "1" when open and "0"
+ * when closed
+ *
+ * KEY1 -- Connected to P1[19]
+ * KEY2 -- Connected to P1[27]
+ * KEY3 -- Connected to P1[28]
+ * KEY4 -- Connected to P1[31]
+ * KEY5 -- Connected to P2[13]
+ *
+ */
+#define BOARD_BUTTON_1 0
+#define BOARD_BUTTON_2 1
+#define BOARD_BUTTON_3 2
+#define BOARD_BUTTON_4 3
+#define BOARD_BUTTON_5 4
+#define BOARD_NUM_BUTTONS 5
+#define BOARD_BUTTON_BUTTON1_BIT (1 << BOARD_BUTTON_1)
+#define BOARD_BUTTON_BUTTON2_BIT (1 << BOARD_BUTTON_2)
+#define BOARD_BUTTON_BUTTON3_BIT (1 << BOARD_BUTTON_3)
+#define BOARD_BUTTON_BUTTON4_BIT (1 << BOARD_BUTTON_4)
+#define BOARD_BUTTON_BUTTON5_BIT (1 << BOARD_BUTTON_5)
+
+/* Alternate pin selections *********************************************************/
+/* Pin Description On Board Connector
+ * -------------------------------- ---------------- -------------
+ * P0.0/RD1/TXD3/SDA1 RD1 AUX-CON
+ * P0.1/TD1/RXD3/SCL1 TD1
+ * P0.2/TXD0/AD0.7 TXD0 COM0
+ * P0.3/RXD0/AD0.6 RXD0
+ * P0.4/I2SRX_CLK/RD2/CAP2.0 GPIO0
+ * P0.5/I2SRX_WS/TD2/CAP2.1 GPIO1
+ * P0.6/I2SRX_SDA/SSEL1/MAT2.0 SSEL1 SPI
+ * P0.7/I2STX_CLK/SCK1/MAT2.1 SCK1
+ * P0.8/I2STX_WS/MISO1/MAT2.2 MISO1
+ * P0.9/I2STX_SDA/MOSI1/MAT2.3 MOSI1
+ * P0.10/TXD2/SDA2/MAT3.0 TXD2 AUX-CON
+ * P0.11/RXD2/SCL2/MAT3.1 RXD2
+ * P0.15/TXD1/SCK0/SCK SD-SCK
+ * P0.16/RXD1/SSEL0/SSEL SD-SSEL SD-CARD
+ * P0.17/CTS1/MISO0/MISO SD-MISO
+ * P0.18/DCD1/M0SI0/MOSI SD-MOSI
+ * P0.19/DSR1/SDA1 LED1
+ * P0.20/DTR1/SCL1 DTR1 COM1
+ * P0.21/RI1/RD1 N.C LED2
+ * P0.22/RTS1/TD1 RTS1 COM1
+ * P0.23/AD0.0/I2SRX_CLK/CAP3.0 AD0
+ * P0.24/AD0.1/I2SRX_WS/CAP3.1 AD1 AIN
+ * P0.25/AD0.2/I2SRX_SDA/TXD3 AD2
+ * P0.26/AD0.3/AOUT/RXD3 AD3
+ * P0.27/SDA0/USB_SDA SDA0 I2C0
+ * P0.28/SCL0/USB_SCL SCL0
+ * P0.29/USB_D+ USB-D+ USB
+ * P0.30/USB_D- USB-D-
+ */
+
+#define GPIO_CAN1_RD GPIO_CAN1_RD_1
+#define GPIO_CAN1_TD GPIO_CAN1_TD_1
+#define GPIO_I2C1_SDA GPIO_I2C0_SDA
+#define GPIO_I2C1_SCL GPIO_I2C0_SCL
+#define GPIO_SSP1_SCK GPIO_SSP1_SCK_1
+#define GPIO_UART2_TXD GPIO_UART2_TXD_1
+#define GPIO_UART2_RXD GPIO_UART2_RXD_1
+#define GPIO_UART1_TXD GPIO_UART1_TXD_2
+#define GPIO_UART1_RXD GPIO_UART1_RXD_2
+#define GPIO_SSP0_SCK GPIO_SSP0_SCK_1
+#define GPIO_SSP0_SSEL GPIO_SSP0_SSEL_1
+#define GPIO_SSP0_MISO GPIO_SSP0_MISO_1
+#define GPIO_SSP0_MOSI GPIO_SSP0_MOSI_1
+
+/* P1.0/ENET_TXD0 ETH-TXD0
+ * P1.1/ENET_TXD1 ETH-TXD1
+ * P1.4/ENET_TX_EN ETH-TXEN
+ * P1.8/ENET_CRS ETH-CRS
+ * P1.9/ENET_RXD0 ETH-RXD0 ETH
+ * P1.10/ENET_RXD1 ETH-RXD1
+ * P1.14/ENET_RX_ER ETH-RXER
+ * P1.15/ENET_REF_CLK ETH-REFCLK
+ * P1.16/ENET_MDC ETH-MDC
+ * P1.17/ENET_MDIO ETH-MDIO
+ * P1.18/USB_UP_LED/PWM1.1/CAP1.0 USB-UP-LED
+ * P1.19/MCOA0/nUSB_PPWR/CAP1.1 KEY1
+ * P1.20/MCFB0/PWM1.2/SCK0 LCD-SCK
+ * P1.21/MCABORT/PWM1.3/SSEL0 LCD-SSEL
+ * P1.22/MCOB0/USB_PWRD/MAT1.0 LCD-A0 LCD
+ * P1.23/MCFB1/PWM1.4/MISO0 NC
+ * P1.24/MCFB2/PWM1.5/MOSI0 LCD_MOSI
+ * P1.25/MCOA1/MAT1.1 LCD-RST
+ * P1.26/MCOB1/PWM1.6/CAP0.0 LCD-AO
+ * P1.27/CLKOUT/nUSB_OVRCR/CAP0.1 KEY2
+ * P1.28/MCOA2/MAT0.0 KEY3
+ * P1.29/MCOB2/PCAP1.1/MAT0.1 CAP1 PWM-CON
+ * P1.30/VBUS/AD0.4 VBUS USB
+ * P1.31/SCK1/AD0.5 KEY4
+ */
+
+#define GPIO_ENET_MDC GPIO_ENET_MDC_1
+#define GPIO_ENET_MDIO GPIO_ENET_MDIO_1
+
+/* P2.0/PWM1.1/TXD1 TXD1
+ * P2.1/PWM1.2/RXD1 RXD1 COM1
+ * P2.2/PWM1.3/CTS1/TRACEDATA3 CTS1
+ * P2.3/PWM1.4/DCD1/TRACEDATA2 PWM4
+ * P2.4/PWM1.5/DSR1/TRACEDATA1 PWM5 PWM
+ * P2.5/PWM1.6/DTR1/TRACEDATA0 PWM6
+ * P2.6/PCAP1.0/RI1/TRACECLK CAP0
+ * P2.7/RD2/RTS1 RD2 RD2 CAN2
+ * P2.8/TD2/TXD2 TD2 TD2
+ * P2.9/USB_CONNECT/RXD2 USB_CONNECT USB
+ * P2.10/nEINT0/NMI ISP
+ * P2.11/nEINT1/I2STX_CLK INT1 I2C
+ * P2.12/nEINT2/I2STX_WS SD-DET SD-CARD
+ * P2.13/nEINT3/I2STX_SDA KEY5
+ */
+
+#define GPIO_PWM1p2 GPIO_PWM1p2_3
+#define GPIO_PWM1p3 GPIO_PWM1p3_3
+#define GPIO_PWM1p4 GPIO_PWM1p4_2
+#define GPIO_PWM1p5 GPIO_PWM1p5_2
+#define GPIO_PWM1p6 GPIO_PWM1p6_2
+
+/* P3.25/MAT0.0/PWM1.2 PWM2 PWM
+ * P3.26/STCLK/MAT0.1/PWM1.3 PWM3
+ *
+ * P4.28/RX_MCLK/MAT2.0/TXD3 GPIO2 SPI
+ * P4.28/RX_MCLK/MAT2.0/TXD3 GPIO3
+ */
+
+/************************************************************************************
+ * Public Types
+ ************************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/************************************************************************************
+ * Public Data
+ ************************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/************************************************************************************
+ * Public Function Prototypes
+ ************************************************************************************/
+/************************************************************************************
+ * Name: lpc17_boardinitialize
+ *
+ * Description:
+ * All LPC17xx 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 lpc17_boardinitialize(void);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __CONFIGS_ZKIT_ARM_1769_INCLUDE_BOARD_H */
diff --git a/nuttx/configs/zkit-arm-1769/src/Makefile b/nuttx/configs/zkit-arm-1769/src/Makefile
new file mode 100644
index 000000000..b04f0c75f
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/src/Makefile
@@ -0,0 +1,97 @@
+############################################################################
+# configs/zkit-arm-1769/src/Makefile
+#
+# Copyright (C) 2013 Zilogic Systems. All rights reserved.
+# Author: BabuSubashChandar
+#
+# Based on configs/lpcxpresso-lpc1768/src/Makefile
+#
+# Copyright (C) 2011 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+# used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+
+-include $(TOPDIR)/Make.defs
+
+CFLAGS += -I$(TOPDIR)/sched
+
+ASRCS =
+CSRCS = up_boot.c up_leds.c up_ssp.c
+
+ifeq ($(CONFIG_NSH_ARCHINIT),y)
+CSRCS += up_nsh.c
+endif
+
+ifeq ($(CONFIG_USBMSC),y)
+CSRCS += up_usbmsc.c
+endif
+
+AOBJS = $(ASRCS:.S=$(OBJEXT))
+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)
+ @( for obj in $(OBJS) ; do \
+ $(call ARCHIVE, $@, $${obj}); \
+ done ; )
+
+.depend: Makefile $(SRCS)
+ @$(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
+ @touch $@
+
+depend: .depend
+
+clean:
+ @rm -f libboard$(LIBEXT) *~ .*.swp
+ $(call CLEAN)
+
+distclean: clean
+ @rm -f Make.dep .depend
+
+-include Make.dep
diff --git a/nuttx/configs/zkit-arm-1769/src/up_boot.c b/nuttx/configs/zkit-arm-1769/src/up_boot.c
new file mode 100644
index 000000000..6622f8de6
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/src/up_boot.c
@@ -0,0 +1,98 @@
+/************************************************************************************
+ * configs/zkit-arm-1769/src/up_boot.c
+ * arch/arm/src/board/up_boot.c
+ *
+ * Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ * Author: BabuSubashChandar
+ *
+ * Based on configs/lpcxpresso-lpc1768/src/up_boot.c
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include
+
+#include
+
+#include
+
+#include "up_arch.h"
+#include "up_internal.h"
+
+#include "lpc17_internal.h"
+#include "zkitarm_internal.h"
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Private Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: lpc17_boardinitialize
+ *
+ * Description:
+ * All LPC17xx 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 lpc17_boardinitialize(void)
+{
+ /* Configure SSP chip selects if 1) at least one SSP is enabled, and 2) the weak
+ * function lpc17_sspinitialize() has been brought into the link.
+ */
+
+#if defined(CONFIG_LPC17_SSP0) || defined(CONFIG_LPC17_SSP1)
+ if (lpc17_sspinitialize)
+ {
+ lpc17_sspinitialize();
+ }
+#endif
+
+ /* Configure on-board LEDs if LED support has been selected. */
+
+#ifdef CONFIG_ARCH_LEDS
+ up_ledinit();
+#endif
+}
diff --git a/nuttx/configs/zkit-arm-1769/src/up_leds.c b/nuttx/configs/zkit-arm-1769/src/up_leds.c
new file mode 100644
index 000000000..f0d8730d5
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/src/up_leds.c
@@ -0,0 +1,161 @@
+/****************************************************************************
+ * configs/zkit-arm-1769/src/up_leds.c
+ * arch/arm/src/board/up_leds.c
+ *
+ * Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ * Author: BabuSubashChandar
+ *
+ * Based on configs/lpcxpresso-lpc1768/src/up_leds.c
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include
+
+#include
+#include
+
+#include "up_arch.h"
+#include "up_internal.h"
+
+#include "lpc17_internal.h"
+#include "zkitarm_internal.h"
+
+#ifdef CONFIG_ARCH_LEDS
+
+/****************************************************************************
+ * Definitions
+ ****************************************************************************/
+
+/* CONFIG_DEBUG_LED enables debug output from this file (needs CONFIG_DEBUG
+ * and pherhaps CONFIG_DEBUG_VERBOSE too)
+ */
+
+#ifdef CONFIG_DEBUG_LED
+# define leddbg lldbg
+# ifdef CONFIG_DEBUG_VERBOSE
+# define ledvdbg lldbg
+# else
+# define ledvdbg(x...)
+# endif
+#else
+# define leddbg(x...)
+# define ledvdbg(x...)
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static bool g_ncstate;
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: up_ledinit
+ ****************************************************************************/
+
+void up_ledinit(void)
+{
+ /* Configure all LED GPIO lines */
+
+ lpc17_configgpio(ZKITARM_LED1);
+ lpc17_configgpio(ZKITARM_LED2);
+ g_ncstate = true;
+}
+
+/****************************************************************************
+ * Name: up_ledon
+ ****************************************************************************/
+
+void up_ledon(int led)
+{
+ bool off;
+
+ switch (led)
+ {
+ case 0:
+ case 2:
+ off = true;
+ break;
+
+ case 1:
+ off = false;
+ g_ncstate = false;
+ break;
+
+ default:
+ return;
+ }
+
+ lpc17_gpiowrite(ZKITARM_LED1, off);
+ lpc17_gpiowrite(ZKITARM_LED2, off);
+}
+
+/****************************************************************************
+ * Name: up_ledoff
+ ****************************************************************************/
+
+void up_ledoff(int led)
+{
+ bool off;
+
+ switch (led)
+ {
+ case 0:
+ case 1:
+ off = false;
+ break;
+
+ case 2:
+ off = g_ncstate;
+ break;
+
+ default:
+ return;
+ }
+
+ lpc17_gpiowrite(ZKITARM_LED1, off);
+ lpc17_gpiowrite(ZKITARM_LED2, off);
+}
+
+#endif /* CONFIG_ARCH_LEDS */
diff --git a/nuttx/configs/zkit-arm-1769/src/up_nsh.c b/nuttx/configs/zkit-arm-1769/src/up_nsh.c
new file mode 100644
index 000000000..766c46b92
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/src/up_nsh.c
@@ -0,0 +1,176 @@
+/****************************************************************************
+ * config/zkit-arm-1769/src/up_nsh.c
+ * arch/arm/src/board/up_nsh.c
+ *
+ * Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ * Author: BabuSubashChandar
+ *
+ * Based on config/lpcxpresso-lpc1768/src/up_nsh.c
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include
+
+#include
+#include
+#include
+
+#include
+#include
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+/* PORT and SLOT number probably depend on the board configuration */
+
+#ifdef CONFIG_ARCH_BOARD_ZKITARM
+# define CONFIG_NSH_HAVEUSBDEV 1
+# ifdef CONFIG_LPC17_SSP0
+# define CONFIG_NSH_HAVEMMCSD 1
+# else
+# undef CONFIG_NSH_HAVEMMCSD
+# endif
+#else
+# error "Unrecognized board"
+# undef CONFIG_NSH_HAVEUSBDEV
+# undef CONFIG_NSH_HAVEMMCSD
+#endif
+
+/* Do we have SPI support for MMC/SD? */
+
+#ifdef CONFIG_NSH_HAVEMMCSD
+# if !defined(CONFIG_NSH_MMCSDSPIPORTNO) || CONFIG_NSH_MMCSDSPIPORTNO != 0
+# error "The ZKit-arm MMC/SD is on SSP0"
+# undef CONFIG_NSH_MMCSDSPIPORTNO
+# define CONFIG_NSH_MMCSDSPIPORTNO 0
+# endif
+# if !defined(CONFIG_NSH_MMCSDSLOTNO) || CONFIG_NSH_MMCSDSLOTNO != 0
+# error "The ZKit-arm MMC/SD has only one slot (0)"
+# undef CONFIG_NSH_MMCSDSLOTNO
+# define CONFIG_NSH_MMCSDSLOTNO 0
+# endif
+#endif
+
+/* Can't support USB device features if USB device is not enabled */
+
+#ifndef CONFIG_USBDEV
+# undef CONFIG_NSH_HAVEUSBDEV
+#endif
+
+/* Can't support MMC/SD features if mountpoints are disabled */
+
+#if defined(CONFIG_DISABLE_MOUNTPOINT)
+# undef CONFIG_NSH_HAVEMMCSD
+#endif
+
+#ifndef CONFIG_NSH_MMCSDMINOR
+# define CONFIG_NSH_MMCSDMINOR 0
+#endif
+
+/* Debug ********************************************************************/
+
+#ifdef CONFIG_CPP_HAVE_VARARGS
+# ifdef CONFIG_DEBUG
+# define message(...) lib_lowprintf(__VA_ARGS__)
+# else
+# define message(...) printf(__VA_ARGS__)
+# endif
+#else
+# ifdef CONFIG_DEBUG
+# define message lib_lowprintf
+# else
+# define message printf
+# endif
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nsh_archinitialize
+ *
+ * Description:
+ * Perform architecture specific initialization
+ *
+ ****************************************************************************/
+
+int nsh_archinitialize(void)
+{
+#ifdef CONFIG_NSH_HAVEMMCSD
+ FAR struct spi_dev_s *ssp;
+ int ret;
+
+ /* Get the SSP port */
+
+ ssp = up_spiinitialize(CONFIG_NSH_MMCSDSPIPORTNO);
+ if (!ssp)
+ {
+ message("nsh_archinitialize: Failed to initialize SSP port %d\n",
+ CONFIG_NSH_MMCSDSPIPORTNO);
+ return -ENODEV;
+ }
+
+ message("Successfully initialized SSP port %d\n",
+ CONFIG_NSH_MMCSDSPIPORTNO);
+
+ /* Bind the SSP port to the slot */
+
+ ret = mmcsd_spislotinitialize(CONFIG_NSH_MMCSDMINOR, CONFIG_NSH_MMCSDSLOTNO, ssp);
+ if (ret < 0)
+ {
+ message("nsh_archinitialize: Failed to bind SSP port %d to MMC/SD slot %d: %d\n",
+ CONFIG_NSH_MMCSDSPIPORTNO, CONFIG_NSH_MMCSDSLOTNO, ret);
+ return ret;
+ }
+
+ message("Successfuly bound SSP port %d to MMC/SD slot %d\n",
+ CONFIG_NSH_MMCSDSPIPORTNO, CONFIG_NSH_MMCSDSLOTNO);
+#endif
+ return OK;
+}
diff --git a/nuttx/configs/zkit-arm-1769/src/up_ssp.c b/nuttx/configs/zkit-arm-1769/src/up_ssp.c
new file mode 100644
index 000000000..543669035
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/src/up_ssp.c
@@ -0,0 +1,214 @@
+/************************************************************************************
+ * configs/zkit-arm-1769/src/up_ssp.c
+ * arch/arm/src/board/up_ssp.c
+ *
+ * Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ * Author: BabuSubashChandar
+ *
+ * Based on configs/lpcxpresso-lpc1768/src/up_ssp.c
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include
+
+#include
+#include
+#include
+
+#include
+#include
+
+#include "up_arch.h"
+#include "chip.h"
+#include "lpc17_internal.h"
+#include "zkitarm_internal.h"
+
+#if defined(CONFIG_LPC17_SSP0) || defined(CONFIG_LPC17_SSP1)
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+
+/* CONFIG_DEBUG_SPI enables debug output from this file (needs CONFIG_DEBUG too) */
+
+#ifdef CONFIG_DEBUG_SPI
+# define sspdbg lldbg
+# ifdef CONFIG_DEBUG_VERBOSE
+# define sspvdbg lldbg
+# else
+# define sspvdbg(x...)
+# endif
+#else
+# define sspdbg(x...)
+# define sspvdbg(x...)
+#endif
+
+/* Dump GPIO registers */
+
+#if defined(CONFIG_DEBUG_SPI) && defined(CONFIG_DEBUG_VERBOSE)
+# define ssp_dumpgpio(m) lpc17_dumpgpio(SDCCS_GPIO, m)
+#else
+# define ssp_dumpgpio(m)
+#endif
+
+/************************************************************************************
+ * Private Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: lpc17_sspinitialize
+ *
+ * Description:
+ * Called to configure SPI chip select GPIO pins for the LM3S6965 Eval Kit.
+ *
+ ************************************************************************************/
+
+void weak_function lpc17_sspinitialize(void)
+{
+ /* Configure the SPI-based microSD CS GPIO */
+
+ ssp_dumpgpio("lpc17_sspinitialize() Entry)");
+
+ /* Configure card detect and chip select for the SD slot. NOTE: Jumper J55 must
+ * be set correctly for the SD slot chip select.
+ */
+
+#ifdef CONFIG_LPC17_SSP0
+ (void)lpc17_configgpio(ZKITARM_SD_CS);
+ (void)lpc17_configgpio(ZKITARM_SD_CD);
+
+ /* Configure chip select for the OLED. For the SPI interface, insert jumpers in
+ * J42, J43, J45 pin1-2 and J46 pin 1-2.
+ */
+
+#ifdef CONFIG_NX_LCDDRIVER
+ (void)lpc17_configgpio(ZKITARM_OLED_CS);
+#endif
+#endif
+
+ ssp_dumpgpio("lpc17_sspinitialize() Exit");
+}
+
+/************************************************************************************
+ * Name: lpc17_ssp0/ssp1select and lpc17_ssp0/ssp1status
+ *
+ * Description:
+ * The external functions, lpc17_ssp0/ssp1select and lpc17_ssp0/ssp1status
+ * must be provided by board-specific logic. They are implementations of the select
+ * and status methods of the SPI interface defined by struct spi_ops_s (see
+ * include/nuttx/spi.h). All other methods (including up_spiinitialize())
+ * are provided by common LPC17xx logic. To use this common SPI logic on your
+ * board:
+ *
+ * 1. Provide logic in lpc17_boardinitialize() to configure SPI/SSP chip select
+ * pins.
+ * 2. Provide lpc17_ssp0/ssp1select() and lpc17_ssp0/ssp1status() functions
+ * in your board-specific logic. These functions will perform chip selection
+ * and status operations using GPIOs in the way your board is configured.
+ * 3. Add a calls to up_spiinitialize() in your low level application
+ * initialization logic
+ * 4. The handle returned by up_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).
+ *
+ ************************************************************************************/
+
+#ifdef CONFIG_LPC17_SSP1
+void lpc17_ssp1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
+{
+ sspdbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
+ ssp_dumpgpio("lpc17_spi1select() Entry");
+
+#warning "Assert CS here (false)"
+
+ ssp_dumpgpio("lpc17_spi1select() Exit");
+}
+
+uint8_t lpc17_ssp1status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
+{
+ sspdbg("Returning SPI_STATUS_PRESENT\n");
+ return SPI_STATUS_PRESENT;
+}
+#endif
+
+#ifdef CONFIG_LPC17_SSP0
+void lpc17_ssp0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
+{
+ sspdbg("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
+ ssp_dumpgpio("lpc17_spi0select() Entry");
+
+ if (devid == SPIDEV_MMCSD)
+ {
+ /* Assert/de-assert the CS pin to the card */
+
+ (void)lpc17_gpiowrite(ZKITARM_SD_CS, !selected);
+ }
+#ifdef CONFIG_NX_LCDDRIVER
+ else if (devid == SPIDEV_DISPLAY)
+ {
+ /* Assert the CS pin to the OLED display */
+
+ (void)lpc17_gpiowrite(ZKITARM_OLED_CS, !selected);
+ }
+#endif
+ ssp_dumpgpio("lpc17_spi0select() Exit");
+}
+
+uint8_t lpc17_ssp0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
+{
+ if (devid == SPIDEV_MMCSD)
+ {
+ /* Read the state of the card-detect bit */
+
+ if (lpc17_gpioread(ZKITARM_SD_CD) == 0)
+ {
+ sspdbg("Returning SPI_STATUS_PRESENT\n");
+ return SPI_STATUS_PRESENT;
+ }
+ }
+
+ sspdbg("Returning zero\n");
+ return 0;
+}
+#endif
+
+#endif /* CONFIG_LPC17_SSP0 || CONFIG_LPC17_SSP1 */
diff --git a/nuttx/configs/zkit-arm-1769/src/up_usbmsc.c b/nuttx/configs/zkit-arm-1769/src/up_usbmsc.c
new file mode 100644
index 000000000..2cdfe8603
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/src/up_usbmsc.c
@@ -0,0 +1,147 @@
+/****************************************************************************
+ * configs/zkit-arm-1769/src/up_usbmsc.c
+ *
+ * Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ * Author: BabuSubashChandar
+ *
+ * Based on configs/lpcxpresso-lpc1768/src/up_usbmsc.c
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt
+ *
+ * Configure and register the LPC17xx MMC/SD SPI block driver.
+ *
+ * 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
+
+#include
+#include
+#include
+
+#include
+#include
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+#ifndef CONFIG_EXAMPLES_USBMSC_DEVMINOR1
+# define CONFIG_EXAMPLES_USBMSC_DEVMINOR1 0
+#endif
+
+/* PORT and SLOT number probably depend on the board configuration */
+
+#ifdef CONFIG_ARCH_BOARD_ZKITARM
+# undef LPC17XX_MMCSDSPIPORTNO
+# define LPC17XX_MMCSDSPIPORTNO 0
+# undef LPC17XX_MMCSDSLOTNO
+# define LPC17XX_MMCSDSLOTNO 0
+#else
+ /* Add configuration for new LPC17xx boards here */
+# error "Unrecognized LPC17xx board"
+#endif
+
+/* Debug ********************************************************************/
+
+#ifdef CONFIG_CPP_HAVE_VARARGS
+# ifdef CONFIG_DEBUG
+# define message(...) lib_lowprintf(__VA_ARGS__)
+# define msgflush()
+# else
+# define message(...) printf(__VA_ARGS__)
+# define msgflush() fflush(stdout)
+# endif
+#else
+# ifdef CONFIG_DEBUG
+# define message lib_lowprintf
+# define msgflush()
+# else
+# define message printf
+# define msgflush() fflush(stdout)
+# endif
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: usbmsc_archinitialize
+ *
+ * Description:
+ * Perform architecture specific initialization
+ *
+ ****************************************************************************/
+
+int usbmsc_archinitialize(void)
+{
+ FAR struct spi_dev_s *spi;
+ int ret;
+
+ /* Get the SPI port */
+
+ message("usbmsc_archinitialize: Initializing SPI port %d\n",
+ LPC17XX_MMCSDSPIPORTNO);
+
+ spi = up_spiinitialize(LPC17XX_MMCSDSPIPORTNO);
+ if (!spi)
+ {
+ message("usbmsc_archinitialize: Failed to initialize SPI port %d\n",
+ LPC17XX_MMCSDSPIPORTNO);
+ return -ENODEV;
+ }
+
+ message("usbmsc_archinitialize: Successfully initialized SPI port %d\n",
+ LPC17XX_MMCSDSPIPORTNO);
+
+ /* Bind the SPI port to the slot */
+
+ message("usbmsc_archinitialize: Binding SPI port %d to MMC/SD slot %d\n",
+ LPC17XX_MMCSDSPIPORTNO, LPC17XX_MMCSDSLOTNO);
+
+ ret = mmcsd_spislotinitialize(CONFIG_EXAMPLES_USBMSC_DEVMINOR1, LPC17XX_MMCSDSLOTNO, spi);
+ if (ret < 0)
+ {
+ message("usbmsc_archinitialize: Failed to bind SPI port %d to MMC/SD slot %d: %d\n",
+ LPC17XX_MMCSDSPIPORTNO, LPC17XX_MMCSDSLOTNO, ret);
+ return ret;
+ }
+
+ message("usbmsc_archinitialize: Successfuly bound SPI port %d to MMC/SD slot %d\n",
+ LPC17XX_MMCSDSPIPORTNO, LPC17XX_MMCSDSLOTNO);
+ return OK;
+}
diff --git a/nuttx/configs/zkit-arm-1769/src/zkitarm_internal.h b/nuttx/configs/zkit-arm-1769/src/zkitarm_internal.h
new file mode 100644
index 000000000..19eb5b438
--- /dev/null
+++ b/nuttx/configs/zkit-arm-1769/src/zkitarm_internal.h
@@ -0,0 +1,236 @@
+/************************************************************************************
+ * configs/zkit-arm-1769/src/zkitarm_internal.h
+ * arch/arm/src/board/zkitarm_internal.n
+ *
+ * Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ * Author: BabuSubashChandar
+ *
+ * Based on configs/lpcxpresso-lpc1768/src/lpcxpresso_internal.h
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+#ifndef _CONFIGS_ZKITARM_LPC1768_SRC_ZKITARM_INTERNAL_H
+#define _CONFIGS_ZKITARM_LPC1768_SRC_ZKITARM_INTERNAL_H
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include
+#include
+
+/************************************************************************************
+ * Definitions
+ ************************************************************************************/
+/************************************************************************************
+ * ZKit-ARM-1769 Pin Usage
+ ************************************************************************************/
+/* Pin Description On Board Connector
+ * -------------------------------- ---------------- -------------
+ * P0.0/RD1/TXD3/SDA1 RD1 AUX-CON
+ * P0.1/TD1/RXD3/SCL1 TD1
+ * P0.2/TXD0/AD0.7 TXD0 COM0
+ * P0.3/RXD0/AD0.6 RXD0
+ * P0.4/I2SRX_CLK/RD2/CAP2.0 GPIO0
+ * P0.5/I2SRX_WS/TD2/CAP2.1 GPIO1
+ * P0.6/I2SRX_SDA/SSEL1/MAT2.0 SSEL1 SPI
+ * P0.7/I2STX_CLK/SCK1/MAT2.1 SCK1
+ * P0.8/I2STX_WS/MISO1/MAT2.2 MISO1
+ * P0.9/I2STX_SDA/MOSI1/MAT2.3 MOSI1
+ * P0.10/TXD2/SDA2/MAT3.0 TXD2 AUX-CON
+ * P0.11/RXD2/SCL2/MAT3.1 RXD2
+ * P0.15/TXD1/SCK0/SCK SD-SCK
+ * P0.16/RXD1/SSEL0/SSEL SD-SSEL SD-CARD
+ * P0.17/CTS1/MISO0/MISO SD-MISO
+ * P0.18/DCD1/M0SI0/MOSI SD-MOSI
+ * P0.19/DSR1/SDA1 LED1
+ * P0.20/DTR1/SCL1 DTR1 COM1
+ * P0.21/RI1/RD1 N.C LED2
+ * P0.22/RTS1/TD1 RTS1 COM1
+ * P0.23/AD0.0/I2SRX_CLK/CAP3.0 AD0
+ * P0.24/AD0.1/I2SRX_WS/CAP3.1 AD1 AIN
+ * P0.25/AD0.2/I2SRX_SDA/TXD3 AD2
+ * P0.26/AD0.3/AOUT/RXD3 AD3
+ * P0.27/SDA0/USB_SDA SDA0 I2C0
+ * P0.28/SCL0/USB_SCL SCL0
+ * P0.29/USB_D+ USB-D+ USB
+ * P0.30/USB_D- USB-D-
+ *
+ * P1.0/ENET_TXD0 ETH-TXD0
+ * P1.1/ENET_TXD1 ETH-TXD1
+ * P1.4/ENET_TX_EN ETH-TXEN
+ * P1.8/ENET_CRS ETH-CRS
+ * P1.9/ENET_RXD0 ETH-RXD0 ETH
+ * P1.10/ENET_RXD1 ETH-RXD1
+ * P1.14/ENET_RX_ER ETH-RXER
+ * P1.15/ENET_REF_CLK ETH-REFCLK
+ * P1.16/ENET_MDC ETH-MDC
+ * P1.17/ENET_MDIO ETH-MDIO
+ * P1.18/USB_UP_LED/PWM1.1/CAP1.0 USB-UP-LED
+ * P1.19/MCOA0/nUSB_PPWR/CAP1.1 KEY1
+ * P1.20/MCFB0/PWM1.2/SCK0 LCD-SCK
+ * P1.21/MCABORT/PWM1.3/SSEL0 LCD-SSEL
+ * P1.22/MCOB0/USB_PWRD/MAT1.0 LCD-A0 LCD
+ * P1.23/MCFB1/PWM1.4/MISO0 NC
+ * P1.24/MCFB2/PWM1.5/MOSI0 LCD_MOSI
+ * P1.25/MCOA1/MAT1.1 LCD-RST
+ * P1.26/MCOB1/PWM1.6/CAP0.0 LCD-AO
+ * P1.27/CLKOUT/nUSB_OVRCR/CAP0.1 KEY2
+ * P1.28/MCOA2/MAT0.0 KEY3
+ * P1.29/MCOB2/PCAP1.1/MAT0.1 CAP1 PWM-CON
+ * P1.30/VBUS/AD0.4 VBUS USB
+ * P1.31/SCK1/AD0.5 KEY4
+ *
+ * P2.0/PWM1.1/TXD1 TXD1
+ * P2.1/PWM1.2/RXD1 RXD1 COM1
+ * P2.2/PWM1.3/CTS1/TRACEDATA3 CTS1
+ * P2.3/PWM1.4/DCD1/TRACEDATA2 PWM4
+ * P2.4/PWM1.5/DSR1/TRACEDATA1 PWM5 PWM
+ * P2.5/PWM1.6/DTR1/TRACEDATA0 PWM6
+ * P2.6/PCAP1.0/RI1/TRACECLK CAP0
+ * P2.7/RD2/RTS1 RD2 RD2 CAN2
+ * P2.8/TD2/TXD2 TD2 TD2
+ * P2.9/USB_CONNECT/RXD2 USB_CONNECT USB
+ * P2.10/nEINT0/NMI ISP
+ * P2.11/nEINT1/I2STX_CLK INT1 I2C
+ * P2.12/nEINT2/I2STX_WS SD-DET SD-CARD
+ * P2.13/nEINT3/I2STX_SDA KEY5
+ *
+ * P3.25/MAT0.0/PWM1.2 PWM2 PWM
+ * P3.26/STCLK/MAT0.1/PWM1.3 PWM3
+ *
+ * P4.28/RX_MCLK/MAT2.0/TXD3 GPIO2 SPI
+ * P4.28/RX_MCLK/MAT2.0/TXD3 GPIO3
+ */
+
+#define ZKITARM_I2C1_EPROM_SDA GPIO_I2C1_SDA
+#define ZKITARM_I2C1_EPROM_SDL GPIO_I2C1_SCL
+
+#define ZKITARM_LED1 (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT0 | GPIO_PIN19)
+#define ZKITARM_LED2 (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT0 | GPIO_PIN21)
+
+#define ZKITARM_KEY5 (GPIO_INTBOTH | GPIO_FLOAT | GPIO_PORT2 | GPIO_PIN13)
+
+#define ZKITARM_KEY5_IRQ LPC17_IRQ_P2p13
+
+/* SD Slot
+ *
+ * Board LPC1768
+ * SD Signal Pin
+ * --- ----------- ----------
+ * CS SD-SSEL P0.16
+ * DIN SD-MOSI P0.18 MOSI0
+ * DOUT SD-MISO P0.17 MISO0
+ * CLK SD-SCK P0.15 SCK0
+ * CD SD-DET P2.12
+ */
+
+#define ZKITARM_SD_CS (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT0 | GPIO_PIN16)
+#ifdef CONFIG_GPIO_IRQ
+# define ZKITARM_SD_CD (GPIO_INTBOTH | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN12)
+#else
+# define ZKITARM_SD_CD (GPIO_INPUT | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN12)
+#endif
+
+#define ZKITARM_SD_CDIRQ LPC17_IRQ_P2p12
+
+/* USB:
+ *
+ * Board LPC1768
+ * Signal Pin
+ * ------------------- --------
+ * USB_CONNECT P2.9 USB_CONNECT
+ * USB_DM P0.29 USB_D-
+ * USB_DP P0.30 USB_D+
+ * USB_VBUS P1.30 USB_VBUS
+ * USB_UPLED P1.18 USB_UPLED
+ *
+ */
+
+#define ZKITARM_USB_CONNECT (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT2 | GPIO_PIN9)
+#ifdef CONFIG_GPIO_IRQ
+# define ZKITARM_USB_VBUSSENSE (GPIO_INTBOTH | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN30)
+#else
+# define ZKITARM_USB_VBUSSENSE (GPIO_INPUT | GPIO_PULLUP | GPIO_PORT1 | GPIO_PIN30)
+#endif
+
+/* 128x64 LCD with SPI interface
+ * ---------------------------------------
+ * The LCD display is connected to the SPI-bus.
+ *
+ * ZKit-ARM Signals
+ *
+ * ----------------------------+---------------+--------------------------------------------
+ * LPC1758 Pin | Board Signal | Description
+ * ----------------------------+---------------+--------------------------------------------
+ * P1.20/MCFB0/PWM1.2/SCK0 | LCD-SCK | LCD Clock signal (D6)
+ * P1.21/MCABORT/PWM1.3/SSEL0 | LCD-SSEL | LCD Chip Select (CSB)
+ * P1.22/MCOB0/USB_PWRD/MAT1.0 | LCD-A0 | LCD-A0 (A0)
+ * P1.23/MCFB1/PWM1.4/MISO0 | N.C |
+ * P1.24/MCFB2/PWM1.5/MOSI0 | LCD-MOSI | LCD Data (D7)
+ * P1.25/MCOA1/MAT1.1 | LCD-RST | LCD Reset (RSTB) - Resets Everything in LCD
+ * ----------------------------+---------------+--------------------------------------------
+ */
+
+#if 0
+#define ZKITARM_OLED_POWER (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN1)
+#define ZKITARM_OLED_CS (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT0 | GPIO_PIN6)
+#define ZKITARM_OLED_DC (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN7)
+#endif
+
+/************************************************************************************
+ * Public Types
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public data
+ ************************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: lpc17_sspinitialize
+ *
+ * Description:
+ * Called to configure SPI chip select GPIO pins for the LPCXpresso board.
+ *
+ ************************************************************************************/
+
+void weak_function lpc17_sspinitialize(void);
+
+#endif /* __ASSEMBLY__ */
+#endif /* _CONFIGS_ZKITARM_LPC1768_SRC_ZKITARM_INTERNAL_H */
diff --git a/nuttx/sched/pthread_create.c b/nuttx/sched/pthread_create.c
index 57ef7696b..ce19941fc 100644
--- a/nuttx/sched/pthread_create.c
+++ b/nuttx/sched/pthread_create.c
@@ -247,6 +247,7 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr,
ptcb = (FAR struct pthread_tcb_s *)kzalloc(sizeof(struct pthread_tcb_s));
if (!ptcb)
{
+ sdbg("ERROR: Failed to allocate TCB\n");
return ENOMEM;
}
@@ -283,6 +284,7 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr,
pjoin = (FAR struct join_s*)kzalloc(sizeof(struct join_s));
if (!pjoin)
{
+ sdbg("ERROR: Failed to allocate join\n");
errcode = ENOMEM;
goto errout_with_tcb;
}
--
cgit v1.2.3