int main(int argc, char *argv[]) { FILE *in_file; FILE *out_file; char *file_header; char *file_data; int rtn; int sent = 0; int recv = 0; int len = 512*512; FILE *file; char *buffer; unsigned long fileLen; if(argc != 3) { printf("Wrong number of arguments\n"); return -1; } in_file = fopen(argv[1],"rb"); if (!in_file) { fprintf(stderr, "Unable to open image file\n"); return; } file_header=(char *)malloc(header_size); fread(file_header, 1, header_size, in_file); //Save file data file_data=(char *)malloc(image_size); fread(file_data, 4, image_size, in_file); //Close the image file fclose(in_file); //Open a new file to store the result out_file = fopen(argv[2],"wb"); //Store image header fwrite(file_header, 1, header_size, out_file); //Open partial bitstream file //Reset user logic rtn = fpga_reg_wr(UCTR_REG,0x0); rtn = fpga_reg_wr(UCTR_REG,0x1); rtn = fpga_reg_wr(CTRL_REG,0x0); rtn = fpga_reg_wr(CTRL_REG,0x1); while(sent < len){ rtn = fpga_send_data(USERPCIE1,(unsigned char *) file_data+sent,512,1); rtn = fpga_send_data(USERPCIE2,(unsigned char *) file_data+sent+512,512,1); rtn = fpga_send_data(USERPCIE3,(unsigned char *) file_data+sent+1024,512,1); rtn = fpga_reg_wr(0x400,0x1); rtn = fpga_recv_data(USERPCIE1,(unsigned char *) gDATA+recv,512,1); rtn = fpga_reg_wr(0x400,0x0); sent += 512; recv += 512; } fwrite(gDATA,1,image_size+2,out_file); fclose(out_file); free(file_header); free(file_data); return 0; }
int main(int argc, char *argv[]) { FILE *in_file; FILE *out_file; char *file_header; char *file_data; int rtn; int sent = 0; int recv = 0; int len = 512*512; int line_buff = 1; FILE *file; char *buffer; unsigned long fileLen; in_file = fopen(argv[1],"rb"); if (!in_file) { fprintf(stderr, "Unable to open image file\n"); return; } file_header=(char *)malloc(header_size); fread(file_header, 1, header_size, in_file); //Save file data file_data=(char *)malloc(image_size); fread(file_data, 4, image_size, in_file); //Close the image file fclose(in_file); //Open a new file to store the result out_file = fopen(argv[2],"wb"); //Store image header fwrite(file_header, 1, header_size, out_file); //Open partial bitstream file file = fopen(argv[3], "rb"); if (!file) { fprintf(stderr, "Unable to open partial bit file\n"); return; } //Get file length fseek(file, 0, SEEK_END); fileLen=ftell(file); fseek(file, 0, SEEK_SET); //Allocate memory buffer=(char *)malloc(fileLen+1); if (!buffer) { fprintf(stderr, "Memory error!\n"); fclose(file); return; } //Read file contents into buffer fread(buffer, 1, fileLen, file); fclose(file); //Send partial bitstream to FPGA rtn = fpga_send_data(ICAP, (unsigned char *) buffer, fileLen, 0); free(buffer); //Reset user logic rtn = fpga_reg_wr(UCTR_REG,0x0); rtn = fpga_reg_wr(UCTR_REG,0x1); rtn = fpga_reg_wr(CTRL_REG,0x0); rtn = fpga_reg_wr(CTRL_REG,0x1); if(strcmp(argv[4],"s")==0) { printf("Streaming filter"); while(sent < len){ rtn = fpga_send_data(USERPCIE1,(unsigned char *) file_data+sent,4096,1); rtn = fpga_recv_data(USERPCIE1,(unsigned char *) gDATA+sent,4096,1); sent += 4096; } } else if (strcmp(argv[4],"c")==0) { while(sent < len){ rtn = fpga_send_data(USERPCIE1,(unsigned char *) file_data+sent,512,1); rtn = fpga_send_data(USERPCIE2,(unsigned char *) file_data+sent+512,512,1); rtn = fpga_send_data(USERPCIE3,(unsigned char *) file_data+sent+1024,512,1); //rtn = fpga_wait_interrupt(hostuser1); //rtn = fpga_wait_interrupt(hostuser2); //rtn = fpga_wait_interrupt(hostuser3); rtn = fpga_reg_wr(0x400,0x1); rtn = fpga_recv_data(USERPCIE1,(unsigned char *) gDATA+recv,512,1); //printf("Data receive done\n"); rtn = fpga_reg_wr(0x400,0x0); sent += 512; recv += 512; } } else printf("Wrong filter type %s\n",argv[3]); fwrite(gDATA,1,image_size+2,out_file); fclose(out_file); free(file_header); free(file_data); return 0; }
int main() { float packet_time; char buff[200] = "\0"; char wr_len[15]; int rtn,timeout,i,k; int packet_num; char pkt_num_str[15]; unsigned int arg = 100; int rd_size = 1024*1; int wr_size = 1024*1; // 64 KByte is the buffer-limit int src_addr = 0x0; int dst_addr = 1024; int num_tx_pack = wr_size/1024; timeout = 10*1000; // 10 secs. FILE* ett = NULL; ett = fopen("Res_eth_tx_test.txt","w+"); fclose(ett); printf("Initializing DRAM at %0x with incremental pattern \n ",src_addr); int test_val = 0x0; for(i = 0; i < DATA_SIZE/4; i++){ senddata[i] = test_val; test_val++; } rtn = fpga_send_data(DRAM, (unsigned char *) senddata,DATA_SIZE, src_addr); // Loop Tests for (k = 1; k <= 1024*1024; k=k*2) { wr_size = 1024 * k; // Eth SND DATA printf("Setting Write size to %0x\n", wr_size); rtn = fpga_reg_wr(ETH_TX_SIZE, wr_size); printf("Setting DRAM source address to %0x\n",src_addr); rtn = fpga_reg_wr(ETH_SRC_ADDR, src_addr); rtn = fpga_reg_rd(0x40 ); printf("FPGA TX SIZE %0x \n",rtn); printf("Enabling ethernet\n"); rtn = fpga_reg_wr( 0x8,0x00000004); rtn = fpga_reg_rd( 0x10); fpga_wait_interrupt(enet); rtn = fpga_reg_rd(ETH_TX_STAT); printf("FPGA ENET STS %0x \n",rtn); packet_time = rtn * 5.0; printf("Total Time : %0f ns\n",packet_time); printf("Tpt : %0f MBps\n", (float)(wr_size/packet_time)*1000000000/1024/1024); sprintf(wr_len,"%d",wr_size); strcpy (buff,wr_len); // strcat (buff," Bytes \n"); strcat (buff,","); // strcat (buff,"Time : "); // sprintf(wr_len,"%f",packet_time); // strcat(buff,wr_len); // strcat(buff,"\nTpt : "); sprintf(wr_len,"%f", (float)(wr_size/packet_time)*1000000000/1024/1024); strcat(buff,wr_len); strcat(buff,"\n"); ett = fopen("Res_eth_tx_test.txt","a"); fwrite(&buff,1,strlen(buff),ett); fclose(ett); strcpy(buff,"\0"); //sleep(5); } printf("Exiting..."); }