Не соображу даже, в каком разделе тему создавать.
На плате будет ПЛИС Xilinx Artix-7 и МК STM32F412. Допустим соединю в цепь JTAG МК и ПЛИС. Смогу ли работать с каждым из устройств с ST-Link/V2?
Вот таким:
http://www.st.com/content/st_com/en/produc...st-link-v2.htmlИли хоть каким-нибудь? Есть такой, что подойдет для обоих?
Или пусть разными, но чтобы с одного разъема?
С JTAG никогда не работал, обходился другими средствами.
iosifk
Aug 31 2016, 19:56
Цитата(ViKo @ Aug 31 2016, 22:38)

Не соображу даже, в каком разделе тему создавать.
На плате будет ПЛИС Xilinx Artix-7 и МК STM32F412. Допустим соединю в цепь JTAG МК и ПЛИС. Смогу ли работать с каждым из устройств с ST-Link/V2?
Вот таким:
http://www.st.com/content/st_com/en/produc...st-link-v2.htmlИли хоть каким-нибудь? Есть такой, что подойдет для обоих?
Или пусть разными, но чтобы с одного разъема?
С JTAG никогда не работал, обходился другими средствами.
Для начала проверяем, что в цепочке будут одинаковые питания или надо поставить переходники с 3,3 на 2,5 В...
потом берем 2 стартовых набора и соединяем их в цепь по JTAG и смотрим, может ли софт с ними работать...
Вот только в этом деле не все так просто...
Дело в том, что Xilinx хочет на JTAG поставить свои драйвера, а ST-Link - свои... Возможно, что для Xilinx удастся поставить Диджилентовские драйвера. Но не знаю, как там с ST-Link. Посмотрите на сайте Диджилента. Если у них есть что-то для ST-Link, то может быть удастся обойтись одной железкой...
Ну а так, люди делали коммутатор с двух адаптеров на один разъем...
Вот, к примеру, в Keil можно выбрать дюжину отладчиков, в том числе Altera Blaster Cortex Debugger, J-LINK.
А в Vivado не знаю, как задать, выбрать.
Сергей Борщ
Aug 31 2016, 20:52
ST-Link отлаживает только кортексы. С ARM7TDMI работать категорически отказался. Через клон J-LINK я работал с двумя AT91SAM7S64 в цепочке JTAG. Использовал ОpenOCD, отлажвал в одной эклипсе сразу две прошивки. Довольно забавно и удобно. То есть теоретически это возможно.
Через Sauris SAU510 ISO PLUS отлаживал в CCS одновременно через один JTAG-разъём два ядра: ARM9 и C674x (DSP).
Запускал спец. приложение (Parallel debug manager), которое подключалось к эмулятору, открывал два проекта, подключавшиеся в свою очередь к "Parallel debug manager" и работавшие независимо один от другого. В конфигураторе "Parallel debug manager"-а была возможность добавить ещё ядра, если таковые есть в цепочке.
Как понимаю, микросхема должна обнаружить в потоке данных свой идентификатор, а иначе передает данные транзитом. Выходит, нужно выдать такое количество тактов с данными, чтобы добраться до любой микросхемы. Это что же, JTAG выдает некие пустые такты, пока не прочитает нужный ответ?
В-общем, двумя разными отладчиками смогу добраться до любой из микросхем? Питания, конечно, будут правильными. Мне одновременно отлаживаться не обязательно. Могу и поочередно.
Не знаю как Artix-7, а Spartan-6 довольно чувствителен к разводке JTAG, у нас не на всех вариантах плат заработал. Не любит он длинные провода и фазу луны...
Цитата(_4afc_ @ Sep 1 2016, 08:17)

Не знаю как Artix-7, а Spartan-6 довольно чувствителен к разводке JTAG, у нас не на всех вариантах плат заработал. Не любит он длинные провода и фазу луны...
Видимо, важно еще, какой был соединительный кабель от отладчика к плате.
Буду делать все короткое и использовать малое. Про волновое сопротивление не забывать.
Цитата(ViKo @ Aug 31 2016, 22:38)

С JTAG никогда не работал, обходился другими средствами.
В режиме граничного сканирования с одного JTAGа можно работать с любыми комбинациями МК, ПЛИС и т.д. (с соблюдением правил конечно). Но этот режим не для разработки изделий, а для тестирования серийной продукции. Правда с некоторых пор стало доступно в этом режиме работать с некоторыми ядрами АРМ и ПЛИС на рабочих скоростях. Сам не пробовал, деталей не знаю.
Цитата(_4afc_ @ Sep 1 2016, 08:17)

