- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
This is my first use of Software drivers. I'm working with the Quartus standard version 16.0.
when I used the "altera_avalon_uart_write" and "altera_avalon_uart_read" functions, things go right.. but when trying to use FD (altera_avalon_uart_write_fd and altera_avalon_uart_read_fd) , the parameter SP points to a false base address although the file has been correctly opened, it returns a valid value (!=NULL).
my code is :
int main()
{
altera_avalon_uart_state* sp_UART_0;
altera_avalon_uart_state* sp_UART_1;
sp_UART_0->base = UART_0_BASE;
sp_UART_1->base = UART_1_BASE;
char tx_buffer[8] = "BITBANG";
char rx_buffer[8];
alt_fd* fp_uart_1;
alt_fd* fp_uart_0;
fp_uart_1= open ("/dev/uart_1", O_RDWR); //Open file for reading and writing
fp_uart_0= open ("/dev/uart_0",O_RDWR); //Open file for reading and writing
printf("call init uart\n");
altera_avalon_uart_init(sp_UART_1, UART_1_IRQ_INTERRUPT_CONTROLLER_ID,UART_1_IRQ);
altera_avalon_uart_init(sp_UART_0, UART_0_IRQ_INTERRUPT_CONTROLLER_ID,UART_0_IRQ);
int wr = altera_avalon_uart_write_fd (fp_uart_1,tx_buffer,sizeof(tx_buffer)) ;
printf("wr = %d\n",wr);
alt_busy_sleep(1000000); / delay 1us /// 1 s
int rd = altera_avalon_uart_read_fd (fp_uart_0,rx_buffer,sizeof(tx_buffer)) ;
alt_busy_sleep(1000000); / delay 1us /// 1 s
printf(" rd = %d\n",rd);
printf("rx_buffer = '%s'\n\n",rx_buffer);
printf("sp_UART_0 base = 0x%08X \n", sp_UART_0->base);
printf("sp_UART_0 ctrl = 0x%08X \n", sp_UART_0->ctrl);
printf("sp_UART_0 tx_buf = '%s' \n", sp_UART_0->tx_buf);
printf("sp_UART_0 rx_buf = '%s' \n\n\n", sp_UART_0->rx_buf);
printf("sp_UART_1 base = 0x%08X \n", sp_UART_1->base);
printf("sp_UART_1 ctrl = 0x%08X \n", sp_UART_1->ctrl);
printf("sp_UART_1 tx_buf = '%s' \n", sp_UART_1->tx_buf);
printf("sp_UART_1 rx_buf = '%s' \n\n", sp_UART_1->rx_buf);
printf(" rx_buffer = %s\n",rx_buffer);
altera_avalon_uart_close (fp_uart_1) ;
altera_avalon_uart_close (fp_uart_0) ;
free(fp_uart_1);
free(fp_uart_0);
return 0;
}
I'm not sure if I'm missing or using things wrong, any help would be much appreciated. Thank you in advance
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page