Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Работаем с ПЛИС, области применения, выбор _ Digilent программатор Xilinx

Автор: ADA007 Aug 6 2013, 09:34

Приветствую всех форумчан!

Подскажите, кто пользовал http://electronix.ru/redirect.php?http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,923&Prod=JTAG-SMT1 Действительно ли "Compatible with all Xilinx tools" ? И все ли там так гладко, как они пишут? Привлекает цена самой ftdi-ки, но смущают подводные камни.

ЗЫ. не зря же http://electronix.ru/redirect.php?http://www.mikrocontroller.net/topic/142358#1399176 лепили полную копию оригинального DLC10... laughing.gif

Автор: DASM Aug 6 2013, 09:42

Я пользую, потому что в ZedBoard он попросту распаян. А какие требования то ?

Автор: KPiter Aug 6 2013, 09:47

Цитата(DASM @ Aug 6 2013, 13:42) *
в ZedBoard он попросту распаян

Не только в ней, на всех последних отладочных платах 7 серии

Автор: dsmv Aug 6 2013, 09:54

Я использовал HS2: http://electronix.ru/redirect.php?http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,1052&Prod=JTAG-HS2


Работает. Требует дополнительный plugin для ISE


Автор: fractcon Aug 6 2013, 10:04

Подводных камней там всего один, он не поддерживает Chipscope и EDK судя по всему.
То есть все что с ним можно сделать это зашить прошивку. В этом смысле разница с оригиналом как между программатором и эмулятором.

Автор: rloc Aug 6 2013, 10:30

http://electronix.ru/redirect.php?http://www.digilentinc.com/Products/Detail.cfm?Prod=DIGILENT-PLUGIN

Автор: Maverick Aug 6 2013, 10:41

Цитата(fractcon @ Aug 6 2013, 13:04) *
Подводных камней там всего один, он не поддерживает Chipscope и EDK судя по всему.
То есть все что с ним можно сделать это зашить прошивку. В этом смысле разница с оригиналом как между программатором и эмулятором.

http://electronix.ru/redirect.php?http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,923&Prod=JTAG-SMT1:
Цитата
The JTAG-SMT1 is a compact, complete and fully self-contained surface-mount programming module for Xilinx FPGAs. It can be accessed directly from all Xilinx tools, including iMPACT, Chipscope, and EDK. The module can be loaded directly onto a target board and reflowed like any other component.

???

Тогда расскажите почему на http://electronix.ru/redirect.php?http://www.zedboard.org/ у меня все работает включая Chipscope и EDK?

Автор: alexr22b Aug 6 2013, 20:28

Цитата(fractcon @ Aug 6 2013, 14:04) *
Подводных камней там всего один, он не поддерживает Chipscope и EDK судя по всему.
То есть все что с ним можно сделать это зашить прошивку. В этом смысле разница с оригиналом как между программатором и эмулятором.


Все работает, толкько отладчик раз в 5 медленнее в пошаговой по сравнению с Xilinx USB JTAG.

Автор: ADA007 Aug 7 2013, 09:57

Цитата(alexr22b @ Aug 6 2013, 23:28) *
Все работает, толкько отладчик раз в 5 медленнее в пошаговой по сравнению с Xilinx USB JTAG.

Это хорошо...у нас главное, чтоб работало...А схемку данного девайса уже кто-то срисовал? а то на отладочных платах, там только квадрат нарисован и написано , что digilent programmer или что-то вроде того....поделитесь, если есть

Автор: Timmy Aug 7 2013, 16:51

Цитата(alexr22b @ Aug 7 2013, 00:28) *
Все работает, толкько отладчик раз в 5 медленнее в пошаговой по сравнению с Xilinx USB JTAG.

Это на одинаковой тактовой частоте? А то вдруг у Digilent по умолчанию 5МГц ставится, а у Xilinx - 25.
Цитата
А схемку данного девайса уже кто-то срисовал? а то на отладочных платах, там только квадрат нарисован

Схемку да, было бы интересно. Я пробовал подключать к плагину от Digilent свой ft2232 минимодуль, заточенный под Lattice, и он не распознаётся. Вроде конфигурационное ПЗУ должно быть чистое. Подозреваю, что у Digilent часть GPIO пинов ft2232 замкнуты друг на друга или питание/землю, и по ним софт определяет, родной девайс или левый. Это помимо наличия трансляторов уровня, но с ними и так всё ясно.

Автор: alexr22b Aug 7 2013, 19:14

Цитата(Timmy @ Aug 7 2013, 20:51) *
Это на одинаковой тактовой частоте? А то вдруг у Digilent по умолчанию 5МГц ставится, а у Xilinx - 25.


Digilent - 30 MHz (tired it at 15 & 10 MHz as well - no difference), Xilinx - 12 MHz.

Автор: akorud Aug 8 2013, 18:17

Все работает. И EDK и Chipscope. И куда быстрее и стабильнее родного.

Автор: alexr22b Aug 11 2013, 01:38

Цитата(akorud @ Aug 8 2013, 22:17) *
Все работает. И EDK и Chipscope. И куда быстрее и стабильнее родного.


Расскажите пожалуйста, как вам удалось добиться быстрой и стабильной работы от digilent jatg в EDK ? У меня их 4 штуки и я ни один не смог заставить в пошаговой отладке ходить быстрее чем одну строчку в 15 секунд. Может какие-то секретные параметры ? OS ? Linux ? Windows ? Я под Win7 64bit.
Тот что встроен в ZC706 board тоже медленный как черепаха при отладке, с Vivado hadware debug вообще не дружит - выкидывает EDK debugger напрочь.
Спасибо!

Автор: ADA007 Aug 13 2013, 12:01

Цитата(alexr22b @ Aug 11 2013, 04:38) *
У меня их 4 штуки ....


А не могли бы вы предоставить схемку данного чуда?....очень хочется повторить, особенно, если они на ftdi сделаны..а то делать/покупать клон на DLC9 как-то сложновато и карман жмет...

Автор: ADA007 Dec 3 2013, 07:23

На днях собрал по типовой схеме с ДШ на макетке FT2232H - как ни странно - после установки драйверов от digilent, что идут в комплекте с ISE 14.6 данная штука не заработала. По этому хотел уточнить некоторые детали у тех, кто пользуется оригиналом.
1) Какой vid/pid показывает устройство в списке? 0403:6010 или иное?
2) Откуда берется = "Digilent Plugin: Product ID: F030012D" и "Digilent Plugin: Firmware Version: 011B" ... вроде бы на фотке с оф. сайта digilent-a нет eeprom?
3) Неужели никто не хочет помочь сделать клон, дабы не нарушать авторских прав? (я же не для коммерческих целей делаю) laughing.gif

Автор: Timmy Dec 3 2013, 07:49

Цитата(ADA007 @ Dec 3 2013, 11:23) *
На днях собрал по типовой схеме с ДШ на макетке FT2232H - как ни странно - после установки драйверов от digilent, что идут в комплекте с ISE 14.6 данная штука не заработала. По этому хотел уточнить некоторые детали у тех, кто пользуется оригиналом.
1) Какой vid/pid показывает устройство в списке? 0403:6010 или иное?
2) Откуда берется = "Digilent Plugin: Product ID: F030012D" и "Digilent Plugin: Firmware Version: 011B" ... вроде бы на фотке с оф. сайта digilent-a нет eeprom?
3) Неужели никто не хочет помочь сделать клон, дабы не нарушать авторских прав? (я же не для коммерческих целей делаю) laughing.gif

