fix previous commit

This commit is contained in:
Gwenhael Goavec-Merou 2023-08-06 08:16:10 +02:00
parent 2dc71ea612
commit d9805dd1cf
3 changed files with 20 additions and 26 deletions

View File

@ -72,8 +72,18 @@ class Jtag {
//bool insert_first(uint32_t device_id, uint16_t irlength);
bool insert_first(uint32_t idcode, bool is_misc, uint16_t irlength, device_model *device);
int get_nb_targets() {
int nb = 0;
/*!
* \brief return hown many devices were detected (supported and misc devices)
* \return device list length
*/
size_t get_chain_length() { return _f_device_list.size(); }
/*!
* \brief return hown many supported devices were detected (misc devices not included)
* \return device list length
*/
size_t get_nb_targets() {
size_t nb = 0;
for (auto t: _f_device_list)
if (!t.is_misc)
nb++;

View File

@ -453,8 +453,7 @@ int main(int argc, char **argv)
}
/* chain detection */
//vector<int> listDev = jtag->get_devices_list();
int found = listDev.size();
int found = jtag->get_chain_length();
int idcode = -1, index = 0;
if (args.verbose > 0)
@ -484,26 +483,11 @@ int main(int argc, char **argv)
if (jtag->get_nb_targets() != 1) {
printError("Error: more than one FPGA found");
printError("Use --index-chain to force selection");
for (int i = 0; i < found; i++)
printf("0x%08x\n", listDev[i]);
for (auto f: jtag->get_devices_list())
printf("0x%08x\n", f.idcode);
delete(jtag);
return EXIT_FAILURE;
}
/*for (int i = 0; i < found; i++) {
if (fpga_list.find(listDev[i]) != fpga_list.end()) {
index = i;
if (idcode != -1) {
printError("Error: more than one FPGA found");
printError("Use --index-chain to force selection");
for (int i = 0; i < found; i++)
printf("0x%08x\n", listDev[i]);
delete(jtag);
return EXIT_FAILURE;
} else {
idcode = listDev[i];
}
}
}*/
} else {
index = args.index_chain;
if (index > found || index < 0) {

View File

@ -283,7 +283,7 @@ bool Xilinx::zynqmp_init(const std::string &family)
* ARM at position 1
*/
char mess[256];
std::vector<int> listDev = _jtag->get_devices_list();
std::vector<Jtag::found_device> listDev = _jtag->get_devices_list();
if (listDev.size() != 2) {
snprintf(mess, sizeof(mess), "ZynqMP error: wrong"
" JTAG length: %zu instead of 2\n",
@ -292,18 +292,18 @@ bool Xilinx::zynqmp_init(const std::string &family)
return false;
}
if (fpga_list[listDev[0]].family != "zynqmp") {
if (listDev[0].model && listDev[0].model->family != "zynqmp") {
snprintf(mess, sizeof(mess), "ZynqMP error: first device"
" is not the PL TAP -> 0x%08x\n",
listDev[0]);
listDev[0].idcode);
printError(mess);
return false;
}
if (listDev[1] != 0x5ba00477) {
if (listDev[1].idcode != 0x5ba00477) {
snprintf(mess, sizeof(mess), "ZynqMP error: second device"
" is not the ARM DAP cortex A53 -> 0x%08x\n",
listDev[1]);
listDev[1].idcode);
printError(mess);
return false;
}