Se um host (host de PC) estiver conectado, não haverá problema. No entanto, se o lado do host estiver desconectado, há duas razões pelas quais printf() bloquearia:
1. O usuário está usando um driver de dispositivo reduzido ("pequeno"). - A caixa de seleção para "Drivers de dispositivo reduzidos" está marcada na página Propriedades da biblioteca do sistema no Nios II IDE. - O driver de dispositivo reduzido assume que o lado do host está sempre conectado.
2. O usuário está usando o driver de dispositivo padrão, para o JTAG UART, mas não tem "timer do sistema" definido (na página do sopc Builder system/na página propriedades da biblioteca do sistema). O driver padrão do dispositivo suporta "tempo de jtag_uart dispositivos", mas requer um "temporizador do sistema" para implementar isso.
Resolução: (se necessário) mudar para o driver de dispositivo padrão e certifique-se de que você tenha um temporizador de sistema no seu sistema SOPC Builder e definido na biblioteca do sistema.