int main(int argc, char**args) { BitFile file; if(argc>1){ int length=file.load(args[1]); file.getData(); if(length>0){ printf("Created from NCD file: %s\n",file.getNCDFilename()); printf("Target device: %s\n",file.getPartName()); printf("Created: %s %s\n",file.getDate(),file.getTime()); printf("Bitstream length: %d bits\n",length); } else return 1; } if(argc>2)if(file.saveAsBin(args[2])>0)printf("Bitstream saved in binary format in file: %s\n",args[2]); if(argc<2){ fprintf(stderr,"Usage: %s infile.bit [outfile.bin]\n",args[0]); } }
int main(int argc, char**args) { bool verbose = false; bool revert = false; const char * outfile = NULL; FILE_STYLE in_style = STYLE_BIT; FILE_STYLE out_style = STYLE_BIT; char device[256]= ""; FILE *fp = NULL; const char * mapdir = NULL; fprintf(stderr, "Release $Rev: 237 $\n" "Please provide feedback on success/failure/enhancement requests!\n" "Check Sourceforge SVN for updates!\n"); while(true) { switch(getopt(argc, args, "?m:i:vo:O:")) { case -1: goto args_done; case 'v': verbose = true; break; case 'i': if (BitFile::styleFromString(optarg, &in_style)) { fprintf(stderr, "Unknown format \"%s\"\n", optarg); usage(); } break; case 'o': if (BitFile::styleFromString(optarg, &out_style)) { fprintf(stderr, "Unknown format \"%s\"\n", optarg); usage(); } break; case 'm': mapdir = optarg; break; case 'O': outfile = optarg; break; case '?': case 'h': default: usage(); } } args_done: argc -= optind; args += optind; if(argc < 1) usage(); MapFile_XC2C map; JedecFile fuses; BitFile bits; if (*args[0] == '-') fp = stdin; else { fp=fopen(args[0],"rb"); if(!fp) { fprintf(stderr, "Can't open datafile %s: %s\n", args[0], strerror(errno)); return 1; } } if (fuses.readFile(fp) == 0) { if (verbose) fprintf(stderr,"Jedecfile %s for %s: %d Fuses, Checksum: 0x%04x\n", args[0], fuses.getDevice(), fuses.getLength(), fuses.getChecksum()); strncpy(device, fuses.getDevice(), 255); } else { if (*args[0] == '-') fp = stdin; else { fp=fopen(args[0],"rb"); if(!fp) { fprintf(stderr, "Can't open datafile %s: %s\n", args[0], strerror(errno)); return 1; } } if (bits.readFile(fp, in_style) == 0 ) { if (verbose) fprintf(stderr,"Got Bitfile for Device %s: %ld Fuses\n", bits.getPartName(), bits.getLength()); revert = true; strncpy(device, bits.getPartName(), 255); } else { fprintf(stderr, "File %s not recognized as Bit- or Jedecfile\n", args[0]); return 3; } } if (map.loadmapfile(mapdir, device)) { fprintf(stderr, "failed to load Mapfile %s, aborting\n", map.GetFilename()); return 2; } if(outfile) { fp = fopen(outfile,"wb"); if (!fp) { fprintf(stderr, "failed to open %s: %s\n", outfile, strerror(errno)); return 1; } } else return 0; if (revert) { map.bitfile2jedecfile(&bits, &fuses); fprintf(stderr, "Device %s: %d Fuses, Checksum calculated: 0x%04x," " Checksum from file 0x%04x\n", fuses.getDevice(), fuses.getLength(), fuses.calcChecksum(), fuses.getChecksum()); fuses.saveAsJed( device, fp); } else { map.jedecfile2bitfile(&fuses, &bits); bits.saveAs(out_style, device, fp); } return 0; }
int main(int argc, char **args) { bool verbose = false; char *device = NULL; int ch, ll_driver = DRIVER_PARPORT; IOBase *io; IOParport io_pp; IOFtdi io_ftdi; // Produce release info from CVS tags char release[]={"$Name: Release-0-5 $"}; char *loc0=strchr(release,'-'); if(loc0>0){ loc0++; char *loc=loc0; do{ loc=strchr(loc,'-'); if(loc)*loc='.'; }while(loc); release[strlen(release)-1]='\0'; // Strip off $ } printf("Release %s\n",loc0); // Start from parsing command line arguments while ((ch = getopt(argc, args, "c:d:v")) != -1) switch ((char)ch) { case 'c': if (strcmp(optarg, "pp") == 0) ll_driver = DRIVER_PARPORT; else if (strcmp(optarg, "ftdi") == 0) ll_driver = DRIVER_FTDI; else usage(); break; case 'd': device = strdup(optarg); break; case 'v': verbose = true; break; default: usage(); } if ((device == NULL) && (ll_driver == DRIVER_PARPORT)) if(getenv("XCPORT")) device = strdup(getenv("XCPORT")); else device = strdup(PPDEV); switch (ll_driver) { case DRIVER_PARPORT: io = &io_pp; break; case DRIVER_FTDI: io = &io_ftdi; break; default: usage(); } io->setVerbose(verbose); printf("argc: %d\n", argc); // Get rid of options argc -= optind; args += optind; printf("argc: %d\n", argc); if(argc<1) usage(); io->dev_open(device); if(io->checkError()){ if (ll_driver == DRIVER_FTDI) fprintf(stderr, "Could not access USB device (%s).\n", (device == NULL) ? "*" : device); else { fprintf(stderr,"Could not access parallel device '%s'.\n", device); fprintf(stderr,"You may need to set permissions of '%s' \n", device); fprintf(stderr, "by issuing the following command as root:\n\n# chmod 666 %s\n\n", device); } return 1; } free(device); int chainpos=0; if(argc>1)chainpos=atoi(args[1]); if(verbose) printf("JTAG chainpos: %d\n", chainpos); int length; BitFile file; if((length = file.load(args[0]))) { if (verbose) { printf("Created from NCD file: %s\n",file.getNCDFilename()); printf("Target device: %s\n",file.getPartName()); printf("Created: %s %s\n",file.getDate(),file.getTime()); printf("Bitstream length: %d bits\n",length); } process(*io, file, chainpos, verbose); } else return 1; return 0; }
int main(int argc, char**args) { FILE_STYLE in_style = STYLE_BIT; FILE_STYLE out_style = STYLE_BIT; const char * outfile = NULL; while(true) { switch(getopt(argc, args, "?i:vo:O:")) { case -1: goto args_done; case 'i': if (BitFile::styleFromString(optarg, &in_style)) { fprintf(stderr, "Unknown format \"%s\"\n", optarg); usage(); } break; case 'o': if (BitFile::styleFromString(optarg, &out_style)) { fprintf(stderr, "Unknown format \"%s\"\n", optarg); usage(); } break; case 'O': outfile = optarg; break; case '?': case 'h': default: usage(); } } args_done: argc -= optind; args += optind; if(argc < 1) usage(); try { BitFile file; FILE* fp; if (*args[0] == '-') fp = stdin; else { fp=fopen(args[0],"rb"); if(!fp) { fprintf(stderr, "Can't open datafile %s: %s\n", args[0], strerror(errno)); return 1; } } file.readFile(fp, in_style); fprintf(stderr, "Created from NCD file: %s\n",file.getNCDFilename()); fprintf(stderr, "Target device: %s\n",file.getPartName()); fprintf(stderr, "Created: %s %s\n",file.getDate(),file.getTime()); fprintf(stderr, "Bitstream length: %lu bits\n", file.getLength()); if(outfile) { if(outfile[0] == '-') fp = stdout; else fp = fopen(outfile,"wb"); if (fp) { file.saveAs(out_style,file.getPartName(), fp); fprintf(stderr, "Bitstream saved in format %s as file: %s\n", BitFile::styleToString(out_style), outfile); } else fprintf(stderr," Can't open %s: %s \n", outfile, strerror(errno)); } } catch(io_exception& e) { fprintf(stderr, "IOException: %s", e.getMessage().c_str()); return 1; } }
int main(int argc, char**args) { FILE_STYLE in_style = STYLE_BIT; FILE_STYLE out_style = STYLE_BIT; uint64_t sum = 0L; unsigned int i; const char * outfile = NULL; while(true) { switch(getopt(argc, args, "?i:vo:O:")) { case -1: goto args_done; case 'i': if (BitFile::styleFromString(optarg, &in_style)) { fprintf(stderr, "Unknown format \"%s\"\n", optarg); usage(); } break; case 'o': if (BitFile::styleFromString(optarg, &out_style)) { fprintf(stderr, "Unknown format \"%s\"\n", optarg); usage(); } break; case 'O': outfile = optarg; break; case '?': case 'h': default: usage(); } } args_done: argc -= optind; args += optind; if(argc < 1) usage(); try { BitFile file; FILE* fp; if (*args[0] == '-') fp = stdin; else { fp=fopen(args[0],"rb"); if(!fp) { fprintf(stderr, "Can't open datafile %s: %s\n", args[0], strerror(errno)); return 1; } } file.readFile(fp, in_style); fprintf(stderr, "Created from NCD file: %s\n",file.getNCDFilename()); fprintf(stderr, "Target device: %s\n",file.getPartName()); fprintf(stderr, "Created: %s %s\n",file.getDate(),file.getTime()); fprintf(stderr, "Bitstream length: %u bits %u bytes(0x%06x)\n", file.getLength(),file.getLength()/8,file.getLength()/8); for (i = 0; i < file.getLength()/8; i++) { /* Umprogrammed Bytes are 0xff, so invert to not count them */ sum += (file.getData()[i]) ^0xff; } fprintf(stderr, "64-bit sum: %" PRIu64 "\n", sum); if(outfile) { if(outfile[0] == '-') fp = stdout; else fp = fopen(outfile,"wb"); if (fp) { file.saveAs(out_style,file.getPartName(), fp); fprintf(stderr, "Bitstream saved in format %s as file: %s\n", BitFile::styleToString(out_style), outfile); } else fprintf(stderr," Can't open %s: %s \n", outfile, strerror(errno)); } } catch(io_exception& e) { fprintf(stderr, "IOException: %s", e.getMessage().c_str()); return 1; } }