Выпущено программное обеспечение, которое позволяет сделать из Raspberry Pi3 сетевой JTAG программатор для САПР Altera Quartus Prime. Это решение позволяет удаленно загружать FPGA Altera/Intel и даже вести удаленную отладку с помощью инструмента SignalTap. Далее расскажу,
как использовать это ПО.
Вообще-то все это ПО создавалось ради платы расширения Марсоход2RPI, которая показана выше на фото. Плата имеет на борту ПЛИС Intel Cyclone IV и может подключаться через переходник к Raspberry Pi3 / Pi2 / Pi-Zero. Описывать здесь плату пожалуй подробно не буду, о ней уже писали на geektimes. Однако, ничто не мешает использовать это же программное обеспечение самостоятельно с другими FPGA платами — все, что нужно сделать — это изготовить простой JTAG провод и подключить его к GPIO микрокомпьютера распберри. Там всего-то нужны четыре сигнала tck > GPIO7, tms > GPIO0, tdi > GPIO11 и tdo < GPIO1, ну и конечно, хорошая «Земля»/GND.
Честно говоря, использовать Raspberry Pi в качестве JTAG программатора было возможно и раньше. САПР Quartus Prime позволяет при компиляции проектов генерировать SVF файлы, а сервер OpenOCD может загружать SVF файлы в ПЛИС через GPIO пины распберри.
Однако, к сожалению, OpenOCD нельзя использовать в связке с самой САПР Quartus.
Теперь у нас есть другое ПО, где это возможно. Программное обеспечение можно скачать бесплатно без регистрации и без SMS вот здесь, на сайте проекта.
Архив содержит два файла.
Файл nw_jtag_srv — это исполняемый файл для raspberry pi. Является JTAG сервером, управляемым по UDP/TCP сети.
Вот так запускается nw_jtag_srv на распберри в консоли терминала. Использую sudo, так как нужен доступ к GPIO:
Второй файл из архива jtag_hw_net_blaster64.dll — это драйвер для Altera Quartus Prime. Его нужно переписать в папку c:\altera\17.0\quartus\bin64 ну или другую папку в зависимости от используемой версии квартуса.
После этого, запуская «программатор» из среды квартуса можно обнаружить новый сетевой программатор (конечно если между вашим компьютером и распберри есть сеть/связь). Имя обнаруженного сетевого программатора содержит IP адрес распберри:
Далее все как обычно. Можно делать определение подключенного чипа, загружать ПЛИС.
Более того, сетевой программатор обнаруживается в Altera SignalTap и можно удаленно смотреть сигналы в анализируемой ПЛИС:
Конечно, пока это первая версия сетевого программатора. В процессе эксплуатации возможные баги будут находиться и исправляться.
Надеюсь этот инструмент покажется интересен читателям хабра, а кто-то возможно захочет использовать его в своей разработке.
Комментарии (6)
xztau
30.11.2017 09:18А под raspberry pi 2 будет работать?
А будет ли развиваться программатор MBTF, в частности драйвер под Linux?nckma Автор
30.11.2017 09:31С распберри пи2 работать будет.
И под Ubuntu Linux mbtfdi работает с квартусом: marsohod.org/11-blog/335-mbftdi-quartus-ubuntuxztau
30.11.2017 11:28Спасибо ребята!
Надо попробовать на своей marsohod 2 с Cyclone III. Есть нюансы работы драйверов на 13-м квартусе?
ValeriyS
30.11.2017 22:44Это супер круто! Уже год как мучаюсь пытаясь получить стабильную работу SignalTap over Ethernet (WiFi) без EthernetBlaster.
Купил за $7 USB Blaster clone на EBay, подключил к Raspberry PI 3 и установил VirtualHere USB Server на нём. На Windows 10 — VirtualHere USB Client. Основные операции проходят нормально — прошивка, запуск SignalTap, выгрузка внутренних данных и т.п. Однако долговременный коннект (with polling) нестабильный. Примерно через минуты две ожидания триггера SignalTap выдаёт ошибку — что-то вроде «Unexpected data». Когда этот USB Blaster подключен локально никаких проблем нет.
PS: ноутбук рядом поставить нельзя, т.к. устройство работает на улице.
Khort
«Сетевой программатор» используют уже два десятка лет. Рядом со стендом ставится ноут с программатором (BB1/2, USBblaster, MasterBlaster и т.д.), поднимается Altera JTAG сервер. На удаленной машине ставится клиентская часть. Всё, можно работать удаленно.
+ На ноуте еще часто делают удаленный ресет и включение питания стенда.
Kopart
Помню было время, когда на Linux в разы медленнее выгружались данные в Signaltap при подключении напрямую к Altera UsbBlaster'у. Исправлял подключением UsbBlaster к компьютеру с Windows и открытием «сетевого доступа» для Linux.