Могу написать программку для сканирования GPIO портов оригинального адаптера для проверки моего предположения о методе детектирования оригинальности адаптера. Идея в том, что все порты переключаются на ввод, затем делается цикл на 32 шага по всем битам GPIO. Текущий бит переключается на вывод 0, в лог пишутся состояния всех 32 бит GPIO, затем текущий бит переключается на вывод 1, в лог пишутся состояния всех 32 GPIO, затем переключаем текущий бит на ввод и переходим к сканированию следующего. Так можно обнаружить все подтяжки и закоротки. Только у меня сейчас нет под рукой ft2232, чтобы это отладить. И ещё понадобится оригинал, чтобы отсканировать.
"Digilent Plugin: Product ID: F030012D" - это, думаю, идентификатор плагина, а не адаптера.

Автор: ADA007 Dec 3 2013, 09:32

Цитата(Timmy @ Dec 3 2013, 09:49) *
... И ещё понадобится оригинал, чтобы отсканировать. ...

Вот поэтому и написал на форум т.к. оригинала сам под рукой не имею....Был бы оригинал - уже б даже мультиметром вызвонил куда какие ноги идут... rolleyes.gif
Может кто еще откликнется, у кого оригинал есть...

Автор: Dmitriyspb Dec 3 2013, 10:00

Китайский аналог американского программатора стоит порядка 2-х т.р. Думаю это многим доступно

Автор: rloc Dec 3 2013, 10:04

Отвечаю на вопросы:
1) Замкнуты ADBUS0 и ADBUS4.
2) EEPROM есть на всех платах - 93LC56BT (для HS2 и SMT2 VID_PID=0403_6014).
3) ADBUS7 можно управлять третьим состоянием буферов JTAG-выходов (0 - третье состояние).
4) ACBUS5 используется для сброса Zync, либо как GPIO2, ACBUS4 переводит выходной буфер в третье состояние, либо меняет направление (1 - выход, 0 - вход или третье состояние).
5) ACBUS0/ACBUS1 в SMT2 дополнительно используются для GPIO0/GPIO1, ACBUS3/ACBUS4 - для управления направлением соответствующих буферов GPIO (1 - выход, 0 - вход или третье состояние).
6) ADBUS5/ADBUS6 в HS2 и SMT2 дополнительно используются для режима SPI (подробности опускаю).


Цитата(Dmitriyspb @ Dec 3 2013, 14:00) *
Китайский аналог американского программатора стоит порядка 2-х т.р.

Handmade, а-ля диджилент, стоит порядка 10 уе, работает быстрее, обеспечен поддержкой ISE (через plugin), встраивается во все платы и дополнительно дает возможность управления по USB.

Автор: yes Dec 3 2013, 10:07

а фузы (ОТР) в spartan6 он прошивать умеет?
а то старые ксайлинские кабеля не позволяют, а "новый" (красный) все никак не доедет до меня

Автор: Dmitriyspb Dec 3 2013, 10:32

Цитата(rloc @ Dec 3 2013, 14:04) *
Handmade, а-ля диджилент, стоит порядка 10 уе, работает быстрее, обеспечен поддержкой ISE (через plugin), встраивается во все платы и дополнительно дает возможность управления по USB.

Если только цена выгоднее

Автор: rloc Dec 3 2013, 10:49

Цитата(yes @ Dec 3 2013, 14:07) *
а фузы (ОТР) в spartan6 он прошивать умеет?

С фузами не работал, но надежд на положительный исход мало судя по http://electronix.ru/forum/index.php?showtopic=24441&view=findpost&p=1123791.

Автор: ADA007 Dec 3 2013, 11:21

Цитата(rloc @ Dec 3 2013, 12:04) *
Отвечаю на вопросы...

Большое спасибо за ответы. А JTAG, как я понимаю, подключен к ADBUS0 - TCK, ADBUS1 - TDI, ADBUS2 - TDO, ADBUS3 - TMS?
Попробовал замкнуть ADBUS0-ADBUS4 - кабель пока не определился, но еще надо vid/pid сменить для чистоты эксперимента.

Автор: Timmy Dec 3 2013, 11:30

Цитата(ADA007 @ Dec 3 2013, 15:21) *
Большое спасибо за ответы. А JTAG, как я понимаю, подключен к ADBUS0 - TCK, ADBUS1 - TDI, ADBUS2 - TDO, ADBUS3 - TMS?
Попробовал замкнуть ADBUS0-ADBUS4 - кабель пока не определился, но еще надо vid/pid сменить для чистоты эксперимента.

vid/pid менять не надо, они там дефолтовые, PID 6014 - это ft232H, в HS2, очевидно, именно этот чип, а 2232 в HS1. Есть ещё вероятность, что идентификатор хранится в user area of eeprom.

Автор: ADA007 Dec 3 2013, 14:42

Цитата(Timmy @ Dec 3 2013, 13:30) *
Есть ещё вероятность, что идентификатор хранится в user area of eeprom.


Да...вот судя из этого лога загрузки HS1 устройства

[code]
INFO:iMPACT - Digilent Plugin: found 1 device(s).
INFO:iMPACT - Digilent Plugin: opening device: "JtagHs1", SN:210205305973
INFO:iMPACT - Digilent Plugin: User Name: JtagHs1
INFO:iMPACT - Digilent Plugin: Product Name: Digilent JTAG-HS1
INFO:iMPACT - Digilent Plugin: Serial Number: 210205305973
INFO:iMPACT - Digilent Plugin: Product ID: 30700150
INFO:iMPACT - Digilent Plugin: Firmware Version: 0001
INFO:iMPACT - Digilent Plugin: JTAG Port Number: 0
INFO:iMPACT - Digilent Plugin: JTAG Clock Frequency: 10000000 Hz
INFO:iMPACT - Digilent Plugin: Opening device : "SN:210205305973".
INFO:iMPACT - Digilent Plugin: User Name: JtagHs1
INFO:iMPACT - Digilent Plugin: Product Name: Digilent JTAG-HS1
INFO:iMPACT - Digilent Plugin: Serial Number: 210205305973
INFO:iMPACT - Digilent Plugin: Product ID: 30700150
INFO:iMPACT - Digilent Plugin: Firmware Version: 0001
INFO:iMPACT - Digilent Plugin: JTAG Port Number: 0
INFO:iMPACT - Digilent Plugin: JTAG Clock Frequency: 125000 Hz
INFO:iMPACT - Current time: 8/1/2011 10:23:09 AM
PROGRESS_START - Starting Operation.
Maximum TCK operating frequency for this device chain: 10000000.
Validating chain...
Boundary-scan chain validated successfully.
'1': Erasing device...
'1': Erasure completed successfully.
PROGRESS_END - End Operation.
Elapsed time = 0 sec.
INFO:iMPACT - Current time: 8/1/2011 10:23:11 AM
PROGRESS_START - Starting Operation.
Maximum TCK operating frequency for this device chain: 10000000.
Validating chain...
Boundary-scan chain validated successfully.
'1': Putting device in ISP mode...done.
'1': Putting device in ISP mode...done.
'1': Performing blank check on device ...
'1': Device is blank.
'1': Blank check completed successfully.
PROGRESS_END - End Operation.
Elapsed time = 0 sec.
INFO:iMPACT - Current time: 8/1/2011 10:23:13 AM
PROGRESS_START - Starting Operation.
Maximum TCK operating frequency for this device chain: 10000000.
Validating chain...
Boundary-scan chain validated successfully.
'1': Programming device...
'1': Programming terminated due to errors.
PROGRESS_END - End Operation.
Elapsed time = 1 sec.
[code]

Мы имеем дело с Serial Number и Product ID + Product Name. И если верить http://electronix.ru/redirect.php?http://www.mikrocontroller.net/topic/271893, то в EEPROM надо вписать вот это



Но у меня есть сомнения по поводу всей конфигурации девайса....Мог бы кто-нибудь подключить FT-Prog или Mprog и вычитать содержимое EEPROM на своем JTAG-HS1?

ЗЫ: а то у меня не получается пока что записать EEPROM так, как на рисунке.

