Просмотр исходного кода

add board abstract layer
rename arch to mcu

hathach 13 лет назад
Родитель
Сommit
f31ade6151

+ 5 - 1
.cproject

@@ -9,6 +9,7 @@
 					<externalSetting>
 						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/tinyusb"/>
 						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/tinyusb/Debug"/>
+						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/tinyusb/lpc134x"/>
 						<entry flags="RESOLVED" kind="libraryFile" name="tinyusb"/>
 					</externalSetting>
 				</externalSettings>
@@ -35,13 +36,15 @@
 								<option id="com.crt.advproject.gcc.thumb.279363600" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
 								<option id="gnu.c.compiler.option.preprocessor.def.symbols.1841863300" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="__REDLIB__"/>
+									<listOptionValue builtIn="false" value="MCU=MCU_LPC134X"/>
 									<listOptionValue builtIn="false" value="DEBUG"/>
 									<listOptionValue builtIn="false" value="__CODE_RED"/>
 								</option>
 								<option id="gnu.c.compiler.option.misc.other.1344283117" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections" valueType="string"/>
 								<option id="com.crt.advproject.c.misc.dialect.995251213" name="C Dialect" superClass="com.crt.advproject.c.misc.dialect" value="com.crt.advproject.misc.dialect.gnu99" valueType="enumerated"/>
 								<option id="gnu.c.compiler.option.include.paths.1054321122" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CMSISv2p10_LPC13Uxx/inc}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CDL/CMSISv2p10_LPC13Uxx/lpcinc}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CDL/CMSISv2p10_LPC13Uxx/inc}&quot;"/>
 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/device_keyboard}&quot;"/>
 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/tinyusb}&quot;"/>
 								</option>
@@ -1237,6 +1240,7 @@
 								<option id="com.crt.advproject.gcc.thumb.191147189" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
 								<option id="gnu.c.compiler.option.preprocessor.def.symbols.302159449" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="__REDLIB__"/>
+									<listOptionValue builtIn="false" value="MCU=MCU_LPC43XX"/>
 									<listOptionValue builtIn="false" value="DEBUG"/>
 									<listOptionValue builtIn="false" value="__CODE_RED"/>
 								</option>

+ 86 - 0
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 <stdint.h>
+
+ /// 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_ */
+
+/** @} */

+ 64 - 0
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

+ 93 - 0
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<BOARD_MAX_LEDS; i++)
+	{
+	  scu_pinmux(leds[i].port, leds[i].pin, MD_PUP|MD_EZI|MD_ZI, FUNC0);
+	  GPIO_SetDir(leds[i].port, BIT(leds[i].pin), 1); // output
+	}
+}
+
+void board_leds(uint32_t mask, uint32_t state)
+{
+  uint8_t i;
+  for(i=0; i<BOARD_MAX_LEDS; i++)
+  {
+    if ( mask & BIT(i) )
+      (mask & state) ? GPIO_SetValue(leds[i].port, BIT(leds[i].pin)) : GPIO_ClearValue(leds[i].port, BIT(leds[i].pin)) ;
+  }
+}
+
+#endif

+ 9 - 7
demos/device/keyboard/.cproject

@@ -29,13 +29,17 @@
 								<option id="com.crt.advproject.gcc.thumb.697143257" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/>
 								<option id="gnu.c.compiler.option.preprocessor.def.symbols.371325215" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="__REDLIB__"/>
+									<listOptionValue builtIn="false" value="BOARD=BOARD_LPCXPRESSO1347"/>
+									<listOptionValue builtIn="false" value="MCU=MCU_LPC134X"/>
 									<listOptionValue builtIn="false" value="DEBUG"/>
 									<listOptionValue builtIn="false" value="__CODE_RED"/>
 								</option>
 								<option id="gnu.c.compiler.option.misc.other.204394496" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections" valueType="string"/>
 								<option id="gnu.c.compiler.option.include.paths.1207481236" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CMSISv2p10_LPC13Uxx/inc}&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LPC13Uxx_DriverLib/inc}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CDL/CMSISv2p10_LPC13Uxx/lpcinc}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/boards}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CDL/CMSISv2p10_LPC13Uxx/inc}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CDL/LPC13UxxLib/inc}&quot;"/>
 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/tinyusb/tinyusb}&quot;"/>
 								</option>
 								<option id="gnu.c.compiler.option.include.files.318820756" name="Include files (-include)" superClass="gnu.c.compiler.option.include.files"/>
