OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk
#define MAX_MEMORY_SIZE 0xFFFFF //max memory size in bytes mustbe power of 2 #include "ihex.c" #include #include #define DEFAULT_OUT_FILE_NAME "out.mif" int memory[MAX_MEMORY_SIZE+1]; /* the memory is global */ unsigned int end_addr_int; FILE * in, * out; char *file_name, *end_addr, *out_file_name ; void update_out_file(void); void usage (void) { printf("Usage: ./ihex2mif \n"); printf("\nOptions: \n"); printf(" -e : end memory address.\n"); printf(" -f : input ihex file name.\n"); printf(" -o : output mif file name.\n"); } void processArgs (int argc, char **argv ) { char c; opterr = 0; while ((c = getopt (argc, argv, "e:f:o:h")) != -1) { switch (c) { case 'e': end_addr = optarg; break; case 'f': file_name = optarg; break; case 'o': out_file_name = optarg; break; case 'h': usage(); exit(1); break; case '?': if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); default: usage(); exit(1); } } } int main ( int argc, char **argv ){ int maxaddr; processArgs (argc,argv ); if (file_name == NULL) {usage();exit(1);} if (out_file_name == NULL) out_file_name = DEFAULT_OUT_FILE_NAME; out=fopen(out_file_name,"wb"); if(out==NULL){printf("Output file cannot be created"); exit(1);} maxaddr=load_file(file_name); if (end_addr != NULL) sscanf(end_addr, "%x", &end_addr_int); else end_addr_int = maxaddr; printf("end_addr_int=%u\n",end_addr_int); update_out_file(); fclose(out); return 0; } void update_out_file(void){ unsigned int ram_addr=0,zero_count,ram_data,i; fprintf(out,"-- Copyright (C) 2013 Alireza Monemi\n\n"); fprintf(out,"WIDTH=32;\nDEPTH=%d;\nADDRESS_RADIX=HEX;\nDATA_RADIX=HEX;\n\nCONTENT BEGIN\n", (end_addr_int>>2)+1); while(ram_addr>2,ram_data); }else if (zero_count == 1){ fprintf(out,"\t%08X\t:\t%08X;\n" , (ram_addr>>2),0); if(ram_data!=0)fprintf(out,"\t%08X\t:\t%08X;\n" , (ram_addr>>2)+1,ram_data); } else { fprintf(out,"\t[%08X..%08X]\t:\t00000000;\n" ,ram_addr>>2, (ram_addr>>2)+ zero_count-1); if(ram_data!=0)fprintf(out,"\t%08X\t:\t%08X;\n" , (ram_addr>>2)+ zero_count,ram_data); } ram_addr+=(zero_count<<2)+4; } fprintf(out,"END;"); return; }

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_c/] [ihex2mif/] [main.c] - Blame information for rev 48

Details | Compare with Previous | View Log

Line No. Rev Author Line

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.