[Перевод] Почему клоны USB Blaster под Linux зависают на 30 секунд: две находки в jtagd из Quartus

habrahabr.ru · culture
Full story

Under Linux, USB Blaster clones sometimes stall for 30 seconds and report 'JTAG chain broken.' Wireshark showed corrupted outgoing USB traffic before it reached the device. Doug Brown had dropped the intermittent failures a couple of years earlier and returned to them with Claude, who analyzed the closed-source jtagd. They found two causes; the first was a forgotten variable in a constructor affecting the stream for an older USB device.

Под 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; автор выложил патчер. Читать далее

Read full article → Compare