Не знаю как Artix-7, а Spartan-6 довольно чувствителен к разводке JTAG, у нас не на всех вариантах плат заработал. Не любит он длинные провода и фазу луны...
Если несколько кристаллов в цепочке, то нужно особое внимание уделять разводке и согласованию линии TCK. Если все согласовано, то работает без проблем.
Цитата(ViKo @ Aug 31 2016, 23:18)

Вот, к примеру, в Keil можно выбрать дюжину отладчиков, в том числе Altera Blaster Cortex Debugger, J-LINK.
А в Vivado не знаю, как задать, выбрать.
На сколько я помню, Vivado "из коробки" поддерживает только родные Xilinxовские JTAG-адаптеры и их аналоги от Digilent'a + умеет работать с
XVC (Xilinx Virtual Cable). С помощью XVC и дополнительного сервера удавалось подружить самодельный JTAG-адаптер на FT2232H с Vivado. Общий пример, как этим пользоваться, есть у Xilinx. Ищется по ключевым словам "xvcd - The Xilinx Virtual Cable Daemon" или
по ссылке.
Цитата(makc @ Sep 1 2016, 11:08)

Если несколько кристаллов в цепочке, то нужно особое внимание уделять разводке и согласованию линии TCK. Если все согласовано, то работает без проблем.
Там TDO с кристалла кривой какой-то шел. Может драйвер на нем слабый...
У нас плисины на модулях. В одних мамках шьются на ура, в других ни в какую, в третьих через раз на низкой скорости.
Походу зависит от разводки. Причём где шьётся - можно даже проводами удлиннить JTAG - будет работать.
Я вижу, в одну цепь устройства соединяли. Так как же они распознаются? Что будет, если они однотипные?
Цитата(ViKo @ Sep 1 2016, 12:49)

Я вижу, в одну цепь устройства соединяли. Так как же они распознаются? Что будет, если они однотипные?
По порядковому номеру в цепочке + IDCODE. Если есть схема, то особых проблем нет.
по-моему, бОльшая проблема с софтом для отладки процессора (JLINK / STLINK)
теоретически, нужно переводить устройство в режим BYPASS, для этого нужно знать/задавать длину регистра инструкций у "другого" устройства (ее можно и измерить, но это не важно)
ПЛИСовые софты умеют это делать, по-крайней мере умели. а вот с процессорными у меня не получилось.
я тоже пытался так соединить, повозился с макетками (проц по-моему был ОМАП), но с тех пор ставлю всегда 2 JTAG-a
-----------
btw: открыл для себя недавно программку Universal Scan (см фтп) - думаю она без проблем возьмет сколько угодно устройств в цепочке (BSDL файлы только давай). вот только использоватьее можно, чтоб прозвонить плату, а отлаживать проц - вряд ли
Да-да, я тоже открыл Universal Scan, из вашей темы, спасибо iosifk. Сегодня, кстати, файл bsdl для STM32 своего скачал. Пригодится.
Цитата(yes @ Sep 1 2016, 19:11)

теоретически, нужно переводить устройство в режим BYPASS, для этого нужно знать/задавать длину регистра инструкций у "другого" устройства (ее можно и измерить, но это не важно)
ПЛИСовые софты умеют это делать, по-крайней мере умели. а вот с процессорными у меня не получилось.
OpenOCD вполне умеет. Кроме того с его помощью получается вполне успешно прошивать конфигурационный SPI-flash 25-й серии (W25Q32 и т.п.) на Spartan-3E/Spartan-6/Virtex-6 с помощью того же JTAG-адаптера.
Цитата(ViKo @ Sep 1 2016, 20:01)

Да-да, я тоже открыл Universal Scan, из вашей темы, спасибо iosifk. Сегодня, кстати, файл bsdl для STM32 своего скачал. Пригодится.
У Universal Scan проблемы с поддержкой сторонних JTAG-адаптеров и с работой под 64-разрядными версиями Windows (подглючивает).
Вот бы найти ему достойную замену, умеющую грузить BSDL и работать с периферийным сканированием в "ручном" режиме. Мечты.
Без больших заморочек при таком подключении TAP'ов получится работать только с одним из устройств в .. м-м-м, назовем это сессией работы с чипом. При этом для того, чтобы ST-Link позволял Vivado общаться с Artix'ом, нужно будет еще приспособить XVC (упоминался в треде maks'ом). Т.е., например, запустили Vivado'вский программер, залили прошивку в FPGA, закрыли программер (ну, или как-то по-другому отпустили кабель). Потом запустили STM'вский IDE, и дальше уже в нем работаем с ST-Link. Такой сценарий будет работать.
А вот если нужно одновременно и с FPGA работать, и с STM32 - без спец. софта не обойтись. Например, рулить процессором и одновременно ловить что-нибудь ChipScope'ом просто так не выйдет.
Цитата(makc @ Sep 1 2016, 21:11)

У Universal Scan проблемы с поддержкой сторонних JTAG-адаптеров и с работой под 64-разрядными версиями Windows (подглючивает).
Вот бы найти ему достойную замену, умеющую грузить BSDL и работать с периферийным сканированием в "ручном" режиме. Мечты.
Ну какие же мечты? Я на своем сайте выкладывал такие исходники. Правда там только для LPT-адаптера... Для FT2232 я тоже делал, но сейчас уже наверное и не найду...
Цитата(iosifk @ Sep 1 2016, 22:16)

Ну какие же мечты? Я на своем сайте выкладывал такие исходники. Правда там только для LPT-адаптера... Для FT2232 я тоже делал, но сейчас уже наверное и не найду...
Под отдельную плату написать программу для периферийного сканирования можно, но во-первых неудобно, во-вторых оправдано по времени только для серийного тестирования. А если говорить про исследование прототипов/наладку опытных образцов/обучение, то нужно что-то с интуитивно-понятным интерфейсом, а-ля Universal Scan. В идеале, поддерживающее возможность автоматизации тестирования с помощью SVF или сценариев на каком-либо встроенном языке. Как это, например, грамотно сделано в OpenOCD, в котором живет микро-интерпретатор TCL (
Jim TCL).
Такие средства есть, например
Asset ScanWorks. Но, на мой взгляд, они уж слишком усложнены, по сравнению с Universal Scan, которому не хватает совсем чуть-чуть, чтобы быть очень удобным и гибким средством отладки и периферийного сканирования.
Цитата(Raven @ Sep 1 2016, 22:11)

Без больших заморочек при таком подключении TAP'ов получится работать только с одним из устройств в .. м-м-м, назовем это сессией работы с чипом. При этом для того, чтобы ST-Link позволял Vivado общаться с Artix'ом, нужно будет еще приспособить XVC (упоминался в треде maks'ом).
Кстати, по поводу XVC нужно сказать, что под ISE 14.7 + Impact он нормально с цепочками из нескольких элементов не работает, т.к. не умеет корректно переводить элементы цепочки в BYPASS и потом работать с получившейся усеченной цепочкой. Chipscope + XVC работает нормально, но у него свой сервер для работы с JTAG через XVC.
Цитата(makc @ Sep 1 2016, 21:11)

OpenOCD вполне умеет. Кроме того с его помощью получается вполне успешно прошивать конфигурационный SPI-flash 25-й серии (W25Q32 и т.п.) на Spartan-3E/Spartan-6/Virtex-6 с помощью того же JTAG-адаптера.
А в каком состоянии пины ПЛИС при прошивке W25Q32 через OpenOCD?
Я после прочтения
этой темы сильно задумался как шить флешки внутрисхемно... и не перейти ли вообще на загрузку ПЛИС из МК.
Цитата(_4afc_ @ Sep 2 2016, 00:29)

А в каком состоянии пины ПЛИС при прошивке W25Q32 через OpenOCD?
Пины находятся в нужном состоянии, т.к. временная прошивка ПЛИС, используемая в процессе прошивки SPI-flash, есть в исходниках и не совсем не сложно при трансляции сконфигурировать на нужное состояние неиспользуемых пинов.
Цитата(_4afc_ @ Sep 2 2016, 00:29)

... и не перейти ли вообще на загрузку ПЛИС из МК.
Это не всегда возможно, т.к. для ряда применений время до старта ПЛИС является критичным. Например, для плат расширения PCI/PCI Express. МК в этом случае гарантированное не успеет прогрузить рабочую прошивку в ПЛИС.
извиняюсь, за занудство.
а что удалось кому-то запустить JLINK с IAR-ом так, что в цепочке еще ПЛИС? где это сконфигурить или вообще можно узнать подробности?
а с GDB сервером через OpenOCD наверно можно, но как-то у меня ни работа IAR-а через gdbserver, ни OpenOCD (делал через него отладку элвисовского проца - так и не успел довести до ума, сдулся проект) особо положительных впечатлений не оставили...
-----------
ну и всякие сигналтапы/чипскопы для ПЛИС, тоже не очень понятно, как их конфигурить. если в загрузчиках (импакт и т.п.) можно было добавить в цепочку "чужой" чип, то с анализаторами как-то не видел явного способа...
Цитата(yes @ Sep 2 2016, 16:04)

ну и всякие сигналтапы/чипскопы для ПЛИС, тоже не очень понятно, как их конфигурить. если в загрузчиках (импакт и т.п.) можно было добавить в цепочку "чужой" чип, то с анализаторами как-то не видел явного способа...
Вот для того и нужен XVC. Он предоставит интерфейс к виртуальной цепочке, в которой только нужный вам чип.
Цитата(Raven @ Sep 2 2016, 16:43)

Вот для того и нужен XVC. Он предоставит интерфейс к виртуальной цепочке, в которой только нужный вам чип.
Ничего подобного XVC не делает, т.к. это просто средство для подключения абстрактного JTAG-адаптера, работающего со вполне реальной JTAG-цепочкой.
Что касается Chipscope, то он при инициализации цепочки позволяет задать длины IR неизвестных ему элементов, а дальше он их переводит в BYPASS и спокойно работает.
Цитата(makc @ Sep 2 2016, 18:52)

Ничего подобного XVC не делает, т.к. это просто средство для подключения абстрактного JTAG-адаптера ...
Да простит меня великий All за некоторую вольность в терминологии и отход от академичности в этом треде, но я это и имел в виду,- просто немного абстрагировался от деталей

.
Цитата(Raven @ Sep 5 2016, 17:25)

Да простит меня великий All за некоторую вольность в терминологии и отход от академичности в этом треде, но я это и имел в виду,- просто немного абстрагировался от деталей

.
Казнить нельзя помиловать.

Я пробовал сделать демона для XVC, который бы как раз делал виртуальную цепочку для JTAG, скрывая "лишние" кристаллы. Но не доделал, т.к. нашлось решение для программирования SPI Flash через OpenOCD, а ChipScope и так работал. Т.е. Ваш вариант тоже возможен, если очень захотеть. Готовых решений такого рода я не нашёл (с эмуляцией виртуальной цепочки).
Как понял, гарантии, что я Xilinx-овским JTAG-ом доберусь до Artix-а через STM32, дать нельзя.
И еще, для работы с STM32 можно использовать SW цепи, совпадающие с JTAG. Но, чтобы использовать SWO (JTDO), надо его иметь подключенным к STM32.
Значит, лучше я подключу в цепь JTAG сначала Artix, его JTDO передам в JTDI STM32, а JTDO c STM32 выдам на разъем JTAG.
И, на всякий случай, пущу линию JTDI с JTAG в обход Artix, закончу площадкой, или джамперами (о!) переключусь на JTDI STM32.
Годится?
Цитата(ViKo @ Sep 9 2016, 15:00)

Как понял, гарантии, что я Xilinx-овским JTAG-ом доберусь до Artix-а через STM32, дать нельзя.
Можно, т.к. родной кабель работает без проблем. Максимум будут нужны BSDL-файлы для неизвестных Xilinx'овскому софту.
Но нужно обращать внимание на подключение и напряжения питания банков ПЛИС, в которых размещаются пины JTAG.
Цитата
И еще, для работы с STM32 можно использовать SW цепи, совпадающие с JTAG. Но, чтобы использовать SWO (JTDO), надо его иметь подключенным к STM32.
Значит, лучше я подключу в цепь JTAG сначала Artix, его JTDO передам в JTDI STM32, а JTDO c STM32 выдам на разъем JTAG.
И, на всякий случай, пущу линию JTDI с JTAG в обход Artix, закончу площадкой, или джамперами (о!) переключусь на JTDI STM32.
Годится?
Запас карман не тянет, можно предусмотреть обход. Хуже не будет.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.