Автор: rloc Dec 3 2013, 18:30

Цитата(ADA007 @ Dec 3 2013, 15:21) *
А JTAG, как я понимаю, подключен к ADBUS0 - TCK, ADBUS1 - TDI, ADBUS2 - TDO, ADBUS3 - TMS?

Да, все как в даташите на режим JTAG написано.

В user-area в EEPROM с адреса 0x50 по 0x79 прописаны: фирма, название и серийный номер. Например для HS2
Код
0050: 1203 4400 6900 6700 6900 6C00 6500 6E00
0058: 7400 2803 4400 6900 6700 6900 6C00 6500
0060: 6E00 7400 2000 5500 5300 4200 2000 4400
0068: 6500 7600 6900 6300 6500 1A03 3000 3100
0070: 3200 3300 3400 3500 3600 3700 3800 3900
0078: 3000 3100 0203 0000 0000 0000 0000 102D


После перевода из HEX:
фирма - Digilent
название - Digilent USB Device
серийный номер - 012345678901

Автор: ADA007 Dec 5 2013, 14:38

Значит ни кто не использует SMT1 на FT2232H получается? Я сомневаюсь, что если я залью данные, как пишет rloc в свой программатор - он не заработает.
Попробовал залить туда данные, как написано на форуме микроконтроллера =>
http://electronix.ru/redirect.php?http://fastpic.ru/
В результате - FTDI - неадекватно пропарсила данные. Поскольку FT-Prog почему-то записывает Product Description через 1 байт.
Итак....на текущий момент я считаю, что:
1. Product Description: Digilent JTAG-SMT1 , Manufacturer: JtagSmt1 , Serial Number: 210203367162 , ID: FT
2. По портам = все два в режиме 245FIFO и драйвер D2xx

Вот в такой конфигурации записываю по FT-Prog данные - impact девайс не распознает. В списке устройств win показывает, что Составное USB устройство + 2-а порта А и В находит.

Предлагайте свои варианты заливки EEPROM или конфигурации...Можно в hex виде - или как удобно - буду пробовать.

Автор: Flood Dec 6 2013, 21:31

Все правильно пишут, но на приведенной картинке только половина дампа - как раз пользовательская зона.
Там, где "через один байт" - штатные Unicode строки идентификации FTDI. А на картинке - пользовательские, проверяемые плагином.
Перешивать пользовательскую зону FT_Prog не может, надо делать свой софт (или найти готовый, который умеет).

Цитата(rloc @ Dec 3 2013, 14:49) *
С фузами не работал, но надежд на положительный исход мало судя по http://electronix.ru/forum/index.php?showtopic=24441&view=findpost&p=1123791.

Фузы шьет только красная коробочка (DLC10), и вроде бы только под Windows.

Автор: ADA007 Dec 7 2013, 19:23

Цитата(Flood @ Dec 6 2013, 23:31) *
Перешивать пользовательскую зону FT_Prog не может....

Так программатор-то есть..я просто не могу догнать что в eeprom шить, слегка запутался с этими областями. Есть ли дока с описанием областей (а то в ДШ на FTDI - про EEPROM только две строки написано)? Напишите, пожалуйста, полный dump памяти - я залью.

Автор: ADA007 Dec 11 2013, 12:28

Цитата(Flood @ Dec 6 2013, 23:31) *
Там, где "через один байт" - штатные Unicode строки идентификации FTDI. А на картинке - пользовательские, проверяемые плагином.
Перешивать пользовательскую зону FT_Prog не может, надо делать свой софт (или найти готовый, который умеет).


В общем в край меня запутали.
rloc - пишет, что у него пользовательские данные начинаются с адреса 0х50 до 0х7F (причем память, видимо, 2к стоит типа 93с56).

