17dc86dfdSMatthias Ringwald /*********************************************************************
2779af47bSMatthias Ringwald * SEGGER Microcontroller GmbH *
3779af47bSMatthias Ringwald * The Embedded Experts *
47dc86dfdSMatthias Ringwald **********************************************************************
57dc86dfdSMatthias Ringwald * *
6779af47bSMatthias Ringwald * (c) 1995 - 2019 SEGGER Microcontroller GmbH *
77dc86dfdSMatthias Ringwald * *
87dc86dfdSMatthias Ringwald * www.segger.com Support: [email protected] *
97dc86dfdSMatthias Ringwald * *
107dc86dfdSMatthias Ringwald **********************************************************************
117dc86dfdSMatthias Ringwald * *
127dc86dfdSMatthias Ringwald * SEGGER RTT * Real Time Transfer for embedded targets *
137dc86dfdSMatthias Ringwald * *
147dc86dfdSMatthias Ringwald **********************************************************************
157dc86dfdSMatthias Ringwald * *
167dc86dfdSMatthias Ringwald * All rights reserved. *
177dc86dfdSMatthias Ringwald * *
187dc86dfdSMatthias Ringwald * SEGGER strongly recommends to not make any changes *
197dc86dfdSMatthias Ringwald * to or modify the source code of this software in order to stay *
207dc86dfdSMatthias Ringwald * compatible with the RTT protocol and J-Link. *
217dc86dfdSMatthias Ringwald * *
227dc86dfdSMatthias Ringwald * Redistribution and use in source and binary forms, with or *
237dc86dfdSMatthias Ringwald * without modification, are permitted provided that the following *
24*ce6f85e7SMatthias Ringwald * condition is met: *
257dc86dfdSMatthias Ringwald * *
267dc86dfdSMatthias Ringwald * o Redistributions of source code must retain the above copyright *
27*ce6f85e7SMatthias Ringwald * notice, this condition and the following disclaimer. *
287dc86dfdSMatthias Ringwald * *
297dc86dfdSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
307dc86dfdSMatthias Ringwald * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
317dc86dfdSMatthias Ringwald * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
327dc86dfdSMatthias Ringwald * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
337dc86dfdSMatthias Ringwald * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
347dc86dfdSMatthias Ringwald * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
357dc86dfdSMatthias Ringwald * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
367dc86dfdSMatthias Ringwald * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
377dc86dfdSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
387dc86dfdSMatthias Ringwald * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
397dc86dfdSMatthias Ringwald * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
407dc86dfdSMatthias Ringwald * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
417dc86dfdSMatthias Ringwald * DAMAGE. *
427dc86dfdSMatthias Ringwald * *
437dc86dfdSMatthias Ringwald **********************************************************************
447dc86dfdSMatthias Ringwald ---------------------------END-OF-HEADER------------------------------
457dc86dfdSMatthias Ringwald File : SEGGER_RTT_Syscalls_IAR.c
467dc86dfdSMatthias Ringwald Purpose : Low-level functions for using printf() via RTT in IAR.
477dc86dfdSMatthias Ringwald To use RTT for printf output, include this file in your
487dc86dfdSMatthias Ringwald application and set the Library Configuration to Normal.
49*ce6f85e7SMatthias Ringwald Revision: $Rev: 24316 $
507dc86dfdSMatthias Ringwald ----------------------------------------------------------------------
517dc86dfdSMatthias Ringwald */
527dc86dfdSMatthias Ringwald #ifdef __IAR_SYSTEMS_ICC__
537dc86dfdSMatthias Ringwald
54779af47bSMatthias Ringwald //
55779af47bSMatthias Ringwald // Since IAR EWARM V8 and EWRX V4, yfuns.h is considered as deprecated and LowLevelIOInterface.h
56779af47bSMatthias Ringwald // shall be used instead. To not break any compatibility with older compiler versions, we have a
57779af47bSMatthias Ringwald // version check in here.
58779af47bSMatthias Ringwald //
59779af47bSMatthias Ringwald #if ((defined __ICCARM__) && (__VER__ >= 8000000)) || ((defined __ICCRX__) && (__VER__ >= 400))
60779af47bSMatthias Ringwald #include <LowLevelIOInterface.h>
61779af47bSMatthias Ringwald #else
627dc86dfdSMatthias Ringwald #include <yfuns.h>
63779af47bSMatthias Ringwald #endif
64779af47bSMatthias Ringwald
657dc86dfdSMatthias Ringwald #include "SEGGER_RTT.h"
667dc86dfdSMatthias Ringwald #pragma module_name = "?__write"
677dc86dfdSMatthias Ringwald
687dc86dfdSMatthias Ringwald /*********************************************************************
697dc86dfdSMatthias Ringwald *
707dc86dfdSMatthias Ringwald * Function prototypes
717dc86dfdSMatthias Ringwald *
727dc86dfdSMatthias Ringwald **********************************************************************
737dc86dfdSMatthias Ringwald */
747dc86dfdSMatthias Ringwald size_t __write(int handle, const unsigned char * buffer, size_t size);
757dc86dfdSMatthias Ringwald
767dc86dfdSMatthias Ringwald /*********************************************************************
777dc86dfdSMatthias Ringwald *
787dc86dfdSMatthias Ringwald * Global functions
797dc86dfdSMatthias Ringwald *
807dc86dfdSMatthias Ringwald **********************************************************************
817dc86dfdSMatthias Ringwald */
827dc86dfdSMatthias Ringwald /*********************************************************************
837dc86dfdSMatthias Ringwald *
847dc86dfdSMatthias Ringwald * __write()
857dc86dfdSMatthias Ringwald *
867dc86dfdSMatthias Ringwald * Function description
877dc86dfdSMatthias Ringwald * Low-level write function.
887dc86dfdSMatthias Ringwald * Standard library subroutines will use this system routine
897dc86dfdSMatthias Ringwald * for output to all files, including stdout.
907dc86dfdSMatthias Ringwald * Write data via RTT.
917dc86dfdSMatthias Ringwald */
__write(int handle,const unsigned char * buffer,size_t size)927dc86dfdSMatthias Ringwald size_t __write(int handle, const unsigned char * buffer, size_t size) {
937dc86dfdSMatthias Ringwald (void) handle; /* Not used, avoid warning */
947dc86dfdSMatthias Ringwald SEGGER_RTT_Write(0, (const char*)buffer, size);
957dc86dfdSMatthias Ringwald return size;
967dc86dfdSMatthias Ringwald }
977dc86dfdSMatthias Ringwald
987dc86dfdSMatthias Ringwald /*********************************************************************
997dc86dfdSMatthias Ringwald *
1007dc86dfdSMatthias Ringwald * __write_buffered()
1017dc86dfdSMatthias Ringwald *
1027dc86dfdSMatthias Ringwald * Function description
1037dc86dfdSMatthias Ringwald * Low-level write function.
1047dc86dfdSMatthias Ringwald * Standard library subroutines will use this system routine
1057dc86dfdSMatthias Ringwald * for output to all files, including stdout.
1067dc86dfdSMatthias Ringwald * Write data via RTT.
1077dc86dfdSMatthias Ringwald */
__write_buffered(int handle,const unsigned char * buffer,size_t size)1087dc86dfdSMatthias Ringwald size_t __write_buffered(int handle, const unsigned char * buffer, size_t size) {
1097dc86dfdSMatthias Ringwald (void) handle; /* Not used, avoid warning */
1107dc86dfdSMatthias Ringwald SEGGER_RTT_Write(0, (const char*)buffer, size);
1117dc86dfdSMatthias Ringwald return size;
1127dc86dfdSMatthias Ringwald }
1137dc86dfdSMatthias Ringwald
1147dc86dfdSMatthias Ringwald #endif
1157dc86dfdSMatthias Ringwald /****** End Of File *************************************************/
116