From 4fa7f77ee2518cb7f187fb6caa85688836b385c4 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 6 May 2013 15:06:08 +0700 Subject: [PATCH] adding keil mcb4300 support - implement board_leds & board_uart routines --- demos/bsp/boards/board.h | 10 + .../boards/embedded_artists/board_ea4357.c | 19 +- .../boards/embedded_artists/board_ea4357.h | 4 - demos/bsp/boards/keil/board_mcb4300.c | 144 +++ demos/bsp/boards/keil/board_mcb4300.h | 68 + demos/bsp/boards/ngx/board_ngx4330.c | 27 +- demos/bsp/boards/ngx/board_ngx4330.h | 10 +- demos/host/host_os_none/.cproject | 1113 ++++++++++++++++- 8 files changed, 1360 insertions(+), 35 deletions(-) create mode 100644 demos/bsp/boards/keil/board_mcb4300.c create mode 100644 demos/bsp/boards/keil/board_mcb4300.h diff --git a/demos/bsp/boards/board.h b/demos/bsp/boards/board.h index 3e5153e2d..68b491591 100644 --- a/demos/bsp/boards/board.h +++ b/demos/bsp/boards/board.h @@ -59,11 +59,19 @@ #include #include "tusb.h" +//--------------------------------------------------------------------+ +// BOARD DEFINE +//--------------------------------------------------------------------+ #define BOARD_AT86RF2XX 1 #define BOARD_LPCXPRESSO1347 2 + #define BOARD_NGX4330 3 #define BOARD_EA4357 4 +#define BOARD_MCB4300 5 +//--------------------------------------------------------------------+ +// PRINTF TARGET DEFINE +//--------------------------------------------------------------------+ #define PRINTF_TARGET_DEBUG_CONSOLE 1 // IDE semihosting console #define PRINTF_TARGET_UART 2 #define PRINTF_TARGET_SWO 3 // aka SWV, ITM @@ -81,6 +89,8 @@ #include "board_at86rf2xx.h" #elif BOARD == BOARD_EA4357 #include "embedded_artists/board_ea4357.h" +#elif BOARD == BOARD_MCB4300 + #include "keil/board_mcb4300.h" #else #error BOARD is not defined or supported yet #endif diff --git a/demos/bsp/boards/embedded_artists/board_ea4357.c b/demos/bsp/boards/embedded_artists/board_ea4357.c index d0abc9d07..361d3a720 100644 --- a/demos/bsp/boards/embedded_artists/board_ea4357.c +++ b/demos/bsp/boards/embedded_artists/board_ea4357.c @@ -40,15 +40,16 @@ #if BOARD == BOARD_EA4357 -#include "common/assertion.h" // TODO there is hal_debugger_ in assertion -#define UART_PORT LPC_USART0 +#define BOARD_UART_PORT LPC_USART0 +#define BOARD_UART_PIN_PORT 0x0f +#define BOARD_UART_PIN_TX 10 // PF.10 : UART0_TXD +#define BOARD_UART_PIN_RX 11 // PF.11 : UART0_RXD void board_init(void) { SystemInit(); CGU_Init(); - SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE) / CFG_TICKS_PER_SECOND); // 1 msec tick timer // USB0 Power: EA4357 channel B U20 GPIO26 active low (base board), P2_3 on LPC4357 @@ -68,16 +69,16 @@ void board_init(void) #if CFG_UART_ENABLE //------------- UART init -------------// - scu_pinmux(0xF ,10 , MD_PDN, FUNC1); // PF.10 : UART0_TXD - scu_pinmux(0xF ,11 , MD_PLN|MD_EZI|MD_ZI, FUNC1); // PF.11 : UART0_RXD + scu_pinmux(BOARD_UART_PIN_PORT, BOARD_UART_PIN_TX, MD_PDN , FUNC1); + scu_pinmux(BOARD_UART_PIN_PORT, BOARD_UART_PIN_RX, MD_PLN|MD_EZI|MD_ZI, FUNC1); UART_CFG_Type UARTConfigStruct; UART_ConfigStructInit(&UARTConfigStruct); UARTConfigStruct.Baud_rate = CFG_UART_BAUDRATE; UARTConfigStruct.Clock_Speed = 0; - UART_Init(UART_PORT, &UARTConfigStruct); - UART_TxCmd(UART_PORT, ENABLE); // Enable UART Transmit + UART_Init(BOARD_UART_PORT, &UARTConfigStruct); + UART_TxCmd(BOARD_UART_PORT, ENABLE); // Enable UART Transmit #endif #if CFG_PRINTF_TARGET == PRINTF_TARGET_SWO @@ -98,12 +99,12 @@ void board_leds(uint32_t on_mask, uint32_t off_mask) #if CFG_UART_ENABLE uint32_t board_uart_send(uint8_t *buffer, uint32_t length) { - return UART_Send(UART_PORT, buffer, length, BLOCKING); + return UART_Send(BOARD_UART_PORT, buffer, length, BLOCKING); } uint32_t board_uart_recv(uint8_t *buffer, uint32_t length) { - return UART_Receive(UART_PORT, buffer, length, BLOCKING); + return UART_Receive(BOARD_UART_PORT, buffer, length, BLOCKING); } #endif diff --git a/demos/bsp/boards/embedded_artists/board_ea4357.h b/demos/bsp/boards/embedded_artists/board_ea4357.h index 91232691c..586291406 100644 --- a/demos/bsp/boards/embedded_artists/board_ea4357.h +++ b/demos/bsp/boards/embedded_artists/board_ea4357.h @@ -65,10 +65,6 @@ #include "oem_base_board/pca9532.h" // LEDs -#define CFG_LED_NUMBER 0 -#define CFG_LED_ON (1) -#define CFG_LED_OFF (0) - #define CFG_PRINTF_TARGET PRINTF_TARGET_UART #ifdef __cplusplus diff --git a/demos/bsp/boards/keil/board_mcb4300.c b/demos/bsp/boards/keil/board_mcb4300.c new file mode 100644 index 000000000..7bfcb5cb9 --- /dev/null +++ b/demos/bsp/boards/keil/board_mcb4300.c @@ -0,0 +1,144 @@ +/**************************************************************************/ +/*! + @file board_mcb4300.c + @author hathach (tinyusb.org) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2013, hathach (tinyusb.org) + 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. Neither the name of the copyright holders 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 ''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 HOLDER 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 tinyusb stack. +*/ +/**************************************************************************/ + +#include "../board.h" + +#if BOARD == BOARD_MCB4300 + +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ +#define BOARD_MAX_LEDS 8 + +#define BOARD_UART_PORT LPC_USART0 +#define BOARD_UART_PIN_PORT 2 +#define BOARD_UART_PIN_TX 0 +#define BOARD_UART_PIN_RX 1 + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +static const uint8_t ledports[] = {6, 6, 6, 6, 6, 4, 4, 4}; +static const uint8_t ledbits[] = {24, 25, 26, 27, 28, 12, 13, 14}; + +const static struct { + uint8_t port; + uint8_t pin; +}leds[BOARD_MAX_LEDS] = { + {6, 24}, {6, 25}, {6, 26}, {6, 27}, + {4, 28}, {4, 12}, {4, 13}, {4, 14}}; + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ + +//--------------------------------------------------------------------+ +// IMPLEMENTATION +//--------------------------------------------------------------------+ +void board_init(void) +{ + SystemInit(); + CGU_Init(); + SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE) / CFG_TICKS_PER_SECOND); // 1 msec tick timer + + //------------- USB Bus power HOST ONLY-------------// + //scu_pinmux(0x6, 3, MD_PUP | MD_EZI, FUNC1); // P6_3 USB0_PWR_EN, USB0 VBus function + // Keil VBUS0 on schematic is F1 + + + // TODO USB1 P2_5 + scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // USB1_VBUS monitor presence, must be high for bus reset occur + //scu_pinmux(0x9, 5, MD_PUP | MD_EZI, FUNC2); // P9_5 USB1_PWR_EN, USB1 VBus function + // Keil VBUS1 on schematics is P2_5 + + //------------- LEDs init, J21 must be installed -------------// + for(uint32_t i=0; i no mux + GPIO_SetDir(leds[i].port, BIT_(leds[i].pin), 1); // output + } + + #if CFG_UART_ENABLE + //------------- UART init -------------// + scu_pinmux(BOARD_UART_PIN_PORT, BOARD_UART_PIN_TX, MD_PDN , FUNC1); + scu_pinmux(BOARD_UART_PIN_PORT, BOARD_UART_PIN_RX, MD_PLN|MD_EZI|MD_ZI, FUNC1); + + UART_CFG_Type UARTConfigStruct; + UART_ConfigStructInit(&UARTConfigStruct); + UARTConfigStruct.Baud_rate = CFG_UART_BAUDRATE; + UARTConfigStruct.Clock_Speed = 0; + + UART_Init(BOARD_UART_PORT, &UARTConfigStruct); + UART_TxCmd(BOARD_UART_PORT, ENABLE); // Enable UART Transmit + #endif + +} + +//--------------------------------------------------------------------+ +// LEDS +//--------------------------------------------------------------------+ +void board_leds(uint32_t on_mask, uint32_t off_mask) +{ + for (uint32_t i=0; i - + @@ -2222,6 +2222,1117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +