O HAL fornece dois métodos para definir o driver HAL UART para operar no modo não bloqueado.
Estilo UNIX
Se usar chamadas de função de IO no estilo UNIX, você pode usar a função open() para definir um UART como não bloqueando. Para fazer isso, abra um descritor de arquivo em seu UART da seguinte maneira:
fd = open("/dev/",O_NONBLOCK | O_RDWR);
Este descritor de arquivo define o UART para operar no modo de leitura/gravação e não bloqueando. Em seguida, você pode usar o descritor de arquivo com as funções read() e write().
ANSI C
Ao usar chamadas de função de IO ANSI C, você pode definir um driver HAL UART para operar no modo não bloqueado usando fcntl(). Para fazer isso, você precisa fazer referência a fcntl.h e unistd.h em seu código fonte. Em seguida, você pode usar fcntl() para definir o UART no modo de não-bloqueio. Abaixo, um exemplo que define o canal de IO STDIN para operar no modo não bloqueador:
fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
Para obter mais informações, você pode consultar a referência HAL API Nios manual do desenvolvedor de software Nios® II. Este documento pode ser encontrado nos seguintes locais:
Nios II instalação - /documents/n2sw_nii5v2.pdf
Altera web site - http://www.altera.com/literature/lit-nio2.jsp®