somehow could not get printf work with IAR both SWD & uart on NGX4330
This commit is contained in:
		| @@ -132,6 +132,10 @@ uint8_t  board_uart_getchar(void) | ||||
| { | ||||
|   return UART_ReceiveByte(BOARD_UART_PORT); | ||||
| } | ||||
| void board_uart_putchar(uint8_t c) | ||||
| { | ||||
|   UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -1,128 +1,128 @@ | ||||
| /**************************************************************************/ | ||||
| /*! | ||||
|     @file     board_ngx4330.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_NGX4330 | ||||
|  | ||||
| #define BOARD_UART_PORT           LPC_USART0 | ||||
|  | ||||
| #define BOARD_MAX_LEDS  2 | ||||
| const static struct { | ||||
|   uint8_t mux_port; | ||||
|   uint8_t mux_pin; | ||||
|  | ||||
|   uint8_t gpio_port; | ||||
|   uint8_t gpio_pin; | ||||
| }leds[BOARD_MAX_LEDS] = { {2, 11, 1, 11}, {2, 12, 1,12} }; | ||||
|  | ||||
| void board_init(void) | ||||
| { | ||||
|   CGU_Init(); | ||||
|   SysTick_Config( CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/CFG_TICKS_PER_SECOND );	/* 1 ms Timer */ | ||||
|  | ||||
|   //------------- USB Bus power HOST ONLY-------------// | ||||
|   scu_pinmux(0x1, 7, MD_PUP | MD_EZI, FUNC4);	// P1_7 USB0_PWR_EN, USB0 VBus function Xplorer | ||||
|  | ||||
|   scu_pinmux(0x2, 6, MD_PUP | MD_EZI, FUNC4); // P2_6 is configured as GPIO5[6] for USB1_PWR_EN | ||||
|   GPIO_SetDir   (5, BIT_(6), 1);              // GPIO5[6] is output | ||||
|   GPIO_SetValue (5, BIT_(6));                 // GPIO5[6] output high | ||||
|  | ||||
|   //------------- LED -------------// | ||||
|   for (uint8_t i=0; i<BOARD_MAX_LEDS; i++) | ||||
|   { | ||||
|     scu_pinmux(leds[i].mux_port, leds[i].mux_pin, MD_PUP|MD_EZI|MD_ZI, FUNC0); | ||||
|     GPIO_SetDir(leds[i].gpio_port, BIT_(leds[i].gpio_pin), 1); // output | ||||
|   } | ||||
|  | ||||
| #if CFG_UART_ENABLE | ||||
|   //------------- UART init -------------// | ||||
|   UART_CFG_Type UARTConfigStruct; | ||||
|  | ||||
|   scu_pinmux(0x6 ,4, MD_PDN|MD_EZI, FUNC2); 	// UART0_TXD | ||||
|   scu_pinmux(0x6 ,5, MD_PDN|MD_EZI, FUNC2); 	// UART0_RXD | ||||
|  | ||||
|   UART_ConfigStructInit(&UARTConfigStruct);                   // default: baud = 9600, 8 bit data, 1 stop bit, no parity | ||||
|   UARTConfigStruct.Baud_rate = CFG_UART_BAUDRATE;             // Re-configure baudrate | ||||
|  | ||||
|   UART_Init((LPC_USARTn_Type*) LPC_USART0, &UARTConfigStruct); // Initialize UART port | ||||
|   UART_TxCmd((LPC_USARTn_Type*) LPC_USART0, ENABLE);           // Enable UART | ||||
| #endif | ||||
|  | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // LEDS | ||||
| //--------------------------------------------------------------------+ | ||||
| void board_leds(uint32_t on_mask, uint32_t off_mask) | ||||
| { | ||||
|   for (uint32_t i=0; i<BOARD_MAX_LEDS; i++) | ||||
|   { | ||||
|     if ( on_mask & BIT_(i)) | ||||
|     { | ||||
|       GPIO_SetValue(leds[i].gpio_port, BIT_(leds[i].gpio_pin)); | ||||
|     }else if ( off_mask & BIT_(i)) // on_mask take precedence over off_mask | ||||
|     { | ||||
|       GPIO_ClearValue(leds[i].gpio_port, BIT_(leds[i].gpio_pin)); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // UART | ||||
| //--------------------------------------------------------------------+ | ||||
| uint32_t board_uart_send(uint8_t *p_buffer, uint32_t length) | ||||
| { | ||||
|   return UART_Send(BOARD_UART_PORT, p_buffer, length, BLOCKING); | ||||
| } | ||||
|  | ||||
| uint32_t board_uart_recv(uint8_t *p_buffer, uint32_t length) | ||||
| { | ||||
|   return UART_Receive(BOARD_UART_PORT, p_buffer, length, BLOCKING); | ||||
| } | ||||
|  | ||||
| uint8_t  board_uart_getchar(void) | ||||
| { | ||||
|   return UART_ReceiveByte(BOARD_UART_PORT); | ||||
| } | ||||
|  | ||||
| //void board_uart_putchar(uint8_t c) | ||||
| //{ | ||||
| // | ||||
| //} | ||||
| #endif | ||||
| /**************************************************************************/ | ||||
| /*! | ||||
|     @file     board_ngx4330.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_NGX4330 | ||||
|  | ||||
| #define BOARD_UART_PORT           LPC_USART0 | ||||
|  | ||||
| #define BOARD_MAX_LEDS  2 | ||||
| const static struct { | ||||
|   uint8_t mux_port; | ||||
|   uint8_t mux_pin; | ||||
|  | ||||
|   uint8_t gpio_port; | ||||
|   uint8_t gpio_pin; | ||||
| }leds[BOARD_MAX_LEDS] = { {2, 11, 1, 11}, {2, 12, 1,12} }; | ||||
|  | ||||
| void board_init(void) | ||||
| { | ||||
|   CGU_Init(); | ||||
|   SysTick_Config( CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/CFG_TICKS_PER_SECOND );	/* 1 ms Timer */ | ||||
|  | ||||
|   //------------- USB Bus power HOST ONLY-------------// | ||||
|   scu_pinmux(0x1, 7, MD_PUP | MD_EZI, FUNC4);	// P1_7 USB0_PWR_EN, USB0 VBus function Xplorer | ||||
|  | ||||
|   scu_pinmux(0x2, 6, MD_PUP | MD_EZI, FUNC4); // P2_6 is configured as GPIO5[6] for USB1_PWR_EN | ||||
|   GPIO_SetDir   (5, BIT_(6), 1);              // GPIO5[6] is output | ||||
|   GPIO_SetValue (5, BIT_(6));                 // GPIO5[6] output high | ||||
|  | ||||
|   //------------- LED -------------// | ||||
|   for (uint8_t i=0; i<BOARD_MAX_LEDS; i++) | ||||
|   { | ||||
|     scu_pinmux(leds[i].mux_port, leds[i].mux_pin, MD_PUP|MD_EZI|MD_ZI, FUNC0); | ||||
|     GPIO_SetDir(leds[i].gpio_port, BIT_(leds[i].gpio_pin), 1); // output | ||||
|   } | ||||
|  | ||||
| #if CFG_UART_ENABLE | ||||
|   //------------- UART init -------------// | ||||
|   UART_CFG_Type UARTConfigStruct; | ||||
|  | ||||
|   scu_pinmux(0x6 ,4, MD_PDN|MD_EZI, FUNC2); 	// UART0_TXD | ||||
|   scu_pinmux(0x6 ,5, MD_PDN|MD_EZI, FUNC2); 	// UART0_RXD | ||||
|  | ||||
|   UART_ConfigStructInit(&UARTConfigStruct);                   // default: baud = 9600, 8 bit data, 1 stop bit, no parity | ||||
|   UARTConfigStruct.Baud_rate = CFG_UART_BAUDRATE;             // Re-configure baudrate | ||||
|  | ||||
|   UART_Init((LPC_USARTn_Type*) LPC_USART0, &UARTConfigStruct); // Initialize UART port | ||||
|   UART_TxCmd((LPC_USARTn_Type*) LPC_USART0, ENABLE);           // Enable UART | ||||
| #endif | ||||
|  | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // LEDS | ||||
| //--------------------------------------------------------------------+ | ||||
| void board_leds(uint32_t on_mask, uint32_t off_mask) | ||||
| { | ||||
|   for (uint32_t i=0; i<BOARD_MAX_LEDS; i++) | ||||
|   { | ||||
|     if ( on_mask & BIT_(i)) | ||||
|     { | ||||
|       GPIO_SetValue(leds[i].gpio_port, BIT_(leds[i].gpio_pin)); | ||||
|     }else if ( off_mask & BIT_(i)) // on_mask take precedence over off_mask | ||||
|     { | ||||
|       GPIO_ClearValue(leds[i].gpio_port, BIT_(leds[i].gpio_pin)); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // UART | ||||
| //--------------------------------------------------------------------+ | ||||
| uint32_t board_uart_send(uint8_t *p_buffer, uint32_t length) | ||||
| { | ||||
|   return UART_Send(BOARD_UART_PORT, p_buffer, length, BLOCKING); | ||||
| } | ||||
|  | ||||
| uint32_t board_uart_recv(uint8_t *p_buffer, uint32_t length) | ||||
| { | ||||
|   return UART_Receive(BOARD_UART_PORT, p_buffer, length, BLOCKING); | ||||
| } | ||||
|  | ||||
| uint8_t  board_uart_getchar(void) | ||||
| { | ||||
|   return UART_ReceiveByte(BOARD_UART_PORT); | ||||
| } | ||||
|  | ||||
| void board_uart_putchar(uint8_t c) | ||||
| { | ||||
|   UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING); | ||||
| } | ||||
| #endif | ||||
|   | ||||
| @@ -1,190 +1,187 @@ | ||||
| /**************************************************************************/ | ||||
| /*! | ||||
|     @file     printf_retarget.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 CFG_PRINTF_TARGET != PRINTF_TARGET_SEMIHOST | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
|   #define retarget_getchar()  board_uart_getchar() | ||||
| #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO | ||||
| 	#define retarget_getchar()  ITM_ReceiveChar() | ||||
| #else | ||||
| 	#error Target is not implemented yet | ||||
| #endif | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // LPCXPRESSO / RED SUITE | ||||
| //--------------------------------------------------------------------+ | ||||
| #if defined __CODE_RED | ||||
| // Called by bottom level of printf routine within RedLib C library to write | ||||
| // a character. With the default semihosting stub, this would write the character | ||||
| // to the debugger console window . But this version writes | ||||
| // the character to the UART. | ||||
| int __sys_write (int iFileHandle, char *pcBuffer, int iLength) | ||||
| { | ||||
|   (void) iFileHandle; | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
|   // following code to make \n --> \r\n | ||||
|   int length = iLength; | ||||
|   char* p_newline_pos = memchr(pcBuffer, '\n', length); | ||||
|  | ||||
|   while(p_newline_pos != NULL) | ||||
|   { | ||||
|     uint32_t chunk_len = p_newline_pos - pcBuffer; | ||||
|  | ||||
|     board_uart_send((uint8_t*)pcBuffer, chunk_len); | ||||
|     board_uart_send(&"\r\n", 2); | ||||
|  | ||||
|     pcBuffer += (chunk_len + 1); | ||||
|     length   -= (chunk_len + 1); | ||||
|     p_newline_pos = memchr(pcBuffer, '\n', length); | ||||
|   } | ||||
|  | ||||
|    board_uart_send((uint8_t*)pcBuffer, length); | ||||
|  | ||||
|   return iLength; | ||||
|  | ||||
| #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO | ||||
|   #error author does not know how to retarget SWO with lpcxpresso/red-suite | ||||
| #endif | ||||
|  | ||||
| } | ||||
|  | ||||
| // Called by bottom level of scanf routine within RedLib C library to read | ||||
| // a character. With the default semihosting stub, this would read the character | ||||
| // from the debugger console window (which acts as stdin). But this version reads | ||||
| // the character from the UART. | ||||
| int __sys_readc (void) | ||||
| { | ||||
| 	return (int) retarget_getchar(); | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // KEIL | ||||
| //--------------------------------------------------------------------+ | ||||
| #elif defined __CC_ARM // keil | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
|   #define retarget_putc(c)    board_uart_send( (uint8_t*) &c, 1); | ||||
| #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO | ||||
|   volatile int32_t ITM_RxBuffer; | ||||
| 	#define retarget_putc(c)    ITM_SendChar(c) | ||||
| #endif | ||||
|  | ||||
| struct __FILE { | ||||
|   uint32_t handle; | ||||
| }; | ||||
|  | ||||
| int fgetc(FILE *f) | ||||
| { | ||||
|   return retarget_getchar(); | ||||
| } | ||||
|  | ||||
| int fputc(int ch, FILE *f) | ||||
| { | ||||
|   if (ch == '\n') | ||||
|   { | ||||
|     uint8_t carry = '\r'; | ||||
|     retarget_putc(carry); | ||||
|   } | ||||
|  | ||||
|   retarget_putc(ch); | ||||
|    | ||||
|   return ch; | ||||
| } | ||||
|  | ||||
| void _ttywrch(int ch) | ||||
| { | ||||
|   if ( ch == '\n' ) | ||||
|   { | ||||
|     uint8_t carry = '\r'; | ||||
|     retarget_putc(carry); | ||||
|   } | ||||
|  | ||||
|   retarget_putc(ch); | ||||
| } | ||||
|  | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // IAR | ||||
| //--------------------------------------------------------------------+ | ||||
| #elif defined __ICCARM__ | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
| #include <stddef.h> | ||||
|  | ||||
| size_t __write(int handle, const unsigned char *buf, size_t bufSize) | ||||
| { | ||||
|   /* Check for the command to flush all handles */ | ||||
|   if (handle == -1) return 0; | ||||
|  | ||||
|   /* Check for stdout and stderr (only necessary if FILE descriptors are enabled.) */ | ||||
|   if (handle != 1 && handle != 2) return -1; | ||||
|  | ||||
|   for (size_t i=0; i<bufSize; i++) | ||||
|   { | ||||
|     if (buf[i] == '\n') board_uart_putchar('\r'); | ||||
|     board_uart_putchar( buf[i] ); | ||||
|   } | ||||
|  | ||||
|   return bufSize; | ||||
| } | ||||
|  | ||||
| size_t __read(int handle, unsigned char *buf, size_t bufSize) | ||||
| { | ||||
|   /* Check for stdin (only necessary if FILE descriptors are enabled) */ | ||||
|   if (handle != 0) return -1; | ||||
|  | ||||
|   size_t i; | ||||
|   for (i=0; i<bufSize; i++) | ||||
|   { | ||||
|     uint8_t ch = board_uart_getchar(); | ||||
|     if (ch == 0) break; | ||||
|     buf[i] = ch; | ||||
|   } | ||||
|  | ||||
|   return i; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif // CFG_PRINTF_TARGET != PRINTF_TARGET_SEMIHOST | ||||
| /**************************************************************************/ | ||||
| /*! | ||||
|     @file     printf_retarget.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 CFG_PRINTF_TARGET != PRINTF_TARGET_SEMIHOST | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
|   #define retarget_getchar()  board_uart_getchar() | ||||
| #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO | ||||
| 	#define retarget_getchar()  ITM_ReceiveChar() | ||||
| #else | ||||
| 	#error Target is not implemented yet | ||||
| #endif | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // LPCXPRESSO / RED SUITE | ||||
| //--------------------------------------------------------------------+ | ||||
| #if defined __CODE_RED | ||||
| // Called by bottom level of printf routine within RedLib C library to write | ||||
| // a character. With the default semihosting stub, this would write the character | ||||
| // to the debugger console window . But this version writes | ||||
| // the character to the UART. | ||||
| int __sys_write (int iFileHandle, char *buf, int length) | ||||
| { | ||||
|   (void) iFileHandle; | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
|   int ret = length; | ||||
|   for (int i=0; i<length; i++) | ||||
|   { | ||||
|     if (buf[i] == '\n') | ||||
|     { | ||||
|       board_uart_putchar('\r'); | ||||
|       ret++; | ||||
|     } | ||||
|     board_uart_putchar( buf[i] ); | ||||
|   } | ||||
|   return ret; | ||||
| #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO | ||||
|   #error author does not know how to retarget SWO with lpcxpresso/red-suite | ||||
| #endif | ||||
|  | ||||
| } | ||||
|  | ||||
| // Called by bottom level of scanf routine within RedLib C library to read | ||||
| // a character. With the default semihosting stub, this would read the character | ||||
| // from the debugger console window (which acts as stdin). But this version reads | ||||
| // the character from the UART. | ||||
| int __sys_readc (void) | ||||
| { | ||||
| 	return (int) retarget_getchar(); | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // KEIL | ||||
| //--------------------------------------------------------------------+ | ||||
| #elif defined __CC_ARM // keil | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
|   #define retarget_putc(c)    board_uart_send( (uint8_t*) &c, 1); | ||||
| #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO | ||||
|   volatile int32_t ITM_RxBuffer; | ||||
| 	#define retarget_putc(c)    ITM_SendChar(c) | ||||
| #endif | ||||
|  | ||||
| struct __FILE { | ||||
|   uint32_t handle; | ||||
| }; | ||||
|  | ||||
| int fgetc(FILE *f) | ||||
| { | ||||
|   return retarget_getchar(); | ||||
| } | ||||
|  | ||||
| int fputc(int ch, FILE *f) | ||||
| { | ||||
|   if (ch == '\n') | ||||
|   { | ||||
|     uint8_t carry = '\r'; | ||||
|     retarget_putc(carry); | ||||
|   } | ||||
|  | ||||
|   retarget_putc(ch); | ||||
|  | ||||
|   return ch; | ||||
| } | ||||
|  | ||||
| void _ttywrch(int ch) | ||||
| { | ||||
|   if ( ch == '\n' ) | ||||
|   { | ||||
|     uint8_t carry = '\r'; | ||||
|     retarget_putc(carry); | ||||
|   } | ||||
|  | ||||
|   retarget_putc(ch); | ||||
| } | ||||
|  | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // IAR | ||||
| //--------------------------------------------------------------------+ | ||||
| #elif 0 // defined __ICCARM__ TODO could not able to retarget to UART with IAR | ||||
|  | ||||
| #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART | ||||
| #include <stddef.h> | ||||
|  | ||||
| size_t __write(int handle, const unsigned char *buf, size_t length) | ||||
| { | ||||
|   /* Check for the command to flush all handles */ | ||||
|   if (handle == -1) return 0; | ||||
|  | ||||
|   /* Check for stdout and stderr (only necessary if FILE descriptors are enabled.) */ | ||||
|   if (handle != 1 && handle != 2) return -1; | ||||
|  | ||||
|   size_t ret = length; | ||||
|   for (size_t i=0; i<length; i++) | ||||
|   { | ||||
|     if (buf[i] == '\n') | ||||
|     { | ||||
|       board_uart_putchar('\r'); | ||||
|       ret++; | ||||
|     } | ||||
|     board_uart_putchar( buf[i] ); | ||||
|   } | ||||
|  | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| size_t __read(int handle, unsigned char *buf, size_t bufSize) | ||||
| { | ||||
|   /* Check for stdin (only necessary if FILE descriptors are enabled) */ | ||||
|   if (handle != 0) return -1; | ||||
|  | ||||
|   /*size_t i; | ||||
|   for (i=0; i<bufSize; i++) | ||||
|   { | ||||
|     uint8_t ch = board_uart_getchar(); | ||||
|     if (ch == 0) break; | ||||
|     buf[i] = ch; | ||||
|   } | ||||
|  | ||||
|   return i; */ | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif // CFG_PRINTF_TARGET != PRINTF_TARGET_SEMIHOST | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1848,6 +1848,929 @@ | ||||
|       <data/> | ||||
|     </settings> | ||||
|   </configuration> | ||||
|   <configuration> | ||||
|     <name>Board NGX4330</name> | ||||
|     <toolchain> | ||||
|       <name>ARM</name> | ||||
|     </toolchain> | ||||
|     <debug>1</debug> | ||||
|     <settings> | ||||
|       <name>General</name> | ||||
|       <archiveVersion>3</archiveVersion> | ||||
|       <data> | ||||
|         <version>21</version> | ||||
|         <wantNonLocal>1</wantNonLocal> | ||||
|         <debug>1</debug> | ||||
|         <option> | ||||
|           <name>ExePath</name> | ||||
|           <state>Board NGX4330\Exe</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>ObjPath</name> | ||||
|           <state>Board NGX4330\Obj</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>ListPath</name> | ||||
|           <state>Board NGX4330\List</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>Variant</name> | ||||
|           <version>20</version> | ||||
|           <state>39</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GEndianMode</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>Input variant</name> | ||||
|           <version>3</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>Input description</name> | ||||
|           <state>Automatic choice of formatter.</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>Output variant</name> | ||||
|           <version>2</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>Output description</name> | ||||
|           <state>Automatic choice of formatter.</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GOutputBinary</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>FPU</name> | ||||
|           <version>2</version> | ||||
|           <state>5</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OGCoreOrChip</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GRuntimeLibSelect</name> | ||||
|           <version>0</version> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GRuntimeLibSelectSlave</name> | ||||
|           <version>0</version> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>RTDescription</name> | ||||
|           <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OGProductVersion</name> | ||||
|           <state>6.50.5.4846</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OGLastSavedByProductVersion</name> | ||||
|           <state>6.50.5.4846</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GeneralEnableMisra</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GeneralMisraVerbose</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OGChipSelectEditMenu</name> | ||||
|           <state>LPC4330_M4	NXP LPC4330_M4</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GenLowLevelInterface</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GEndianModeBE</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OGBufferedTerminalOutput</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GenStdoutInterface</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GeneralMisraRules98</name> | ||||
|           <version>0</version> | ||||
|           <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GeneralMisraVer</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GeneralMisraRules04</name> | ||||
|           <version>0</version> | ||||
|           <state>111101010010111111111000110011111101111111111111110110010111101111010101111111111111111111111111101111111011110001111011111011111111111111111</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>RTConfigPath2</name> | ||||
|           <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GFPUCoreSlave</name> | ||||
|           <version>20</version> | ||||
|           <state>39</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>GBECoreSlave</name> | ||||
|           <version>20</version> | ||||
|           <state>39</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OGUseCmsis</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OGUseCmsisDspLib</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>ICCARM</name> | ||||
|       <archiveVersion>2</archiveVersion> | ||||
|       <data> | ||||
|         <version>28</version> | ||||
|         <wantNonLocal>1</wantNonLocal> | ||||
|         <debug>1</debug> | ||||
|         <option> | ||||
|           <name>CCDefines</name> | ||||
|           <state>CORE_M4</state> | ||||
|           <state>TUSB_CFG_MCU=MCU_LPC43XX</state> | ||||
|           <state>BOARD=BOARD_NGX4330</state> | ||||
|           <state>TUSB_CFG_OS=TUSB_OS_NONE</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCPreprocFile</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCPreprocComments</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCPreprocLine</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCListCFile</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCListCMnemonics</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCListCMessages</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCListAssFile</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCListAssSource</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCEnableRemarks</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCDiagSuppress</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCDiagRemark</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCDiagWarning</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCDiagError</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCObjPrefix</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCAllowList</name> | ||||
|           <version>1</version> | ||||
|           <state>0000000</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCDebugInfo</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IEndianMode</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IProcessor</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IExtraOptionsCheck</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IExtraOptions</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCLangConformance</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCSignedPlainChar</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCRequirePrototypes</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCMultibyteSupport</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCDiagWarnAreErr</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCCompilerRuntimeInfo</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IFpuProcessor</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OutputFile</name> | ||||
|           <state>$FILE_BNAME$.o</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCLibConfigHeader</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>PreInclude</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CompilerMisraOverride</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCIncludePath2</name> | ||||
|           <state>$PROJ_DIR$\..\src</state> | ||||
|           <state>$PROJ_DIR$\..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\inc</state> | ||||
|           <state>$PROJ_DIR$\..\..\bsp</state> | ||||
|           <state>$PROJ_DIR$\..\..\..\tinyusb</state> | ||||
|           <state>$PROJ_DIR$\..\..\..\vendor\fatfs</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCStdIncCheck</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCCodeSection</name> | ||||
|           <state>.text</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IInterwork2</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IProcessorMode2</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCOptLevel</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCOptStrategy</name> | ||||
|           <version>0</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCOptLevelSlave</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CompilerMisraRules98</name> | ||||
|           <version>0</version> | ||||
|           <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CompilerMisraRules04</name> | ||||
|           <version>0</version> | ||||
|           <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCPosIndRopi</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCPosIndRwpi</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCPosIndNoDynInit</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccLang</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccCDialect</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccAllowVLA</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccCppDialect</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccExceptions</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccRTTI</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccStaticDestr</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccCppInlineSemantics</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccCmsis</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IccFloatSemantics</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CCOptimizationNoSizeConstraints</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>AARM</name> | ||||
|       <archiveVersion>2</archiveVersion> | ||||
|       <data> | ||||
|         <version>8</version> | ||||
|         <wantNonLocal>1</wantNonLocal> | ||||
|         <debug>1</debug> | ||||
|         <option> | ||||
|           <name>AObjPrefix</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AEndian</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>ACaseSensitivity</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>MacroChars</name> | ||||
|           <version>0</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AWarnEnable</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AWarnWhat</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AWarnOne</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AWarnRange1</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AWarnRange2</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>ADebug</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AltRegisterNames</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>ADefines</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AList</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AListHeader</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AListing</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>Includes</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>MacDefs</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>MacExps</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>MacExec</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OnlyAssed</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>MultiLine</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>PageLengthCheck</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>PageLength</name> | ||||
|           <state>80</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>TabSpacing</name> | ||||
|           <state>8</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AXRef</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AXRefDefines</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AXRefInternal</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AXRefDual</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AProcessor</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AFpuProcessor</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AOutputFile</name> | ||||
|           <state>$FILE_BNAME$.o</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AMultibyteSupport</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>ALimitErrorsCheck</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>ALimitErrorsEdit</name> | ||||
|           <state>100</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AIgnoreStdInclude</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AUserIncludes</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AExtraOptionsCheckV2</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>AExtraOptionsV2</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>OBJCOPY</name> | ||||
|       <archiveVersion>0</archiveVersion> | ||||
|       <data> | ||||
|         <version>1</version> | ||||
|         <wantNonLocal>1</wantNonLocal> | ||||
|         <debug>1</debug> | ||||
|         <option> | ||||
|           <name>OOCOutputFormat</name> | ||||
|           <version>2</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OCOutputOverride</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OOCOutputFile</name> | ||||
|           <state>host_os_none.srec</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OOCCommandLineProducer</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>OOCObjCopyEnable</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>CUSTOM</name> | ||||
|       <archiveVersion>3</archiveVersion> | ||||
|       <data> | ||||
|         <extensions></extensions> | ||||
|         <cmdline></cmdline> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>BICOMP</name> | ||||
|       <archiveVersion>0</archiveVersion> | ||||
|       <data/> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>BUILDACTION</name> | ||||
|       <archiveVersion>1</archiveVersion> | ||||
|       <data> | ||||
|         <prebuild></prebuild> | ||||
|         <postbuild></postbuild> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>ILINK</name> | ||||
|       <archiveVersion>0</archiveVersion> | ||||
|       <data> | ||||
|         <version>15</version> | ||||
|         <wantNonLocal>1</wantNonLocal> | ||||
|         <debug>1</debug> | ||||
|         <option> | ||||
|           <name>IlinkLibIOConfig</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>XLinkMisraHandler</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkInputFileSlave</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOutputFile</name> | ||||
|           <state>host_os_none.out</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkDebugInfoEnable</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkKeepSymbols</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkRawBinaryFile</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkRawBinarySymbol</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkRawBinarySegment</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkRawBinaryAlign</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkDefines</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkConfigDefines</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkMapFile</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogFile</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogInitialization</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogModule</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogSection</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogVeneer</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkIcfOverride</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkIcfFile</name> | ||||
|           <state>$TOOLKIT_DIR$\config\linker\NXP\lpc4330_m4.icf</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkIcfFileSlave</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkEnableRemarks</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkSuppressDiags</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkTreatAsRem</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkTreatAsWarn</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkTreatAsErr</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkWarningsAreErrors</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkUseExtraOptions</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkExtraOptions</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLowLevelInterfaceSlave</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkAutoLibEnable</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkAdditionalLibs</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOverrideProgramEntryLabel</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkProgramEntryLabelSelect</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkProgramEntryLabel</name> | ||||
|           <state>__iar_program_start</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>DoFill</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>FillerByte</name> | ||||
|           <state>0xFF</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>FillerStart</name> | ||||
|           <state>0x0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>FillerEnd</name> | ||||
|           <state>0x0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcSize</name> | ||||
|           <version>0</version> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcAlign</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcPoly</name> | ||||
|           <state>0x11021</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcCompl</name> | ||||
|           <version>0</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcBitOrder</name> | ||||
|           <version>0</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcInitialValue</name> | ||||
|           <state>0x0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>DoCrc</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkBE8Slave</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkBufferedTerminalOutput</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkStdoutInterfaceSlave</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcFullSize</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkIElfToolPostProcess</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogAutoLibSelect</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogRedirSymbols</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkLogUnusedFragments</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkCrcReverseByteOrder</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkCrcUseAsInput</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOptInline</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOptExceptionsAllow</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOptExceptionsForce</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkCmsis</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOptMergeDuplSections</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOptUseVfe</name> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkOptForceVfe</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkStackAnalysisEnable</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkStackControlFile</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IlinkStackCallGraphFile</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcAlgorithm</name> | ||||
|           <version>0</version> | ||||
|           <state>1</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>CrcUnitSize</name> | ||||
|           <version>0</version> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>IARCHIVE</name> | ||||
|       <archiveVersion>0</archiveVersion> | ||||
|       <data> | ||||
|         <version>0</version> | ||||
|         <wantNonLocal>1</wantNonLocal> | ||||
|         <debug>1</debug> | ||||
|         <option> | ||||
|           <name>IarchiveInputs</name> | ||||
|           <state></state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IarchiveOverride</name> | ||||
|           <state>0</state> | ||||
|         </option> | ||||
|         <option> | ||||
|           <name>IarchiveOutput</name> | ||||
|           <state>###Unitialized###</state> | ||||
|         </option> | ||||
|       </data> | ||||
|     </settings> | ||||
|     <settings> | ||||
|       <name>BILINK</name> | ||||
|       <archiveVersion>0</archiveVersion> | ||||
|       <data/> | ||||
|     </settings> | ||||
|   </configuration> | ||||
|   <group> | ||||
|     <name>app</name> | ||||
|     <file> | ||||
| @@ -1899,6 +2822,7 @@ | ||||
|       <name>lpc175x_6x</name> | ||||
|       <excluded> | ||||
|         <configuration>Board EA4357</configuration> | ||||
|         <configuration>Board NGX4330</configuration> | ||||
|       </excluded> | ||||
|       <file> | ||||
|         <name>$PROJ_DIR$\..\..\bsp\lpc175x_6x\CMSISv2p00_LPC17xx\src\core_cm3.c</name> | ||||
|   | ||||
| @@ -158,7 +158,7 @@ int main(void) | ||||
| OSAL_TASK_FUNCTION( led_blinking_task ) (void* p_task_para) | ||||
| { | ||||
|   static uint32_t led_on_mask = 0; | ||||
|    | ||||
|  | ||||
|   OSAL_TASK_LOOP_BEGIN | ||||
|  | ||||
|   osal_task_delay(1000); | ||||
| @@ -174,7 +174,7 @@ OSAL_TASK_FUNCTION( led_blinking_task ) (void* p_task_para) | ||||
| //--------------------------------------------------------------------+ | ||||
| void print_greeting(void) | ||||
| { | ||||
|   printf("\n\ | ||||
|   puts("\n\ | ||||
| --------------------------------------------------------------------\n\ | ||||
| -                     Host Demo (a tinyusb example)\n\ | ||||
| - if you find any bugs or get any questions, feel free to file an\n\ | ||||
| @@ -188,5 +188,4 @@ void print_greeting(void) | ||||
|   if (TUSB_CFG_HOST_HID_KEYBOARD ) puts("  - HID Keyboard"); | ||||
|   if (TUSB_CFG_HOST_MSC          ) puts("  - Mass Storage"); | ||||
|   if (TUSB_CFG_HOST_CDC          ) puts("  - Communication Device Class"); | ||||
| } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach