int main(int argc, char **argv) { FTDIDevice dev; int err; err = FTDIDevice_Open(&dev); if (err) { fprintf(stderr, "USB: Error opening device\n"); return 1; } err = FTDIDevice_ReadStream(&dev, FTDI_INTERFACE_A, readcb, NULL, 32, 64); FTDIDevice_Close(&dev); return 0; }
int main(int argc, char **argv) { const char *bitstream = getDefaultBitstreamPath(); const char *tracefile = NULL; double clock = CLOCK_DEFAULT; HWPatch patch; FTDIDevice dev; bool resetFPGA = true; bool resetDSI = true; bool iohook = false; int err, c; HWPatch_Init(&patch); while (1) { int option_index; static struct option long_options[] = { {"no-fpga-reset", 0, NULL, 'F'}, {"no-dsi-reset", 0, NULL, 'D'}, {"bitstream", 1, NULL, 'b'}, {"fast", 0, NULL, 'f'}, {"slow", 0, NULL, 's'}, {"clock", 1, NULL, 'c'}, {"patch", 1, NULL, 'p'}, {"iohook", 0, NULL, 'i'}, {"stop", 1, NULL, 'S'}, {NULL}, }; c = getopt_long(argc, argv, "FDb:fsc:p:iS:", long_options, &option_index); if (c == -1) break; switch (c) { case 'F': resetFPGA = false; break; case 'D': resetDSI = false; break; case 'b': bitstream = strdup(optarg); break; case 'f': clock = CLOCK_FAST; break; case 's': clock = CLOCK_SLOW; break; case 'c': clock = atof(optarg); break; case 'p': HWPatch_ParseString(&patch, optarg); break; case 'i': iohook = true; break; case 'S': HWTrace_ParseStopCondition(optarg); break; default: usage(argv[0]); } } if (optind == argc - 1) { // Exactly one extra argument- a trace file tracefile = argv[optind]; } else if (optind < argc) { // Too many extra args usage(argv[0]); } err = FTDIDevice_Open(&dev); if (err) { fprintf(stderr, "USB: Error opening device\n"); return 1; } if (iohook) HWTrace_InitIOHookPatch(&patch); HW_Init(&dev, resetFPGA ? bitstream : NULL); HW_ConfigWrite(&dev, REG_POWERFLAGS, POWERFLAG_DSI_BATT, false); HW_SetSystemClock(&dev, clock); HW_LoadPatch(&dev, &patch); if (tracefile || iohook) HW_Trace(&dev, &patch, tracefile, iohook, resetDSI); FTDIDevice_Close(&dev); IOH_Exit(); return 0; }
int main(int argc, char **argv) { const char *bitstream = NULL; const char *tracefile = NULL; FTDIDevice dev; int err, c; HW_Init(); changeterminal(1); while (1) { int option_index; char* pchr; static struct option long_options[] = { {"bitstream", 1, NULL, 'b'}, {"patch", 1, NULL, 'p'}, {"flatpatch", 1, NULL, 'l'}, {"server", 0, NULL, 's'}, {"gdb", 0, NULL, 'd'}, {NULL}, }; c = getopt_long(argc, argv, "sb:p:l:d", long_options, &option_index); if (c == -1) break; switch (c) { case 'd': DebuggerSetEnabled(1); break; case 's': ServerSetEnabled(1); break; case 'b': bitstream = strdup(optarg); break; case 'p': HW_LoadPatchFile(optarg); break; case 'l': { char* patchfilename = 0; unsigned int patchaddress = strtoul(optarg, &patchfilename, 0); if (patchfilename != optarg) patchfilename++; HW_LoadFlatPatchFile(patchaddress, patchfilename); } break; default: usage(argv[0]); } } if (optind == argc - 1) { // Exactly one extra argument- a trace file tracefile = argv[optind]; } else if (optind < argc) { // Too many extra args usage(argv[0]); } err = FTDIDevice_Open(&dev); if (err) { fprintf(stderr, "USB: Error opening device\n"); return 1; } HW_Setup(&dev, bitstream); HW_Trace(&dev, tracefile); FTDIDevice_Close(&dev); changeterminal(0); }