Вот полный dump моей памяти, у меня 94c46 стоит (1к), данные записаны через FT_Prog.
Код
00000000   01 01 04 03  60 10 07 00  32 80 00 08  00 00 12 9A   ....`...2.......
00000010   26 AC 1A D2  00 00 00 00  00 46 03 12  00 4A 00 74  &........F...J.t
00000020   00 61 00 67  00 53 00 6D  00 74 00 31  03 26 00 44   .a.g.S.m.t.1.&.D
00000030   00 69 00 67  00 69 00 6C  00 65 00 6E  00 74 00 20   .i.g.i.l.e.n.t.
00000040   00 4A 00 54  00 41 00 47  00 2D 00 53  00 4D 00 54  .J.T.A.G.-.S.M.T
00000050   00 31 03 1A  00 32 00 31  00 30 00 32  00 30 00 33   .1...2.1.0.2.0.3
00000060   00 33 00 33  00 37 00 37  00 38 00 37  00 00 00 00   .3.3.7.7.8.7....
00000070   00 00 00 00  00 00 00 00  00 00 00 00  00 00 5B 92   ..............[.


Так вот, здесь как раз user-space или совсем маленькая, или все-таки FT-Prog умеет писать пользовательские данные. Еще надо отметить, что текстовые данные записаны в unicode. с адреса 0x1D и аж до 0х6С - все записал FT-Prog из полей Product Description , Manufacturer, Serial Number соответственно.

Так все-таки какое должно быть наполнение памяти?
Или надо больше ставить на 2к eeprom, чтобы в нее больше user-data поместилось?

Автор: Corner Dec 13 2013, 16:08

Есть у меня HW-USB модуль на FT4232. Кто подскажет - допилить, чтобы ксилинкс поддерживал можно?

Автор: ADA007 Dec 17 2013, 09:04

Цитата(rloc @ Dec 3 2013, 20:30) *
Например для HS2...


Как думаете, если подсунуть impact-у HS2 сделанный не на ft232h , а на ft2232h (двухпортовом) - будет работать? (по идее система команд в драйвере у них должна быть одинаковая на 1-й порт)
и было бы здорово иметь полный dump с eeprom для hs2 - чтобы это попробовать, а не только с 0x50 до 0х78...

Автор: rloc Dec 17 2013, 11:12

HS2 full dump

Код
Read EEPROM Device 0
Word
0000: 0100 0304 1460 0009 80FA 0800 0000 A012
0008: B228 DA1A 0000 0000 0000 0000 0000 5600
0010: 0100 C792 6A35 5201 9030 4A74 6167 4873
0018: 3200 0000 0000 0000 0000 0044 6967 696C
0020: 656E 7420 4A54 4147 2D48 5332 0000 0000
0028: 0000 0000 0000 0000 1100 0000 0000 0000
0030: 0000 0000 0000 0000 0000 0000 0000 0000
0038: 0000 0000 0000 0000 0000 0000 0000 0000
0040: 0000 0000 0000 0000 0000 4800 0000 0000
0048: 0000 0000 0000 0000 0000 0000 0000 0000
0050: 1203 4400 6900 6700 6900 6C00 6500 6E00
0058: 7400 2803 4400 6900 6700 6900 6C00 6500
0060: 6E00 7400 2000 5500 5300 4200 2000 4400
0068: 6500 7600 6900 6300 6500 1A03 3200 3100
0070: 3000 3200 3400 3900 3800 3500 3400 3600
0078: 3000 3600 0203 0000 0000 0000 0000 102D


Автор: ADA007 Jan 9 2014, 13:16

Цитата(rloc @ Dec 17 2013, 13:12) *
HS2 full dump


Огромное спасибо за dump/ Однако, по ниму есть вопрос:
в ДШ (AN_121_FTDI_Device_EEPROM_User_Area_Usage) про user area сказано, что =
Цитата

First Block=
Size – 128 bytes.
The start address of the user area within this 1st block is as follows:
Start Address = 0x14 (for FT232B and FT245B)
0x16 (for FT2232D)
0x1A (for FT2232H and FT4232H)

Т.е. вроде как user area должна начинаться с 0х14 в вашем случае.

У себя я наблюдаю следующую картину =
Код
Read EEPROM Device 0
Word
0000: 0101 0304 1460 0007 8032 0800 0000 9A12
0008: AC28 D41A 0000 0000 5600 0100 C792 6A35
0010: 5201 9030 4A74 6167 4873 3200 0000 0000
0018: 0000 0000 0044 6967 696C 656E 7420 4A54
0020: 4147 2D48 5332 0000 0000 0000 0000 0000
0028: 0000 1100 0000 0000 0000 0000 0000 0000
0030: 0000 0000 0000 0000 0000 0000 0000 0000
0038: 0000 0000 0000 0000 0000 0000 0000 0000
0040: 0000 0000 0000 0048 0000 0000 0000 0000
0048: 0000 0000 0000 0000 0000 1203 4400 6900
0050: 6700 6900 6C00 6500 6E00 7400 2803 4400
0058: 6900 6700 6900 6C00 6500 6E00 7400 2000
0060: 5500 5300 4200 2000 4400 6500 7600 6900
0068: 6300 6500 1A03 3200 3100 3000 3200 3400
0070: 3900 3800 3500 3400 3600 3000 3600 0000
0078: 0000 0000 0000 0000 0000 0000 0000 6D4A

Как видно из моего dump-a - последним словом перед user area было 0х5600 далее по смещению 0х1А будут находиться user area data.
Однако, у Вас слово 0х5600 находится по смещению дальше моего и user area у вас начинается со смещения 0х20.

Следовательно вопрос: почему 0х20 вместо 0х14? blink.gif

ЗЫ: Правильно ли я понимаю, что CRC16, что стоит в конце eeprom, от user area не считается? rolleyes.gif

Автор: alver Jan 9 2014, 15:00

Цитата(ADA007 @ Jan 9 2014, 17:16) *
Т.е. вроде как user area должна начинаться с 0х14 в вашем случае.

Не вижу в списке FT232H

Автор: ADA007 Jan 9 2014, 19:13

Цитата(alver @ Jan 9 2014, 17:00) *
Не вижу в списке FT232H

Потому, что про user area упоминают FTDI только http://electronix.ru/redirect.php?http://www.ftdichip.com/Support/Documents/AppNotes/AN_121_FTDI_Device_EEPROM_User_Area_Usage.pdf. И больше ничего не нашел про это - вот и подумал, что распространяется на всю серию микросхем FT232x.
К тому же ребята с http://electronix.ru/redirect.php?http://sigrok.org/wiki/IKALOGIC_ScanaPLUS используют тот же 232h и ссылаются на тот же документ, что я привел выше.
Если кто подскажет, где написано конкретно про ft232h - буду очень благодарен.

Автор: rloc Jan 9 2014, 19:58

Действительно, FT232H несколько отличается от остальных. Из открытых источников http://electronix.ru/redirect.php?http://www.intra2net.com/en/developer/libftdi/ можно выудить следующий код:

Код
    // eeprom size check
    switch (ftdi->type)
    {
        case TYPE_AM:
        case TYPE_BM:
            user_area_size = 96;    // base size for strings (total of 48 characters)
            break;
        case TYPE_2232C:
            user_area_size = 90;     // two extra config bytes and 4 bytes PnP stuff
            break;
        case TYPE_R:
            user_area_size = 88;     // four extra config bytes + 4 bytes PnP stuff
            break;
        case TYPE_2232H:            // six extra config bytes + 4 bytes PnP stuff
        case TYPE_4232H:
            user_area_size = 86;
            break;
        case TYPE_232H:
            user_area_size = 80;
            break;
        default:
            user_area_size = 0;
            break;
    }


Там есть и алгоритм вычисления чексуммы, который весьма далек от CRC16:

Код
    // calculate checksum
    checksum = 0xAAAA;

    for (i = 0; i < eeprom->size/2-1; i++)
    {
        value = output[i*2];
        value += output[(i*2)+1] << 8;

        checksum = value^checksum;
        checksum = (checksum << 1) | (checksum >> 15);
    }

    output[eeprom->size-2] = checksum;
    output[eeprom->size-1] = checksum >> 8;

Автор: ADA007 Jan 10 2014, 08:54

Цитата(rloc @ Jan 9 2014, 21:58) *
Действительно, FT232H несколько отличается от остальных.


Спасибо, действительно отличается, код чипа (0x56) записывается =>

Код
ft2232h
output[0x18] = eeprom->chip;
ft232h
output[0x1e] = eeprom->chip;


т.е. user_area у 232h начинается действительно с 0х20 адреса...

Цитата(rloc @ Jan 9 2014, 21:58) *
Там есть и алгоритм вычисления чексуммы, который весьма далек от CRC16:


Судя из приведенного кода сумма считается от все памяти и похоже, что ftdi-ка не считывает данные, если контрольная сумма не правильная... laughing.gif

Автор: ADA007 Jan 16 2014, 11:38

Все оказалось до безобразия просто.

Цитата(Flood @ Dec 6 2013, 23:31) *
Перешивать пользовательскую зону FT_Prog не может, надо делать свой софт (или найти готовый, который умеет).

Так и получилось...пришлось написать свой софт, который использует функцию FT_EE_UAWrite. В общем алгоритм следующий, испытанный для FT2232H, которая была у меня под рукой:
1. В FT_Prog-e настраиваем Product Description, Manufacturer, Serial Number, порты в режим 245FIFO и драйвер D2xx - записываем в EEPROM.
2. Прописываем User_Area из дампа в http://electronix.ru/forum/index.php?showtopic=114633&view=findpost&p=1219333 от rloc вписываем данные. User_Area там по адресам с 0х0010 по 0х002С в конце добавляем необходимое кол-во байт 0х00 в зависимости от типа ftdi и используемой eeprom.
Контрольная сумма считается автоматически драйвером ftdi при записи eeprom.
Расположение ног расписано несколькими http://electronix.ru/forum/index.php?showtopic=114633&view=findpost&p=1215497. ADBUS0 и ADBUS4 замыкать не нужно - и так все работает!

В общем можно это отдельной статьей оформить, чтоб не затерялась инфа на просторах форума, главное, чтобы Digilent не обиделись rolleyes.gif
ЗЫ: vid/pid нужно оставлять оригинальными, а иначе не из той области eeprom будет вычитываться.

Автор: rloc Jan 16 2014, 13:05

Поздравляю! ПЛИС прошивали?

Цитата(ADA007 @ Jan 16 2014, 15:38) *
ADBUS0 и ADBUS4 замыкать не нужно - и так все работает!

Предполагаю, в какой-то из версий вместо этой перемычки была петля по печатной плате по длине JTAG-цепочки для определения задержки тактового сигнала и автоматической установки максимальной частоты. Владельцы ZedBoard, откликнитесь!

Автор: ADA007 Jan 16 2014, 13:47

Цитата(rloc @ Jan 16 2014, 15:05) *
Поздравляю! ПЛИС прошивали?

Да...прошивал...кабель определяется impact-ом как HS2...на днях еще попробую ChipScope

Автор: rloc Jan 16 2014, 13:56

Возьму на заметку, пока использовал только FT232H: мультиплексировал между JTAG и пользовательскими данными. С дополнительным портом проще.

Автор: rloc Jan 17 2014, 17:54

Ради такого случая решил поиздеваться над FT4232H mini module. В 14.7 версии софта импакт находит устройство, как программатор Digilent, это видно по лог-файлу, но потом выдает ошибку - "failed to open device handle". Так что не все йогурты одинаково полезны. И еще подтверждаю - доступа к eFUSE регистрам через Digilent нет, даже меню соответствующее не появляется, через Platform Cable на той же плате все программируется. Алгоритм расчета контрольной суммы в драйверах D2XX - какой-то свой, не CRC16 и не как в libftdi.

Автор: ADA007 Jan 20 2014, 19:21

Цитата(rloc @ Jan 17 2014, 19:54) *
Алгоритм расчета контрольной суммы в драйверах D2XX - какой-то свой, не CRC16 и не как в libftdi...

Я тут только что проверил алгоритм подсчета вот этот
Код
    // calculate checksum
    checksum = 0xAAAA;

    for (i = 0; i < eeprom->size/2-1; i++)
    {
        value = output[i*2];
        value += output[(i*2)+1] << 8;

        checksum = value^checksum;
        checksum = (checksum << 1) | (checksum >> 15);
    }

    output[eeprom->size-2] = checksum;
    output[eeprom->size-1] = checksum >> 8;


Он рабочий....мне удалось с его помощью посчитать выложенный вами dump и свой тоже - все сошлось (правда пришлось немного допилить,чтобы идея суммы сохранилась)...сырцы прилагаю, если что
ЗЫ: за код больно не бить....писал на скорую руку

 main.c.tar ( 10 килобайт ) : 158
 

Автор: rloc Jan 20 2014, 19:36

Опа, никак под Линукс проверяли? Т.е. еще не факт, что FT2232H под Виндоус подойдет. Код завтра проверю. По-началу писал побайтно и контрольную сумму вычислял сам, но Импакт не видел программатор, потом - через запись юзеровской области целым блоком, драйвера сами посчитали контрольную сумму и все определилось.

Автор: ADA007 Jan 20 2014, 20:35

Цитата(rloc @ Jan 20 2014, 21:36) *
Опа, никак под Линукс проверяли?
....
драйвера сами посчитали контрольную сумму и все определилось.

Да, изготовленный мною девайс и под linux и под windows проверял - все работает.
Контрольную сумму вписывал при помощи драйвера - записывал целым блоком user area.

Автор: Maverick Jan 20 2014, 21:24

Цитата(ADA007 @ Jan 20 2014, 22:35) *
Да, изготовленный мною девайс и под linux и под windows проверял - все работает.
Контрольную сумму вписывал при помощи драйвера - записывал целым блоком user area.

a14.gif

PS попробую проверить на Zedboard

Автор: rloc Jan 21 2014, 05:50

Так у ZedBoard уже должна быть родная поддержка программирования через JTAG:

Цитата
Onboard USB-JTAG Programming


Скиньте лучше копию EEPROM, например через FT_PROG.

Или у Вас microZed? Там другой чип.

Получается UM232H-B - самая дешевая альтернатива внешним программаторам от 15 уе.

Автор: Maverick Jan 22 2014, 07:05

Вот результаты, что у человека (у которого сейчас находиться моя плата) получилось (далее текст письма в котором он мне прислал). В файле картинки. Вначале следовал инструкциям, указанным на форуме, но это результата не принесло: ни в impact, ни в chipscope, устройство не определялось. Затем решил посмотреть в сторону программатора от ZedBoard: подключил его, прочитал с помощью FT_Prog и сохранил шаблон (серийный номер, правда, потом пришлось прописать вручную). Подключил FTDI и залил шаблон туда. После этого содержимое памяти изменяется, но программными средствами указанными выше не распознается. Далее с помощью программы записал содержимое user area в EEPROM аналогично тому, что для программатора. Программа простая: содержит сам массив который нужно записать и обращения к функциям для записи в память. Правда, одно слово из памяти записать в нужное место не получалось - оставил нули. После этого в impact все определилось как показано на рисунках.
Содержимое EEPROM программатора от ZedBoard во вложении.
Коментарий от человека:
Пред-предпоследнее слово (0x0203) записать не получилось. Когда записываю его, то оно получается, либо предпоследним, либо перед блоком описания (начинается с 0х1203). Интересно узнать почему так происходит...

 FT2232H_to_Digilent.pdf ( 221.31 килобайт ) : 748
 EEPROM_Digilent.txt ( 804 байт ) : 591
 

Автор: rloc Jan 22 2014, 09:10

Цитата(Maverick @ Jan 22 2014, 11:05) *
Содержимое EEPROM программатора от ZedBoard во вложении.

Не пойму, зачем ZedBoard отдельный программатор, когда на плате есть интегрированный на FT232H? У Вас точно http://electronix.ru/redirect.php?http://digilentinc.com/Products/Detail.cfm?NavPath=2,400,1028&Prod=ZEDBOARD? Присланный файл соответствует HS1.

Автор: iosifk Jan 22 2014, 09:55

Цитата(rloc @ Jan 21 2014, 09:50) *
Получается UM232H-B - самая дешевая альтернатива внешним программаторам от 15 уе.

У меня вот какой вопрос.
По исходному, когда в памяти FTDI "родная" прошивка, то чип работает с "родными" драйверами...
А вот после того, как Вы прошивку поменяли и запущена ISE, можно ли при этом запустить самодельную программу с драйверами как при исходном состоянии... Или же теперь будут работать только Ксайлинсовские драйвера... Или надо выключать ISE и только после этого включать свою программу???


Автор: rloc Jan 22 2014, 10:55

Цитата(iosifk @ Jan 22 2014, 13:55) *
У меня вот какой вопрос.

Xilinx работает с Digilent через http://electronix.ru/redirect.php?http://digilentinc.com/Products/Detail.cfm?NavPath=2,66,768&Prod=DIGILENT-PLUGIN, который в свою очередь обращается через D2XX. Поэтому если своя программа тоже работает через D2XX, то одновременная работа возможна. Т.е. закрывать ничего не надо, но работать с микросхемой желательно поочередно, принцип такой: handle открыл - поработал - handle закрыл - передал управление другой программе. Так у меня сейчас и работает: FT_PROG, Impact и UserProg одновременно. Одновременность доступа не отслеживаю, не силен в программировании на С.

Автор: iosifk Jan 22 2014, 11:16

Цитата(rloc @ Jan 22 2014, 14:55) *
Xilinx работает с Digilent через http://electronix.ru/redirect.php?http://digilentinc.com/Products/Detail.cfm?NavPath=2,66,768&Prod=DIGILENT-PLUGIN, который в свою очередь обращается через D2XX. Поэтому если своя программа тоже работает через D2XX, то одновременная работа возможна. Т.е. закрывать ничего не надо, но работать с микросхемой желательно поочередно, принцип такой: handle открыл - поработал - handle закрыл - передал управление другой программе. Так у меня сейчас и работает: FT_PROG, Impact и UserProg одновременно. Одновременность доступа не отслеживаю, не силен в программировании на С.

Понял, спасибо!
Тогда жду результатов, чтобы тоже попробовать.. У меня есть JTAG на 2232... И осталось поменять прошивку, так?


Автор: rloc Jan 22 2014, 11:28

Цитата(iosifk @ Jan 22 2014, 15:16) *
У меня есть JTAG на 2232...

Зачем перепрошивать? Через него и работать своей программой.

Автор: iosifk Jan 22 2014, 11:30

Цитата(rloc @ Jan 22 2014, 15:28) *
Зачем перепрошивать? Через него и работать своей программой.

Своей давно опробовано. Теперь хочется и Импакт научить...

Автор: Maverick Jan 22 2014, 14:57

Цитата(rloc @ Jan 22 2014, 11:10) *
Не пойму, зачем ZedBoard отдельный программатор, когда на плате есть интегрированный на FT232H? У Вас точно http://electronix.ru/redirect.php?http://digilentinc.com/Products/Detail.cfm?NavPath=2,400,1028&Prod=ZEDBOARD? Присланный файл соответствует HS1.

я знаю что программатор есть на плате, просто было любопытство проделать и запрограммировать c помощью другой платы с FTDI

Автор: ADA007 Mar 5 2014, 07:21

Статья по это теме была опубликована в журнале http://electronix.ru/redirect.php?http://kit-e.ru/articles/memory/2014_3_58.php. Процедура клонирования там расписана подробно, а так же в рамках статьи расписал назначение полей памяти и возможные способы ее использования. rolleyes.gif

Автор: rloc Mar 5 2014, 07:24

iosifk помог?

Автор: ADA007 Mar 11 2014, 08:11

Цитата(rloc @ Mar 5 2014, 09:24) *
iosifk помог?

Да...iosifk и Maverick помогли, за что большое и человеческое им спасибо.

Автор: kleverd Apr 26 2014, 20:04

Недавно у меня оказался в руках программатор Digilent HS2. Выглядит очень достойно. Компактен и стоит сравнительно недорого.
Плисы шьет быстро. Spartan3e с 500 киловентилями прошивает за несколько секунд.
Пользуясь случаем решил его немного поисследовать.

Пытался его укротить UrJtag-ом и OpenOCD.
Проги девайс видят, но при детекте возникает ошибка - Warning: TDO seems to be stuck at 1.
Эксперименты проводил с UrJtag 0.1 и OpenOCD версии 0.5-0.8. Притом Версия 0.8 не смогла получить доступ к устройству FTDI.

Как-то давно писал прогу для дерганья пинами ft232rl. Решил проверить как она будет дружить с 232HQ. И прога подружилась с микросхемой.
В результате выяснилось, что соответствие пинов микросхемы и выходов программатора следующее:
ADBUS5 - TMS
ADBUS6 - TDI
ADBUS7 - TCK

TDO найти таки не удалось. Как и говорил UrJtag - TDO seems to be stuck at 1.
Проверял только шину ADBUS. AСBUS моя прога дергать не умела.
Вывод - либо TDO подключен через буфер, который по умолчанию переведен в третье состояние, либо он заведен на AСBUS (маловероятно, нестандартная разводка?).


Вот содержимое EEPROM, считанное прогой Mprog:

Read EEPROM successful Device 0
0000 : 01 00 03 04 14 60 00 09 80 FA 08 00 00 00 A0 12 .. .. `. .. .. .. .. ..
0010 : B2 28 DA 1A 00 00 00 00 00 00 00 00 00 00 56 00 .. .. .. .. .. .. .. .V
0020 : 01 00 C7 92 6A 35 52 01 90 30 4A 74 61 67 48 73 .. .. 5j .R 0. tJ ga sH
0030 : 32 00 00 00 00 00 00 00 00 00 00 44 69 67 69 6C .2 .. .. .. .. D. gi li
0040 : 65 6E 74 20 4A 54 41 47 2D 48 53 32 00 00 00 00 ne .t TJ GA H. 2S .. ..
0050 : 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 .. .. .. .. .. .. .. ..
0060 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .. .. .. .. .. .. ..
0070 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .. .. .. .. .. .. ..

