FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
5283 Discussions

problems about using Ethernet example in cyclone V GT development kits,help!!

Altera_Forum
Honored Contributor II
846 Views

I use the ethernet example which is in the cyclone V GT installation package( cycloneVGT_5cgtfd9ef35_fpga\examples\board_update_portal ) 

 

I download the c5gt_fpga_bup.sof into cyclone V GT Development board,and then debug my simple TSE driver ,I found some problem. 

 

1: i set the TSE into loop mode, RX_SGDMA's ISR is printing the received loopback data. 

 

the follow datas are received loopback data,i found a problem 

 

in first RX interrupt ,the datas are correct, but in the follow RX interrupt ,the datas are always zero ??? why??? 

 

 

RX descriptor reported OK 

0 0 ff ff ff ff ff ff 0 1c 23 17 4a cb 8 6 0 1 8 0 6 4 0 1 0 1c 23 17 4a cb c0 a8 1 2 0 0 0 0 0 0 c0 a8 1 72 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc 0 0  

RX descriptor reported OK 

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  

RX descriptor reported OK 

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  

RX descriptor reported OK 

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  

RX descriptor reported OK 

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  

RX descriptor reported OK 

 

my simple drivers: 

 

ethernet_init(); 

sgdma_tx_dev = alt_avalon_sgdma_open("/dev/sgdma_tx"); 

sgdma_rx_dev = alt_avalon_sgdma_open("/dev/sgdma_rx"); 

alt_avalon_sgdma_register_callback( 

sgdma_rx_dev, 

(alt_avalon_sgdma_callback) &sgdma_rx_isr, 

//ALTERA_AVALON_SGDMA_CONTROL_IE_DESC_COMPLETED_MSK |  

ALTERA_AVALON_SGDMA_CONTROL_IE_CHAIN_COMPLETED_MSK | 

ALTERA_AVALON_SGDMA_CONTROL_IE_GLOBAL_MSK  

0); 

while(1){ 

usleep(1000000); 

alt_avalon_sgdma_construct_stream_to_mem_desc( 

&desc[10],// 

&desc[11],// 

rx_payload,// 

0,// 

0);//write_fixed 

 

 

alt_avalon_sgdma_construct_mem_to_stream_desc( 

&desc[2], 

&desc[3], 

buf, 

66, 

0, 

1,//SOP 

1,//EOP 

0); 

sgdma_rx和sgdma_tx 

alt_avalon_sgdma_do_async_transfer(sgdma_rx_dev, &desc[10]); 

usleep(100); 

alt_avalon_sgdma_do_sync_transfer (sgdma_tx_dev, &desc[2]); 

 

 

 

 

void sgdma_rx_isr(void * context, u_long intnum) 

int i=0; 

printf("RX descriptor reported OK\n"); 

for(i=0; i<68; i++){ 

printf("%x ",rx_payload); 

rx_payload=0x00; 

printf("\n"); 

}
0 Kudos
0 Replies
Reply