[Перевод] Почему клоны USB Blaster под Linux зависают на 30 секунд: две находки в jtagd из Quartus
Под Linux программатор USB Blaster иногда молчит 30 секунд и выдаёт «JTAG chain broken», а Wireshark показывает испорченный исходящий USB-трафик ещё до самого устройства. Doug Brown пару лет назад бросил разбираться с этими плавающими сбоями, а теперь вернулся к ним вместе с Claude, который разобрал закрытый jtagd. Причин оказалось две. Первая: забытая переменная в конструкторе, из-за которой в поток для старого USB Blaster могут попасть данные протокола USB-Blaster II; по наблюдениям автора, это случается, если переподключить программатор, не останавливая jtagd. Вторая: порядок команд инициализации FT245, после которого, судя по всему, часть клонов около 250 мс не принимает данные; автор признаётся, что не уверен, баг ли это jtagd или особенность чипов в клонах. Обе проблемы есть как минимум с Quartus 18.1 и до сих пор в Quartus 25.1; автор выложил патчер.