А вот содержимое того же еепрома, считанное прогой FTPROG
Read EEPROM Device 0
Word
0000: 0100 0304 1460 0009 80FA 0800 0000 A012
0008: B228 DA1A 0000 0000 0000 0000 0000 5600
0010: 0100 C792 6A35 5201 9030 4A74 6167 4873
0018: 3200 0000 0000 0000 0000 0044 6967 696C
0020: 656E 7420 4A54 4147 2D48 5332 0000 0000
0028: 0000 0000 0000 0000 1100 0000 0000 0000
0030: 0000 0000 0000 0000 0000 0000 0000 0000
0038: 0000 0000 0000 0000 0000 0000 0000 0000
0040: 0000 0000 0000 0000 0000 4800 0000 0000
0048: 0000 0000 0000 0000 0000 0000 0000 0000
0050: 1203 4400 6900 6700 6900 6C00 6500 6E00
0058: 7400 2803 4400 6900 6700 6900 6C00 6500
0060: 6E00 7400 2000 5500 5300 4200 2000 4400
0068: 6500 7600 6900 6300 6500 1A03 3200 3100
0070: 3000 3200 3400 3900 3900 3100 3800 3600
0078: 3100 3200 0203 0000 0000 0000 0000 902C

Последний вариант по всей видимости более актуален.

