From f31ade6151089a0d6d99b73c23a7a6e1a538c268 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 4 Dec 2012 18:18:29 +0700 Subject: [PATCH] add board abstract layer rename arch to mcu --- .cproject | 6 +- demos/boards/board.h | 86 +++++++++++++++++ demos/boards/board_lpcexpresso1347.c | 64 +++++++++++++ demos/boards/board_ngx4330_explorer.c | 93 +++++++++++++++++++ demos/device/keyboard/.cproject | 16 ++-- demos/device/keyboard/.project | 9 +- demos/device/keyboard/main.c | 81 +++++++--------- tinyusb/common/common.h | 2 +- .../arm_mx.h => compiler/compiler_iar.h} | 33 ++++--- tinyusb/common/{arch/arch.h => mcu/mcu.h} | 34 +++---- .../arch_lpc11xx.h => mcu/mcu_lpc11xx.h} | 16 ++-- .../arch_lpc134x.h => mcu/mcu_lpc134x.h} | 16 ++-- .../arch_lpc43xx.h => mcu/mcu_lpc43xx.h} | 14 +-- tinyusb/hal/hal_lpc134x.c | 2 +- tinyusb/hal/hal_lpc43xx.c | 2 +- 15 files changed, 358 insertions(+), 116 deletions(-) create mode 100644 demos/boards/board.h create mode 100644 demos/boards/board_lpcexpresso1347.c create mode 100644 demos/boards/board_ngx4330_explorer.c rename tinyusb/common/{arch/arm_mx.h => compiler/compiler_iar.h} (80%) rename tinyusb/common/{arch/arch.h => mcu/mcu.h} (81%) rename tinyusb/common/{arch/arch_lpc11xx.h => mcu/mcu_lpc11xx.h} (92%) rename tinyusb/common/{arch/arch_lpc134x.h => mcu/mcu_lpc134x.h} (90%) rename tinyusb/common/{arch/arch_lpc43xx.h => mcu/mcu_lpc43xx.h} (90%) 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