diff --git a/.cproject b/.cproject
index 6670b0b24..1f93625a0 100644
--- a/.cproject
+++ b/.cproject
@@ -9,6 +9,7 @@
+
@@ -35,13 +36,15 @@
@@ -1237,6 +1240,7 @@
diff --git a/demos/boards/board.h b/demos/boards/board.h
new file mode 100644
index 000000000..c3bdd6e48
--- /dev/null
+++ b/demos/boards/board.h
@@ -0,0 +1,86 @@
+/*
+ * board.h
+ *
+ * Created on: Dec 4, 2012
+ * Author: hathach
+ */
+
+/*
+ * Software License Agreement (BSD License)
+ * Copyright (c) 2012, hathach (tinyusb.net)
+ * All rights reserved.
+ *
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ *
+ * This file is part of the tiny usb stack.
+ */
+
+/** \file
+ * \brief TBD
+ *
+ * \note TBD
+ */
+
+/**
+ * \defgroup Group_Board Boards
+ * \brief TBD
+ *
+ * @{
+ */
+
+#ifndef _TUSB_BOARD_H_
+#define _TUSB_BOARD_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include
+
+ /// n-th Bit
+#ifndef BIT
+#define BIT(n) (1 << (n))
+#endif
+
+#ifndef BOARD
+#define BOARD BOARD_NGX4330_EXPLORER
+#endif
+
+#define BOARD_NGX4330_EXPLORER 1
+#define BOARD_LPCXPRESSO1347 2
+
+//#ifdef BOARD == BOARD_NGX4330_EXPLORER
+//#include "board_ngx4330_explorer.h"
+//#endif
+
+/// Init board peripherals : Clock, UART, LEDs, Buttons
+void board_init(void);
+void board_leds(uint32_t mask, uint32_t state);
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_BOARD_H_ */
+
+/** @} */
diff --git a/demos/boards/board_lpcexpresso1347.c b/demos/boards/board_lpcexpresso1347.c
new file mode 100644
index 000000000..9b3179687
--- /dev/null
+++ b/demos/boards/board_lpcexpresso1347.c
@@ -0,0 +1,64 @@
+/*
+ * board_lpcexpresso1347.c
+ *
+ * Created on: Dec 4, 2012
+ * Author: hathach
+ */
+
+/*
+ * Software License Agreement (BSD License)
+ * Copyright (c) 2012, hathach (tinyusb.net)
+ * All rights reserved.
+ *
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ *
+ * This file is part of the tiny usb stack.
+ */
+
+#include "board.h"
+
+#if BOARD == BOARD_LPCXPRESSO1347
+
+#include "LPC13Uxx.h"
+
+#define CFG_LED_PORT (0)
+#define CFG_LED_PIN (7)
+#define CFG_LED_ON (1)
+#define CFG_LED_OFF (0)
+
+void board_init(void)
+{
+ SystemInit();
+ systickInit(1);
+ GPIOInit();
+ GPIOSetDir(CFG_LED_PORT, CFG_LED_PIN, 1);
+ LPC_GPIO->CLR[CFG_LED_PORT] = (1 << CFG_LED_PIN);
+}
+
+void board_leds(uint32_t mask, uint32_t state)
+{
+ if (mask)
+ GPIOSetBitValue(CFG_LED_PORT, CFG_LED_PIN, state);
+}
+
+#endif
diff --git a/demos/boards/board_ngx4330_explorer.c b/demos/boards/board_ngx4330_explorer.c
new file mode 100644
index 000000000..6ab9c0e27
--- /dev/null
+++ b/demos/boards/board_ngx4330_explorer.c
@@ -0,0 +1,93 @@
+/*
+ * board_ngx4330_explorer.c
+ *
+ * Created on: Dec 4, 2012
+ * Author: hathach
+ */
+
+/*
+ * Software License Agreement (BSD License)
+ * Copyright (c) 2012, hathach (tinyusb.net)
+ * All rights reserved.
+ *
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ *
+ * This file is part of the tiny usb stack.
+ */
+
+#include "board.h"
+
+#if BOARD == BOARD_NGX4330_EXPLORER
+
+#include "lpc43xx_uart.h"
+#include "lpc43xx_scu.h"
+#include "lpc43xx_cgu.h"
+#include "lpc43xx_gpio.h"
+#include "lpc43xx_timer.h"
+#include "lpc43xx_i2c.h"
+#include "lpc43xx_gpdma.h"
+#include "lpc43xx_i2s.h"
+#include "lpc43xx_emc.h"
+
+#define BOARD_MAX_LEDS 2
+const static struct {
+ uint8_t port;
+ uint8_t pin;
+}leds[BOARD_MAX_LEDS] = { {1, 11}, {1,12} };
+
+void board_init(void)
+{
+ CGU_Init();
+ SysTick_Config( CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/1000 ); /* 1 ms Timer */
+
+ /* Turn on 5V USB VBUS TODO Should be Host-only */
+ scu_pinmux(0x2, 6, MD_PUP | MD_EZI, FUNC4); // P2_6 USB1_PWR_EN, USB1 VBus function
+ scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // P2_5 USB1_VBUS, MUST CONFIGURE THIS SIGNAL FOR USB1 NORMAL OPERATION
+
+ /* Turn on 5V USB VBUS TODO Should be Host-only */
+#if 1 //(BOARD == BOARD_XPLORER)
+ scu_pinmux(0x1, 7, MD_PUP | MD_EZI, FUNC4); // P1_7 USB0_PWR_EN, USB0 VBus function Xplorer
+#else
+ scu_pinmux(0x2, 3, MD_PUP | MD_EZI, FUNC7); // P2_3 USB0_PWR_EN, USB0 VBus function Farnell
+#endif
+
+ // Leds Init
+ uint8_t i;
+ for (i=0; i
@@ -59,13 +63,11 @@
diff --git a/demos/device/keyboard/.project b/demos/device/keyboard/.project
index 200a329db..dd46f5734 100644
--- a/demos/device/keyboard/.project
+++ b/demos/device/keyboard/.project
@@ -3,8 +3,6 @@
device_keyboard
- CMSISv2p10_LPC13Uxx
- LPC13Uxx_DriverLibtinyusb
@@ -82,4 +80,11 @@
org.eclipse.cdt.managedbuilder.core.managedBuildNatureorg.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
+ boards
+ 2
+ PARENT-2-PROJECT_LOC/boards
+
+
diff --git a/demos/device/keyboard/main.c b/demos/device/keyboard/main.c
index b610e6567..859139997 100644
--- a/demos/device/keyboard/main.c
+++ b/demos/device/keyboard/main.c
@@ -4,6 +4,7 @@
#include
#include
+#include "board.h"
#include "tusb.h"
// Variable to store CRP value in. Will be placed automatically
@@ -16,19 +17,7 @@ int main(void)
uint32_t currentSecond, lastSecond;
currentSecond = lastSecond = 0;
- SystemInit();
-
- systickInit(1);
- GPIOInit();
-
- #define CFG_LED_PORT (0)
- #define CFG_LED_PIN (7)
- #define CFG_LED_ON (1)
- #define CFG_LED_OFF (0)
-
- GPIOSetDir(CFG_LED_PORT, CFG_LED_PIN, 1);
- LPC_GPIO->CLR[CFG_LED_PORT] = (1 << CFG_LED_PIN);
-
+ board_init();
tusb_init();
while (1)
@@ -38,7 +27,7 @@ int main(void)
{
/* Toggle LED once per second */
lastSecond = currentSecond;
- GPIOSetBitValue(CFG_LED_PORT, CFG_LED_PIN, lastSecond % 2);
+ board_leds(0x01, lastSecond%2);
#ifndef CFG_CLASS_CDC
if (usb_isConfigured())
@@ -55,38 +44,38 @@ int main(void)
#endif
}
- #ifdef CFG_CLASS_CDC
- if (usb_isConfigured())
- {
- uint8_t cdc_char;
- if( tusb_cdc_getc(&cdc_char) )
- {
- switch (cdc_char)
- {
- #ifdef CFG_CLASS_HID_KEYBOARD
- case '1' :
- {
- uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'};
- tusb_hid_keyboard_sendKeys(0x08, keys, 1); // windows + E --> open explorer
- }
- break;
- #endif
-
- #ifdef CFG_CLASS_HID_MOUSE
- case '2' :
- tusb_hid_mouse_send(0, 10, 10);
- break;
- #endif
-
- default :
- cdc_char = toupper(cdc_char);
- tusb_cdc_putc(cdc_char);
- break;
-
- }
- }
- }
-#endif
+// #ifdef CFG_CLASS_CDC
+// if (usb_isConfigured())
+// {
+// uint8_t cdc_char;
+// if( tusb_cdc_getc(&cdc_char) )
+// {
+// switch (cdc_char)
+// {
+// #ifdef CFG_CLASS_HID_KEYBOARD
+// case '1' :
+// {
+// uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'};
+// tusb_hid_keyboard_sendKeys(0x08, keys, 1); // windows + E --> open explorer
+// }
+// break;
+// #endif
+//
+// #ifdef CFG_CLASS_HID_MOUSE
+// case '2' :
+// tusb_hid_mouse_send(0, 10, 10);
+// break;
+// #endif
+//
+// default :
+// cdc_char = toupper(cdc_char);
+// tusb_cdc_putc(cdc_char);
+// break;
+//
+// }
+// }
+// }
+//#endif
}
return 0;
diff --git a/tinyusb/common/common.h b/tinyusb/common/common.h
index d073b8cca..4b6fc645b 100644
--- a/tinyusb/common/common.h
+++ b/tinyusb/common/common.h
@@ -62,7 +62,7 @@
#include
#include "tusb_cfg.h"
-#include "arch/arch.h"
+#include "mcu/mcu.h"
#include "hal/hal.h"
#include "compiler/compiler.h"
#include "errors.h"
diff --git a/tinyusb/common/arch/arm_mx.h b/tinyusb/common/compiler/compiler_iar.h
similarity index 80%
rename from tinyusb/common/arch/arm_mx.h
rename to tinyusb/common/compiler/compiler_iar.h
index b806f7b73..9682f2145 100644
--- a/tinyusb/common/arch/arm_mx.h
+++ b/tinyusb/common/compiler/compiler_iar.h
@@ -1,7 +1,7 @@
/*
- * arm_mx.h
+ * compiler_iar.h
*
- * Created on: Nov 26, 2012
+ * Created on: Dec 3, 2012
* Author: hathach
*/
@@ -32,27 +32,32 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
- * This file is part of the tinyUSB stack.
+ * This file is part of the tiny usb stack.
*/
/** \file
- * \brief ARM Cortex Mx Header
- *
- * \note TBD
+ * \brief IAR Compiler
*/
-/** \ingroup Group_Arch
- *
+/** \ingroup Group_Compiler
+ * \defgroup Group_IAR IAR ARM
* @{
*/
-#ifndef _TUSB_ARM_MX_H_
-#define _TUSB_ARM_MX_H_
+#ifndef _TUSB_COMPILER_IAR_H_
+#define _TUSB_COMPILER_IAR_H_
-// #ifdef ARM_M3 ARM_M4 ARM_M0
+#ifdef __cplusplus
+ extern "C" {
+#endif
-#define ENDIAN_LITTLE
-#define ALIGNMENT (4)
+#define ATTR_PREPACKED __packed
+#define ATTR_PACKED
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_COMPILER_IAR_H_ */
-#endif /* _TUSB_ARM_MX_H_ */
/** @} */
diff --git a/tinyusb/common/arch/arch.h b/tinyusb/common/mcu/mcu.h
similarity index 81%
rename from tinyusb/common/arch/arch.h
rename to tinyusb/common/mcu/mcu.h
index 1cc3fc83d..2bff2a017 100644
--- a/tinyusb/common/arch/arch.h
+++ b/tinyusb/common/mcu/mcu.h
@@ -1,5 +1,5 @@
/*
- * arch.h
+ * mcu.h
*
* Created on: Nov 26, 2012
* Author: hathach
@@ -42,33 +42,35 @@
*/
/** \ingroup Group_Common
- * \defgroup Group_Arch Architecture
- * \brief Group_Arch brief
+ * \defgroup Group_MCU MicroController
+ * \brief Group_MCU brief
*
* @{
*/
-#ifndef _TUSB_ARCH_H_
-#define _TUSB_ARCH_H_
+#ifndef _TUSB_MCU_H_
+#define _TUSB_MCU_H_
-//#define ARCH_LPC134X
-//#define ARCH_LPC11XX
-#define ARCH_LPC43XX
+//#define MCU MCU_LPC43XX
+
+#define MCU_LPC134X 1
+#define MCU_LPC11XX 2
+#define MCU_LPC43XX 3
#define ENDIAN_LITTLE ///< MCU Endian
#define ALIGNMENT (4) ///< MCU Alignment
-#if defined ARCH_LPC134X
- #include "arch_lpc134x.h"
-#elif defined ARCH_LPC43XX
- #include "arch_lpc43xx.h"
-#elif defined ARCH_LPC11XX
- #include "arch_lpc11xx.h"
+#if MCU == MCU_LPC134X
+ #include "mcu_lpc134x.h"
+#elif MCU == MCU_LPC43XX
+ #include "mcu_lpc43xx.h"
+#elif MCU == MCU_LPC11XX
+ #include "mcu_lpc11xx.h"
#else
- #error Arch is not found
+ #error Arch is not supported yet
#endif
-#endif /* _TUSB_ARCH_H_ */
+#endif /* _TUSB_MCU_H_ */
/** @} */
diff --git a/tinyusb/common/arch/arch_lpc11xx.h b/tinyusb/common/mcu/mcu_lpc11xx.h
similarity index 92%
rename from tinyusb/common/arch/arch_lpc11xx.h
rename to tinyusb/common/mcu/mcu_lpc11xx.h
index 38d391700..3b7c00f63 100644
--- a/tinyusb/common/arch/arch_lpc11xx.h
+++ b/tinyusb/common/mcu/mcu_lpc11xx.h
@@ -1,5 +1,5 @@
/*
- * arch_lpc11xx.h
+ * mcu_lpc11xx.h
*
* Created on: Nov 29, 2012
* Author: hathach
@@ -41,20 +41,18 @@
* \note TBD
*/
-/** \ingroup Group_Arch
+/** \ingroup Group_MCU
*
* @{
*/
-#ifndef ARCH_LPC11XX_H_
-#define ARCH_LPC11XX_H_
+#ifndef MCU_LPC11XX_H_
+#define MCU_LPC11XX_H_
-#define ARM_M0
-#define DEVICE_ROMDRIVER
-
-#include "arm_mx.h"
#include "LPC11Uxx.h"
-#endif /* ARCH_LPC11XX_H_ */
+#define DEVICE_ROMDRIVER
+
+#endif /* MCU_LPC11XX_H_ */
/** @} */
diff --git a/tinyusb/common/arch/arch_lpc134x.h b/tinyusb/common/mcu/mcu_lpc134x.h
similarity index 90%
rename from tinyusb/common/arch/arch_lpc134x.h
rename to tinyusb/common/mcu/mcu_lpc134x.h
index 1779b784b..d5ac1e053 100644
--- a/tinyusb/common/arch/arch_lpc134x.h
+++ b/tinyusb/common/mcu/mcu_lpc134x.h
@@ -1,5 +1,5 @@
/*
- * arch_lpc134x.h
+ * mcu_lpc134x.h
*
* Created on: Nov 26, 2012
* Author: hathach
@@ -41,21 +41,19 @@
* \note TBD
*/
-/** \ingroup Group_Arch
+/** \ingroup Group_MCU
*
* @{
*/
-#ifndef _TUSB_ARCH_LPC134_X_H_
-#define _TUSB_ARCH_LPC134_X_H_
+#ifndef _TUSB_MCU_LPC134_X_H_
+#define _TUSB_MCU_LPC134_X_H_
-#define ARM_M3
-#define DEVICE_ROMDRIVER
-
-#include "arm_mx.h"
#include "LPC13Uxx.h"
-#endif /* _TUSB_ARCH_LPC134_X_H_ */
+#define DEVICE_ROMDRIVER
+
+#endif /* _TUSB_MCU_LPC134_X_H_ */
/** @} */
diff --git a/tinyusb/common/arch/arch_lpc43xx.h b/tinyusb/common/mcu/mcu_lpc43xx.h
similarity index 90%
rename from tinyusb/common/arch/arch_lpc43xx.h
rename to tinyusb/common/mcu/mcu_lpc43xx.h
index f96bbb0dc..fc022c4cb 100644
--- a/tinyusb/common/arch/arch_lpc43xx.h
+++ b/tinyusb/common/mcu/mcu_lpc43xx.h
@@ -1,5 +1,5 @@
/*
- * arch_lpc43xx.h
+ * mcu_lpc43xx.h
*
* Created on: Nov 26, 2012
* Author: hathach
@@ -41,21 +41,17 @@
* \note TBD
*/
-/** \ingroup Group_Arch
+/** \ingroup Group_MCU
*
* @{
*/
-#ifndef _TUSB_ARCH_LPC43XX_H_
-#define _TUSB_ARCH_LPC43XX_H_
+#ifndef _TUSB_MCU_LPC43XX_H_
+#define _TUSB_MCU_LPC43XX_H_
-#define ARM_M4
-//#define ARM_M0
-
-#include "arm_mx.h"
#include "LPC43xx.h"
#include "lpc43xx_cgu.h"
-#endif /* _TUSB_ARCH_LPC43XX_H_ */
+#endif /* _TUSB_MCU_LPC43XX_H_ */
/// @}
diff --git a/tinyusb/hal/hal_lpc134x.c b/tinyusb/hal/hal_lpc134x.c
index 10acd3388..88ecd93e1 100644
--- a/tinyusb/hal/hal_lpc134x.c
+++ b/tinyusb/hal/hal_lpc134x.c
@@ -37,7 +37,7 @@
#include "common/common.h"
-#ifdef ARCH_LPC134X
+#if MCU == MCU_LPC134X
TUSB_Error_t hal_init()
{
diff --git a/tinyusb/hal/hal_lpc43xx.c b/tinyusb/hal/hal_lpc43xx.c
index 2291e7532..2fcd885f5 100644
--- a/tinyusb/hal/hal_lpc43xx.c
+++ b/tinyusb/hal/hal_lpc43xx.c
@@ -37,7 +37,7 @@
#include "common/common.h"
-#ifdef ARCH_LPC43XX
+#if MCU == MCU_LPC43XX
TUSB_Error_t hal_init()
{