Vid - 0403 Pid - 6014

Автор: kleverd Apr 29 2014, 17:52

По всей видимости пины ADBUS5 ADBUS6 ADBUS7 - это управление буферами соответствующих каналов, т.к сигнал на них инвертирован.
А распределение информационных линий стандартное (ADBUS0 - ADBUS3). Ну и методом исключения - буфер TDO управляется ADBUS4.

Автор: kleverd Jun 2 2014, 16:49

Опытным путем подобрал содержимое файла с конфигурацией для JTAG HS2


interface ftdi
ftdi_vid_pid 0x0403 0x6014
adapter_khz 6000
ftdi_layout_init 0x20e8 0x3feb
ftdi_layout_signal nSRST -data 0x2000
ftdi_layout_signal GPIO2 -data 0x2000
ftdi_layout_signal GPIO1 -data 0x0200
ftdi_layout_signal GPIO0 -data 0x0100

Теперь вроде как сканирует цепь устройств.
Но ошибка выдается
Error: auto0.tap: IR capture error; saw 0x0000 not 0x0001

Автор: rloc Jun 3 2014, 04:07

Цитата(kleverd @ Apr 30 2014, 02:02) *
Ну и методом исключения - буфер TDO управляется ADBUS4.

TDO - это вход, для него нет буфера с третьим состоянием, а ADBUS4 соединяется с ADBUS0 напрямую (возможно ранее была задумана адаптивная частота для ARM и цепочка замыкалась соответственно через процессор). Помимо буферов есть еще пара мультиплексоров. Один мультиплексор управляет выбором сигнала для выхода TMS: либо ADBUS1 (ACBUS6=0), либо ADBUS3 (ACBUS6=1). Другой мультиплексор управляет выбором источника для входа ADBUS2: либо сигнал обратно заворачивается с TMS (ACBUS7=0), либо берется со входа TDO (ACBUS7=1).

Автор: bloody-wolf Dec 8 2014, 23:56

Форумчане, особенно rloc, я извиняюсь за "воскрешение" так сказать темы, но хотелось бы прояснить один момент, а именно распиновку JTAG SMT2 касательно части GPIO0..2 и ADBUS6/7
rloc некоторое количество постов назад написал:
"Отвечаю на вопросы:
1) Замкнуты ADBUS0 и ADBUS4.
2) EEPROM есть на всех платах - 93LC56BT (для HS2 и SMT2 VID_PID=0403_6014).
3) ADBUS7 можно управлять третьим состоянием буферов JTAG-выходов (0 - третье состояние).
4) ACBUS5 используется для сброса Zync, либо как GPIO2, ACBUS4 переводит выходной буфер в третье состояние, либо меняет направление (1 - выход, 0 - вход или третье состояние).
5) ACBUS0/ACBUS1 в SMT2 дополнительно используются для GPIO0/GPIO1, ACBUS3/ACBUS4 - для управления направлением соответствующих буферов GPIO (1 - выход, 0 - вход или третье состояние).
6) ADBUS5/ADBUS6 в HS2 и SMT2 дополнительно используются для режима SPI (подробности опускаю).

"
смущает в пунктах 4 и 5 наличие одной и тойже ноги ACBUS4, это ошибка или так и есть? хочеться повторить девайс, однако в наличии на предмет "пощупать" есть только SMT1, а хотелось бы SMT2.
возможно ли уточнить еще раз, на какие ноги ft232H какие функции назначены?


