summaryrefslogtreecommitdiffstats
path: root/tinyusb/lib/SEGGER_RTT/Syscalls/SEGGER_RTT_Syscalls_KEIL.c
diff options
context:
space:
mode:
Diffstat (limited to 'tinyusb/lib/SEGGER_RTT/Syscalls/SEGGER_RTT_Syscalls_KEIL.c')
-rwxr-xr-xtinyusb/lib/SEGGER_RTT/Syscalls/SEGGER_RTT_Syscalls_KEIL.c386
1 files changed, 386 insertions, 0 deletions
diff --git a/tinyusb/lib/SEGGER_RTT/Syscalls/SEGGER_RTT_Syscalls_KEIL.c b/tinyusb/lib/SEGGER_RTT/Syscalls/SEGGER_RTT_Syscalls_KEIL.c
new file mode 100755
index 00000000..f7f5aed4
--- /dev/null
+++ b/tinyusb/lib/SEGGER_RTT/Syscalls/SEGGER_RTT_Syscalls_KEIL.c
@@ -0,0 +1,386 @@
+/*********************************************************************
+* SEGGER Microcontroller GmbH *
+* The Embedded Experts *
+**********************************************************************
+* *
+* (c) 1995 - 2019 SEGGER Microcontroller GmbH *
+* *
+* www.segger.com Support: support@segger.com *
+* *
+**********************************************************************
+* *
+* SEGGER RTT * Real Time Transfer for embedded targets *
+* *
+**********************************************************************
+* *
+* All rights reserved. *
+* *
+* SEGGER strongly recommends to not make any changes *
+* to or modify the source code of this software in order to stay *
+* compatible with the RTT protocol and J-Link. *
+* *
+* Redistribution and use in source and binary forms, with or *
+* without modification, are permitted provided that the following *
+* condition is met: *
+* *
+* o Redistributions of source code must retain the above copyright *
+* notice, this condition and the following disclaimer. *
+* *
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
+* CONTRIBUTORS "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 SEGGER Microcontroller 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. *
+* *
+**********************************************************************
+---------------------------END-OF-HEADER------------------------------
+File : RTT_Syscalls_KEIL.c
+Purpose : Retargeting module for KEIL MDK-CM3.
+ Low-level functions for using printf() via RTT
+Revision: $Rev: 17697 $
+----------------------------------------------------------------------
+*/
+#ifdef __CC_ARM
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <rt_sys.h>
+#include <rt_misc.h>
+
+#include "SEGGER_RTT.h"
+/*********************************************************************
+*
+* #pragmas
+*
+**********************************************************************
+*/
+#pragma import(__use_no_semihosting)
+
+#ifdef _MICROLIB
+ #pragma import(__use_full_stdio)
+#endif
+
+/*********************************************************************
+*
+* Defines non-configurable
+*
+**********************************************************************
+*/
+
+/* Standard IO device handles - arbitrary, but any real file system handles must be
+ less than 0x8000. */
+#define STDIN 0x8001 // Standard Input Stream
+#define STDOUT 0x8002 // Standard Output Stream
+#define STDERR 0x8003 // Standard Error Stream
+
+/*********************************************************************
+*
+* Public const
+*
+**********************************************************************
+*/
+#if __ARMCC_VERSION < 5000000
+//const char __stdin_name[] = "STDIN";
+const char __stdout_name[] = "STDOUT";
+const char __stderr_name[] = "STDERR";
+#endif
+
+/*********************************************************************
+*
+* Public code
+*
+**********************************************************************
+*/
+
+/*********************************************************************
+*
+* _ttywrch
+*
+* Function description:
+* Outputs a character to the console
+*
+* Parameters:
+* c - character to output
+*
+*/
+void _ttywrch(int c) {
+ fputc(c, stdout); // stdout
+ fflush(stdout);
+}
+
+/*********************************************************************
+*
+* _sys_open
+*
+* Function description:
+* Opens the device/file in order to do read/write operations
+*
+* Parameters:
+* sName - sName of the device/file to open
+* OpenMode - This parameter is currently ignored
+*
+* Return value:
+* != 0 - Handle to the object to open, otherwise
+* == 0 -"device" is not handled by this module
+*
+*/
+FILEHANDLE _sys_open(const char * sName, int OpenMode) {
+ (void)OpenMode;
+ // Register standard Input Output devices.
+ if (strcmp(sName, __stdout_name) == 0) {
+ return (STDOUT);
+ } else if (strcmp(sName, __stderr_name) == 0) {
+ return (STDERR);
+ } else
+ return (0); // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_close
+*
+* Function description:
+* Closes the handle to the open device/file
+*
+* Parameters:
+* hFile - Handle to a file opened via _sys_open
+*
+* Return value:
+* 0 - device/file closed
+*
+*/
+int _sys_close(FILEHANDLE hFile) {
+ (void)hFile;
+ return 0; // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_write
+*
+* Function description:
+* Writes the data to an open handle.
+* Currently this function only outputs data to the console
+*
+* Parameters:
+* hFile - Handle to a file opened via _sys_open
+* pBuffer - Pointer to the data that shall be written
+* NumBytes - Number of bytes to write
+* Mode - The Mode that shall be used
+*
+* Return value:
+* Number of bytes *not* written to the file/device
+*
+*/
+int _sys_write(FILEHANDLE hFile, const unsigned char * pBuffer, unsigned NumBytes, int Mode) {
+ int r = 0;
+
+ (void)Mode;
+ if (hFile == STDOUT) {
+ SEGGER_RTT_Write(0, (const char*)pBuffer, NumBytes);
+ return 0;
+ }
+ return r;
+}
+
+/*********************************************************************
+*
+* _sys_read
+*
+* Function description:
+* Reads data from an open handle.
+* Currently this modules does nothing.
+*
+* Parameters:
+* hFile - Handle to a file opened via _sys_open
+* pBuffer - Pointer to buffer to store the read data
+* NumBytes - Number of bytes to read
+* Mode - The Mode that shall be used
+*
+* Return value:
+* Number of bytes read from the file/device
+*
+*/
+int _sys_read(FILEHANDLE hFile, unsigned char * pBuffer, unsigned NumBytes, int Mode) {
+ (void)hFile;
+ (void)pBuffer;
+ (void)NumBytes;
+ (void)Mode;
+ return (0); // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_istty
+*
+* Function description:
+* This function shall return whether the opened file
+* is a console device or not.
+*
+* Parameters:
+* hFile - Handle to a file opened via _sys_open
+*
+* Return value:
+* 1 - Device is a console
+* 0 - Device is not a console
+*
+*/
+int _sys_istty(FILEHANDLE hFile) {
+ if (hFile > 0x8000) {
+ return (1);
+ }
+ return (0); // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_seek
+*
+* Function description:
+* Seeks via the file to a specific position
+*
+* Parameters:
+* hFile - Handle to a file opened via _sys_open
+* Pos -
+*
+* Return value:
+* int -
+*
+*/
+int _sys_seek(FILEHANDLE hFile, long Pos) {
+ (void)hFile;
+ (void)Pos;
+ return (0); // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_ensure
+*
+* Function description:
+*
+*
+* Parameters:
+* hFile - Handle to a file opened via _sys_open
+*
+* Return value:
+* int -
+*
+*/
+int _sys_ensure(FILEHANDLE hFile) {
+ (void)hFile;
+ return (-1); // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_flen
+*
+* Function description:
+* Returns the length of the opened file handle
+*
+* Parameters:
+* hFile - Handle to a file opened via _sys_open
+*
+* Return value:
+* Length of the file
+*
+*/
+long _sys_flen(FILEHANDLE hFile) {
+ (void)hFile;
+ return (0); // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_tmpnam
+*
+* Function description:
+* This function converts the file number fileno for a temporary
+* file to a unique filename, for example, tmp0001.
+*
+* Parameters:
+* pBuffer - Pointer to a buffer to store the name
+* FileNum - file number to convert
+* MaxLen - Size of the buffer
+*
+* Return value:
+* 1 - Error
+* 0 - Success
+*
+*/
+int _sys_tmpnam(char * pBuffer, int FileNum, unsigned MaxLen) {
+ (void)pBuffer;
+ (void)FileNum;
+ (void)MaxLen;
+ return (1); // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_command_string
+*
+* Function description:
+* This function shall execute a system command.
+*
+* Parameters:
+* cmd - Pointer to the command string
+* len - Length of the string
+*
+* Return value:
+* == NULL - Command was not successfully executed
+* == sCmd - Command was passed successfully
+*
+*/
+char * _sys_command_string(char * cmd, int len) {
+ (void)len;
+ return cmd; // Not implemented
+}
+
+/*********************************************************************
+*
+* _sys_exit
+*
+* Function description:
+* This function is called when the application returns from main
+*
+* Parameters:
+* ReturnCode - Return code from the main function
+*
+*
+*/
+void _sys_exit(int ReturnCode) {
+ (void)ReturnCode;
+ while (1); // Not implemented
+}
+
+#if __ARMCC_VERSION >= 5000000
+/*********************************************************************
+*
+* stdout_putchar
+*
+* Function description:
+* Put a character to the stdout
+*
+* Parameters:
+* ch - Character to output
+*
+*
+*/
+int stdout_putchar(int ch) {
+ (void)ch;
+ return ch; // Not implemented
+}
+#endif
+
+#endif
+/*************************** End of file ****************************/