Example #1
0
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;
}
Example #2
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;
}
Example #3
0
File: main.c Project: atupac/ctr
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);
}