@@ -59,13 +63,11 @@
 									<listOptionValue builtIn="false" value="--gc-sections"/>
 								</option>
 								<option id="gnu.c.link.option.paths.1465143173" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CMSISv2p10_LPC13Uxx/Debug}&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LPC13Uxx_DriverLib/Debug}&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/tinyusb/Debug}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CDL/LPC13Uxx}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/tinyusb/lpc134x}&quot;"/>
 								</option>
 								<option id="gnu.c.link.option.libs.447978281" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
-									<listOptionValue builtIn="false" value="CMSISv2p10_LPC13Uxx"/>
-									<listOptionValue builtIn="false" value="LPC13Uxx_DriverLib"/>
+									<listOptionValue builtIn="false" value="CDL"/>
 									<listOptionValue builtIn="false" value="tinyusb"/>
 								</option>
 								<option id="com.crt.advproject.link.gcc.hdrlib.1111642583" name="Use C library" superClass="com.crt.advproject.link.gcc.hdrlib" value="com.crt.advproject.gcc.link.hdrlib.codered.nohost" valueType="enumerated"/>

+ 7 - 2
demos/device/keyboard/.project

@@ -3,8 +3,6 @@
 	<name>device_keyboard</name>
 	<comment></comment>
 	<projects>
-		<project>CMSISv2p10_LPC13Uxx</project>
-		<project>LPC13Uxx_DriverLib</project>
 		<project>tinyusb</project>
 	</projects>
 	<buildSpec>
@@ -82,4 +80,11 @@
 		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
 		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
 	</natures>
+	<linkedResources>
+		<link>
+			<name>boards</name>
+			<type>2</type>
+			<locationURI>PARENT-2-PROJECT_LOC/boards</locationURI>
+		</link>
+	</linkedResources>
 </projectDescription>

+ 35 - 46
demos/device/keyboard/main.c

@@ -4,6 +4,7 @@
 
 #include <cr_section_macros.h>
 #include <NXP/crp.h>
+#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;

+ 1 - 1
tinyusb/common/common.h

@@ -62,7 +62,7 @@
 #include <stdio.h>
 
 #include "tusb_cfg.h"
-#include "arch/arch.h"
+#include "mcu/mcu.h"
 #include "hal/hal.h"
 #include "compiler/compiler.h"
 #include "errors.h"

+ 19 - 14
tinyusb/common/arch/arm_mx.h → 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 __cplusplus
+ extern "C" {
+#endif
+
+#define ATTR_PREPACKED  __packed
+#define ATTR_PACKED
 
-// #ifdef ARM_M3 ARM_M4 ARM_M0
+#ifdef __cplusplus
+ }
+#endif
 
-#define ENDIAN_LITTLE
-#define ALIGNMENT (4)
+#endif /* _TUSB_COMPILER_IAR_H_ */
 
-#endif /* _TUSB_ARM_MX_H_ */
 /** @} */

+ 18 - 16
tinyusb/common/arch/arch.h → 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_ */
 
 /** @} */
 

+ 7 - 9
tinyusb/common/arch/arch_lpc11xx.h → 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_ */
 
 /** @} */

+ 7 - 9
tinyusb/common/arch/arch_lpc134x.h → 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_ */
 
 /** @} */
 

+ 5 - 9
tinyusb/common/arch/arch_lpc43xx.h → 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_ */
 
 /// @}

+ 1 - 1
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()
 {

+ 1 - 1
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()
 {