(по моему мнению скорее всего должно быть так, но могу ошибатьсяsm.gif
ACBUS0 = GPIO.0
ACBUS1 = GPIO.1
ACBUS2 = GPIO.0.ENABLE 1=out 0=in
ACBUS3 = GPIO.1.ENABLE 1=out 0=in
ACBUS4 = GPIO.2.ENABLE 1=out 0=in
ACBUS5 = GPIO.2
я так понимаю, что буферы на этих ногах что-то типа sn74lvc1t45


по мультиплексорам и тому, что digilent попытались сделать "2 wire JTAG", я так понимаю, что мультиплексоры что-то типа 74lvc1g157,
правда несколько непонятно по ADBUS5..7 (или ACBUS5..7) что чем управляет.

и остаются еще просто буферы на TCK ADBUS0 и TDI ADBUS1, что-то типа 74lvc1g125

и с резетом чет не сходится, он тупо на ACBUS5 генерится, или как то отдельно заведен.

Автор: rloc Dec 9 2014, 05:08

Логика - из серии TinyLogic, типа NC7SZ125 с питанием от 1.65 В до 5.5 В. По соединениям - ближе к вечеру.

Автор: bloody-wolf Dec 9 2014, 07:11

Цитата(rloc @ Dec 9 2014, 08:08) *
Логика - из серии TinyLogic, типа NC7SZ125 с питанием от 1.65 В до 5.5 В. По соединениям - ближе к вечеру.


жду с нетерпением wink.gif пасибы

Автор: rloc Dec 9 2014, 20:09

Напоследок проверил, должно быть так:



HS2 - тоже самое, но без GPIOx. В ZedBoard - мультиплексоров нет, третье состояние TCK, TDI и TMS контролируется одним сигналом - AD7. И еще раз напомню, AD0 и AD4 соединяются вместе только потому, что раньше на AD4 возвращался тактовый сигнал через ARM и адаптивно выбиралась частота.

Автор: bloody-wolf Dec 10 2014, 09:32

Цитата(rloc @ Dec 9 2014, 23:09) *
Напоследок проверил, должно быть так:


ВАХ! я у себя на листочке, так сказать, примерно тоже самое изобразил, непонятно было только с управленией OE буферов.
Я премного благодарствую вам, rloc. Пойду рисовать кусок схемы и платы )

А соответственно по памяти подойдет тот дамп, что здесь выкладывался, я правильно понял? 93LC56B... 16bit wide 2kbit

Автор: rloc Dec 10 2014, 10:31

Да

Автор: dima2640 Mar 29 2015, 16:07

Digilent JTAG-HS2 + Программатор MBFTDI в среде Altera Quartus:

Pcb+schematic+eeprom

eeprom ept file:

[Basic Details]
Device Type=9
VID PID Type=1
USB VID=0403
USB PID=6010
[USB Power Options]
Bus Powered=1
Self Powered=0
Max Bus Power=500
[USB Serial Number Control]
Prefix=21
Use Fixed Serial Number=0
Fixed Serial Number=210249854606
[USB Remote WakeUp]
Enable Remote WakeUp=0
[Windows Plug and Play]
Enable Plug and Play=0
[USB String Descriptors]
Manufacturer=Digilent
Product=Digilent USB Device
[Programming Options]
Only Program Blank Devices=1
[BM Device Specific Options]
USB Version Number=0
Disable Serial Number=0
IO Pin Pull Down in Suspend=0
[Dual Device Specific Options A]
RS 232 mode=1
245 FIFO mode=0
245 CPU FIFO mode=0
OPTO Isolate mode=0
High Current Drive=0
[Dual Device Specific Options B]
RS 232 mode=1
245 FIFO mode=0
245 CPU FIFO mode=0
OPTO Isolate mode=0
High Current Drive=0
[Dual Device Driver Options A]
Virtual Com Port Driver=1
D2XX Driver=0
[Dual Device Driver Options B]
Virtual Com Port Driver=1
D2XX Driver=0
[R Device Specific Options]
Invert TXD=0
Invert RXD=0
Invert RTS#=0
Invert CTS#=0
Invert DTR#=0
Invert DSR#=0
Invert DCD#=0
Invert RI#=0
C0 Signal=-1
C1 Signal=-1
C2 Signal=-1
C3 Signal=-1
C4 Signal=-1
Enable Ext Osc=0
High Current I/O=0
Load D2XX Driver=0
In EndPoint Size=0
[DualHS Device Specific Options]
IFAIsFifo7=1
IFAIsFifoTar7=0
IFAIsFastSer7=0
AIsVCP7=0
IFBIsFifo7=0
IFBIsFifoTar7=0
IFBIsFastSer7=0
BIsVCP7=1
IOPinDriveDual=0
UTMIDrive=0
UTMIVendor=0
SuspendOnD7Low=0
[QuadHS Device Specific Options]
AIsVCP8=1
BIsVCP8=1
CIsVCP8=1
DIsVCP8=1
ARIisTXDEN=0
BRIisTXDEN=0
CRIisTXDEN=0
DRIisTXDEN=0
IOPinDriveQuad=0

 digilent_jtag_hs2_mblaster.rar ( 533.1 килобайт ) : 441
 

Автор: rloc Mar 29 2015, 16:18

Цитата(dima2640 @ Mar 29 2015, 20:07) *
Digilent JTAG-HS2 + Программатор MBFTDI в среде Altera Quartus:

Поясните, что Вы хотели этим сказать.

Автор: dima2640 Mar 29 2015, 17:28

Цитата(rloc @ Mar 29 2015, 20:18) *
Поясните, что Вы хотели этим сказать.


программатор Xilinx и программатор Альтеры
в одном флаконе
Архив смотрели?

Автор: rloc Mar 29 2015, 17:34

Цитата(dima2640 @ Mar 29 2015, 21:28) *
программатор Xilinx и программатор Альтеры
в одном флаконе
Архив смотрели?

Где об этом в архиве сказано? Программатор поддерживается средой Quartus без дополнительных драйверов? С Altera не работаю, не в курсе.

Автор: dima2640 Mar 29 2015, 17:46

Цитата(rloc @ Mar 29 2015, 21:34) *
Где об этом в архиве сказано?

папка "Программатор MBFTDI в среде Altera Quartus".

Есть сайт marsohod.org по Альтере
там сделали плагин под Quartus
и программатор MBlaster на ft2232h mpsse
аналог "Digilent программатор"
А я развёл плату и слил дамп в файлы
для ftprog и Mprog может кому пригодиться.
Всё проверено и работает.

Автор: rloc Mar 29 2015, 17:51

Почему нельзя было статично прилинковать ftd2xx.dll?

Автор: dima2640 Mar 29 2015, 17:55

Цитата(rloc @ Mar 29 2015, 21:51) *
Почему нельзя было статично прилинковать ftd2xx.dll?


Все вопросы к разработчикам(российским) на сайт Марсоход.
Я отвечаю только за схему, плату и слитые дампы с еепром.

Автор: toshas Jan 23 2017, 08:48

Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ?
Все сводится к одному доп. пину сброса ?
Какая ножка FT2232 им управляет ?

http://electronix.ru/redirect.php?http://store.digilentinc.com/all-products/jtag-programmers/

"The Xilinx Tools occasionally require the processor core of the Zynq-7000 to be reset during debug operations. The
Zynq platform processor has a pin dedicated for this purpose (PS_SRST_B). Driving the PS_SRST_B pin low causes
the processor to reset while maintaining any existing break points and watch points. The JTAG-HS3 is capable of
driving this pin low under the instruction of Xilinx’s SDK during debugging operations. In order for this to work, pin
14 of Xilinx JTAG header on the target board must be connected to the PS_SRST_B pin of the Zynq (see Figs. 3 & 4).

The JTAG-HS3 uses an open drain buffer to drive pin 14 of the Xilinx JTAG header (see Fig. 5). This allows the HS3 to
drive the PS_SRST_B pin when VCC_MIO1 is referenced to a different voltage than VCCO_0 (see Fig. 6).

