This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

C Library I/O retargeting

Hello,

I'm having an issue with re-targeting the C library.

I'm using RL-Flash + RL-TCP + RTX.

I have (want) my printf etc (stdin, stdout stderr) erdirected to a UART.

While reading the documentation I saw that to re-target printf you must re-define fputc.

But when I do this it causes problems with fread/fwrite...

So if I only re-target the _sys_ functions everything seems to work BUT I can not use putchar, etc...

So I tried a combination similar to this:
my.st.com/.../Retarget.c

Still does not work.

How do correctly re-target the ARM C library such that:

  1. stdin, stdout and stderr are redirected to a UART
  2. RL-Flash (and RL-TCPnet with HTTP_uif.c) works as expected
  3. I can still use putchar, fputc, etc...

Also as a follow up can somebody explain:

#pragma import(_main_redirection)

Thanks.

M

Parents
  • Hi Franc,
    Can u please tell me how to redirect printf output directly to _sys_write rather than fputc. I am currently using both in my Retarget.c and if I try to remove fputs function then I get the following error:

    Library reports error: __use_no_semihosting_swi was requested, but a semihosting fputc was linked in

Reply
  • Hi Franc,
    Can u please tell me how to redirect printf output directly to _sys_write rather than fputc. I am currently using both in my Retarget.c and if I try to remove fputs function then I get the following error:

    Library reports error: __use_no_semihosting_swi was requested, but a semihosting fputc was linked in

Children
No data