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; }
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; }