Should an accidental short occur between pin 14 and GND, the 100 ohm series resistor protects the buffer from
being damaged. While this resistor protects the buffer from being damaged, it also limits the drive strength of the
buffer. Therefore, it is necessary for the pull-up resistor (RPU) used to establish the voltage level on PS_SRST_B to
be greater than or equal to 1.5K ohms. At the time of writing, Xilinx ZC702, Xilinx ZC706, and Avnet® MicroZed™ all
feature 10K pull-ups on pin 14 of the their respective Xilinx JTAG headers. For compatibility with other evaluation
platforms, please consult the manufacturer’s schematic."


Спасибо!

 

Автор: Zig Jan 24 2017, 17:55

Цитата(toshas @ Jan 23 2017, 11:48) *
Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ?

Есть вскрытый HS3 (с растянутой и снятой термоусадкой).
В нем как и в HS2 не FT2232, а FT232.
Могу под микроскопом посмотреть с какой ноги идет ресет и снять дамп (если научите как).

Автор: rloc Jan 24 2017, 19:39

Цитата(toshas @ Jan 23 2017, 11:48) *
Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ?
Все сводится к одному доп. пину сброса ?
Какая ножка FT2232 им управляет ?

Для кого http://electronix.ru/redirect.php?https://electronix.ru/forum/index.php?showtopic=114633&st=60&p=1297763&#entry1297763?

В SMT2 есть дополнительный режим 2-проводного JTAG (или 2-wire интерфейса), на который отводится несколько дополнительных буферов и еще есть пара дополнительных GPIO (пользовательских, двунаправленных). С точки зрения программирования Xilinx особой разницы нет. 2-проводный интерфейс сделан на будущее, под новый стандарт, можно использовать для ARM (SWD) - официальной поддержки нет, но поле для творчества есть.

Автор: toshas Jan 25 2017, 17:36

Гляжу в книгу, вижу цветочек)
rloc, Спасибо!

Автор: usserr Sep 27 2018, 22:04

Немного поделюсь и своим опытом на эту тему, т.к. в безуспешных (до текущего момента) попытках провел неделю точно.

Мною был заказан и успешно получен комплект с Алиэкспресс под названием ALINX, содержащий отладку на базе Spartan6 xc6slx9 и программатор следующего вида:

http://electronix.ru/redirect.php?https://postimages.org/

Как потом выяснилось, такой программатор больше нигде кроме ALINX не применяется, однако тогда я это не проверил и понадеялся на добросовестность китайцев. Ну и в итоге, естественно, по закону подлости в ISE 14.7 он не завелся sm.gif Вот тогда я начал копать всю эту тему, вышел на этот форум и другие источники. Выяснилось, что программатор этот на основе FT232H (а значит закос под Digilent HS2), хотя непосредственно с чипа как-будто были стерты все обозначения и тип был установлен через FT_Prog. Через него же было установлено, что китайцы все же записали в EEPROM некоторые нужные байты, но, видимо, что-то напутали и программатор никак в iMPACT не определялся. Дальнейшие разборки показали, что требуется шить именно User Area и тут уже начали опускаться руки, т.к. инфы по этому поводу мало, она часто путает, а скудные образцы кода были почти никак не комментированы (не в обиду @ADA007 sm.gif ).

Здесь я решил уйти немного в сторону и присобачить к злосчастному программатору UrJTAG и/или OpenOCD. В общем под Виндой (проверял на 7ке, т.к. версию ISE для 10ки у меня не тянет проц в следствие отсутствия виртуализации) достаточно установить официальный установочник драйверов VCP/D2XX (https://www.ftdichip.com/Drivers/VCP.htm или http://electronix.ru/redirect.php?https://www.ftdichip.com/Drivers/D2XX.htm, там одно и то же, нажимать на ссылку в разделе Comments), возможно потребуется немного поиграть с заменой драйверов в http://electronix.ru/redirect.php?https://zadig.akeo.ie, если уже были установлены какие-либо драйвера до этого или успели уже что-то понаустанавливать. В конце концов UrJTAG научится определять программатор:

Код
cable ft2232
(да, ft2232, даже если у вас, как и у меня, 232h). Далее, чтобы работала команда
Код
detect
нужно предварительно сказать UrJTAG где ему искать конфигурацию. Для этого с сайта Xilinx http://electronix.ru/redirect.php?https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/device-models/bsdl-models/spartan-series-fpgas.html BSDL файлы, распаковываем и прописываем команду
Код
bsdl path C:\Users\Chufyrev\Xilinx\xc6s-2014
и теперь можно детектировать chain (в папке можно оставить только bsdl-файлик для вашей ПЛИСины). Вместо прошивки непосредственно bitstream я генерировал в iMPACT svf-файл:
  1. Жмем Output - SVF File - Create
  2. Выбираем наш сгенерированный ранее bit-файл
  3. Появляется картинка чипа, жмем на него, слева Program
  4. Из того же меню Output говорим Stop SVF

Теперь у нас есть SVF, который мы можем скормить UrJTAG. После пары десятков прошивок рука набьется в этих действиях до автоматизма sm.gif Все команды UrJTAG можно запилить в отдельный скриптик для ускорения процесса:
Код
cable ft2232
bsdl path C:\Users\User\Xilinx\xc6s-2014
detect
svf C:\Users\User\Xilinx\projects\project_1\project_1.svf

Под линуксами UrJTAG заводиться решительно не хотел, а OpenOCD не принимал программатор вообще нигде. Проблема была в драйверах, UrJTAG по умолчанию пользуется libftdi, в то время как оказались нужны ftd2xx. Для решения следует вручную скомпилировать UrJTAG с ftd2xx, используя соответствующую опцию. Процесс описан в доках и на просторах сети, однако там есть свои нюансы, если кто заинтересуется, могу изложить подробнее. Скажу только, что в итоге UrJTAG заработал и под пингвином. OpenOCD я с тех пор не тестировал, однако есть подозрения что подобный трюк может завести и его.

Тут решено было вернуться к баранам попыткам подружить все-таки программатор и iMPACT напрямую, а для этого, как мы знаем, нужно прошивать User Area. Вот здесь мы возвращаемся к D2XX, поскольку именно этот драйвер умеет это делать. Берем исходники по ссылке выше, на этот раз не из секции Comments. В версии для Linux находим примеры на все случаи жизни, в т.ч. Read/Write UA. Нужное содержание этого самого UA взял из этой ветки, скомпилировал программу, прошило и ... лажа. Не смотря на отсутствие ошибок работы функции FT_EE_UAWrite() вся EEPROM затерлась 0xFF, даже то, что было "в наличии". Определяемый размер UA тоже изменился, возможно это связано с тем, что на размер UA влияет строка Manufacturer/Model/SerialNumber. Но вообще какое-то странное поведение. Решил уже проверить то же самое под Windows, установил Visual Studio, слинковал ftd2xx.lib (внимание, берите тот файл, который весит ~20кБ, я долго разбирался со второй версией на 1МБ) (либу можно взять все по той же ссылке выше). Результат тот же - 0xFF. Ну в общем фиг знает, я накосячил, или драйвер, но вернулся я еще раз к методу ADA007 и его статье в КиТ. После конфигурации FT_Prog'ом и запуска FTDI_User_Area_Writer.exe программатор распознался и iMPACT'ом! Повезло, по всей видимости, что размер EEPROM у нас оказался одинаковым, 128Б (EEPROM 93C56). Если что, UrJTAG воспринимает FT232H в любом виде, вне зависимости от содержания EEPROM в принципе, так что как запасной вариант остается всегда.

Под Linux новопрошитый программатор не распознался, но это скорее всего из-за отсутствия Digilent Plugin, который в Ubuntu, как я понял, поставить надо еще постараться.

Автор: usserr Sep 28 2018, 11:39

UPDATE: Под Ubuntu 18 также программатор увиделся, нужно было поставить Digilent Plugin.

Автор: rloc Sep 28 2018, 11:53

В чем вопрос? Happy story?

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)