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
  • Maybe I'm missing something but I'm trying it right now and this is what I'm observing:

    printf - works.

    FS - works.

    putchar - I don't see that character on the terminal.

    If I add:

    int fputc(int ch, FILE *stream)
    {
        while (!(TERMINAL_UART_PORT->LSR & UART_LSR_THRE));
        UART_SendByte(TERMINAL_UART_PORT, (uint8_t)ch);
        return ch;
    }
    
    
    
    to the retarget.c file putchar works, printf works but the FS fails.
    
    Do you know what I'm missing?
    
    
    

Reply
  • Maybe I'm missing something but I'm trying it right now and this is what I'm observing:

    printf - works.

    FS - works.

    putchar - I don't see that character on the terminal.

    If I add:

    int fputc(int ch, FILE *stream)
    {
        while (!(TERMINAL_UART_PORT->LSR & UART_LSR_THRE));
        UART_SendByte(TERMINAL_UART_PORT, (uint8_t)ch);
        return ch;
    }
    
    
    
    to the retarget.c file putchar works, printf works but the FS fails.
    
    Do you know what I'm missing?
    
    
    

Children