ID do artigo: 000083437 Tipo de conteúdo: Solução de problemas Última revisão: 11/09/2012

Ao usar uma UART JTAG ou UART para stdout, por que a saída printf é truncada quando é imediatamente antes do programa ser encerrado?

Ambiente

    Processador Intel® Nios® II
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição O buffer de saída dos drivers JTAG UART e UART pode não ser totalmente transmitido quando a instrução printf é imediatamente antes do programa ser encerrado. Portanto, se a última declaração do seu programa for uma printf, você pode não observar a mensagem inteira a partir da instrução printf. Para garantir que toda a mensagem seja impressa, coloque uma instrução usleep() após a instrução printf() para permitir que o tempo para que o buffer de saída do driver JTAG UART ou UART seja completamente transmitido para o hardware JTAG UART ou UART. Adicionando "usleep(200000);" (esperar por 200000 nós) geralmente é suficiente.

Observe que esse comportamento só ocorre quando o JTAG UART ou UART é conduzido por interrupção, que é o padrão. Ao usar as versões pesquisadas dos drivers, o driver aguarda o hardware JTAG UART ou UART antes de enviar e receber caracteres. Toda a mensagem printf será impressa antes da próxima instrução do processador ser executada. Consulte o Manual quartus II, volume 5: Altera periféricos embarcados para obter informações sobre os drivers rápidos (orientados por interrupção) em comparação com pequenos drivers (pesquisados) para periféricos JTAG UART e UART.

Produtos relacionados

Este artigo aplica-se a 1 produtos

Dispositivos programáveis Intel®

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.