示例#1
0
int Jtag::getChain()
{
  io->tapTestLogicReset();
  io->setTapState(IOBase::SHIFT_DR);
  byte idx[4];
  byte zero[4];
  numDevices=0;
  for(int i=0; i<4; i++)zero[i]=0;
  do{
    io->shiftTDITDO(zero,idx,32,false);
    unsigned long id=byteArrayToLong(idx);
    if(id!=0 && id !=0xffffffff){
      numDevices++;
      chainParam_t dev;
      dev.idcode=id;
      devices.insert(devices.begin(),dev);
    }
    else{
      if (id == 0xffffffff && numDevices >0)
       {
         fprintf(stderr,"You probably have a broken Atmel device in your chain!\n");
         fprintf(stderr,"No succeeding device can be identified\n");
       }
      break;
    }
  }while(numDevices<MAXNUMDEVICES);
  io->setTapState(IOBase::TEST_LOGIC_RESET);
  return numDevices;
}
示例#2
0
文件: jtag.cpp 项目: Linux-enCaja/SIE
int Jtag::getChain()
{
  io->tapTestLogicReset();
  io->setTapState(IOBase::SHIFT_DR);
  byte idx[4];
  byte zero[4];
  numDevices=0;
  for(int i=0; i<4; i++)zero[i]=0;
  do{
    io->shiftTDITDO(zero,idx,32,false);
    unsigned long id=byteArrayToLong(idx);
    if(id!=0){
      numDevices++;
      chainParam_t dev;
      dev.idcode=id;
      printf("Device with ID=%x found\n", id);
      devices.insert(devices.begin(),dev);
    }
    else break;
  }while(numDevices<MAXNUMDEVICES);
  io->setTapState(IOBase::TEST_LOGIC_RESET);
  return numDevices;
}