Возможно, вы переполняете буфер (FIFO в аппаратном обеспечении), если он слишком короткий. Вот почему задержка решила проблему - потому что вы дали аппаратному времени фактически отправить несколько байтов, прежде чем вы добавили новые в FIFO.
Прочтите таблицу данных контроллера, чтобы увидеть, насколько велик этот FIFO. Вероятно, есть способ проверить, насколько он заполнен, и, следовательно, подождать менее 20 секунд.
Кроме того, я бы использовал putchar
для печати отдельных символов, а не printf
.