/****************************************************************************** * * Title : inMemExtr.c * Version: * * Description: Input memories extraction - * - converts paralel data from input fifos to 48 "link" data files. * Input command line format: * * inputMemExtraction.exe -d[latencyClocks] file.bin * * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include #include /****************************************************************************** * Definitions * ******************************************************************************/ /****************************************************************************** * Static Function Declarations * ******************************************************************************/ typedef unsigned int UINT32; /****************************************************************************** * Main * ******************************************************************************/ int main(int argc, char *argv[]){ FILE *inFileHandle; FILE *outFileHandle; size_t bytesRead; char errorMessage[200]; int status; int i,j, link; char outFileName[300]; char inFileName[300]; char directory[300]; unsigned char binValue[6]; int numWords; char string[300]; long fileSize; char *inFileBuffer; unsigned int value, temp; unsigned short int temp2; unsigned int latency, latencyBits, latencyWords; memset(inFileName, 0, 300); memset(outFileName, 0, 300); sscanf (argv[1], "-d%d", &latency); printf("latency=%d\n", latency); strcpy(inFileName,argv[2]); latencyWords=latency/32; latencyBits=latency%32; //strcpy(inFileName, "cnfgRd_inmemA_abcd.bin"); GetFileSize (inFileName, &fileSize); inFileBuffer=calloc(fileSize, 1); /* read input file */ inFileHandle = fopen (inFileName, "rb"); /* open binary file for read */ fread (inFileBuffer, fileSize, 1, inFileHandle); status=fclose(inFileHandle); numWords=fileSize/192; for(link=0; link<48; ++link){ memset(outFileName, 0, 300); strncpy(outFileName, inFileName, strlen(inFileName)-4); sprintf(string,"_lnk%d_d%d.bin", link, latency); strcat(outFileName, string); outFileHandle = fopen (outFileName, "wb"); /* open binary file for write */ for(i=latencyWords;i>link)&1)<<(31-j)); }else{ temp2=*(unsigned short int*)&inFileBuffer[6*(j+latencyBits)+4+192*i]; value=value|(((temp2>>(link-32))&1)<<(31-j)); } } fwrite(&value, 4, 1, outFileHandle); } /* close files */ status=fclose(outFileHandle); } free(inFileBuffer);/* !!! */ printf("InputMem file(%s) extraction done.\n", inFileName); Delay(0); // printf("----- PRESS ANY KEY -------"); // getchar(); return(0); } /****************************************************************************** * Static functions * ******************************************************************************/ /******************************************************************************/