хотя я погорячился.
select - это системный вызов, без наличия оного в ОС указанный выше финт не прокатит. так что в вашем случае проще отключить jtag-uart от стандартного ввода/вывода и сделать свой обработчик прерывания (и обломаться с stdio.h, да). или сделать аналог системного вызова
select. может проще ОС готовую воткнуть?
на всякий случай, в линуксе это выглядит примерно так:
CODE
#include <stdio.h>
#include <sys/select.h>
#include <sys/time.h>
#include <unistd.h>
int main()
{
//IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE,0);
fd_set rfds;
struct timeval tv;
int retval;
printf("Hello from Nios II!\n");
FD_ZERO(&rfds);
FD_SET(0, &rfds);
tv.tv_sec = 5;
tv.tv_usec = 0;
char sss[256];
while(1)
{
retval = select(1, &rfds, NULL, NULL, &tv);
if (retval == -1)
perror("select()");
else if (retval){
printf("Data is available now.\n");
tv.tv_sec = 5;
tv.tv_usec = 0;
FD_ZERO(&rfds);
scanf("%s",sss);
FD_SET(0, &rfds);
}
/* FD_ISSET(0, &rfds) will be true. */
else{
printf("No data within 5 seconds.\n");
tv.tv_sec = 5;
tv.tv_usec = 0;
FD_SET(0, &rfds);
}
}
return 0;
}