Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
22 years ago

Nios II UART Troubles

OK, I am porting some code from Nios 1 to Nios 2 and I am stuck on the UART code. Here is the original code:

char poll_uart_rx( void )
{
    int i;
    i = nr_uart_rxchar( na_uart_0 );
    if( i == -1 )
  return( 0 );
    else
  return( (char) i );
}

The new Nios 2 documentation says to use getchar() or getc(). These both seem to be blocking reads. I need a non-blocking read. Looking through "altera_avalon_uart.c" I found that 'alt_avalon_uart_read' supports non-blocking reads, but what newlib call do I make to get a non-blocking read? Thanks

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I open device uart in non blocking mode:

    static int fdterm; // FILEDESCRIPTOR RETURNED BY OPEN

    ..

    fdterm = open("/dev/uart1", O_RDWR | O_NONBLOCK | O_NOCTTY);

    ..

    reading is done by

    ..

    res=read(fdterm,uart1_tempbuff,sizeof(uart1_tempbuff)-1);

    if(res>0) {

    ... we have received some bytes

    }