Переопределить stdout, не ? GCC'ная шняга:
uart_putchar(char c, FILE *stream);
FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,_FDEV_SETUP_WRITE);
правда в данном примере выполняется ровно противоположная задача - перенаправление stdout [ printf() ] в последовательный порт.