Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Digilent программатор Xilinx
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Страницы: 1, 2
ADA007
Приветствую всех форумчан!

Подскажите, кто пользовал данный девайс ? Действительно ли "Compatible with all Xilinx tools" ? И все ли там так гладко, как они пишут? Привлекает цена самой ftdi-ки, но смущают подводные камни.

ЗЫ. не зря же здесь лепили полную копию оригинального DLC10... laughing.gif
DASM
Я пользую, потому что в ZedBoard он попросту распаян. А какие требования то ?
KPiter
Цитата(DASM @ Aug 6 2013, 13:42) *
в ZedBoard он попросту распаян

Не только в ней, на всех последних отладочных платах 7 серии
dsmv
Я использовал HS2: http://www.digilentinc.com/Products/Detail...p;Prod=JTAG-HS2


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

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

получается, что на сайте написано не правда:
Цитата
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.

???

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


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

Это хорошо...у нас главное, чтоб работало...А схемку данного девайса уже кто-то срисовал? а то на отладочных платах, там только квадрат нарисован и написано , что digilent programmer или что-то вроде того....поделитесь, если есть
Timmy
Цитата(alexr22b @ Aug 7 2013, 00:28) *
Все работает, толкько отладчик раз в 5 медленнее в пошаговой по сравнению с Xilinx USB JTAG.

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

Схемку да, было бы интересно. Я пробовал подключать к плагину от Digilent свой ft2232 минимодуль, заточенный под Lattice, и он не распознаётся. Вроде конфигурационное ПЗУ должно быть чистое. Подозреваю, что у Digilent часть GPIO пинов ft2232 замкнуты друг на друга или питание/землю, и по ним софт определяет, родной девайс или левый. Это помимо наличия трансляторов уровня, но с ними и так всё ясно.
alexr22b
Цитата(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
Все работает. И EDK и Chipscope. И куда быстрее и стабильнее родного.
alexr22b
Цитата(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
Цитата(alexr22b @ Aug 11 2013, 04:38) *
У меня их 4 штуки ....


А не могли бы вы предоставить схемку данного чуда?....очень хочется повторить, особенно, если они на ftdi сделаны..а то делать/покупать клон на DLC9 как-то сложновато и карман жмет...
ADA007
На днях собрал по типовой схеме с ДШ на макетке 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
Цитата(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
Цитата(Timmy @ Dec 3 2013, 09:49) *
... И ещё понадобится оригинал, чтобы отсканировать. ...

Вот поэтому и написал на форум т.к. оригинала сам под рукой не имею....Был бы оригинал - уже б даже мультиметром вызвонил куда какие ноги идут... rolleyes.gif
Может кто еще откликнется, у кого оригинал есть...
Dmitriyspb
Китайский аналог американского программатора стоит порядка 2-х т.р. Думаю это многим доступно
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 (подробности опускаю).


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

Handmade, а-ля диджилент, стоит порядка 10 уе, работает быстрее, обеспечен поддержкой ISE (через plugin), встраивается во все платы и дополнительно дает возможность управления по USB.
yes
а фузы (ОТР) в spartan6 он прошивать умеет?
а то старые ксайлинские кабеля не позволяют, а "новый" (красный) все никак не доедет до меня
Dmitriyspb
Цитата(rloc @ Dec 3 2013, 14:04) *
Handmade, а-ля диджилент, стоит порядка 10 уе, работает быстрее, обеспечен поддержкой ISE (через plugin), встраивается во все платы и дополнительно дает возможность управления по USB.

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

С фузами не работал, но надежд на положительный исход мало судя по откликам.
ADA007
Цитата(rloc @ Dec 3 2013, 12:04) *
Отвечаю на вопросы...

Большое спасибо за ответы. А JTAG, как я понимаю, подключен к ADBUS0 - TCK, ADBUS1 - TDI, ADBUS2 - TDO, ADBUS3 - TMS?
Попробовал замкнуть ADBUS0-ADBUS4 - кабель пока не определился, но еще надо vid/pid сменить для чистоты эксперимента.
Timmy
Цитата(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
Цитата(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. И если верить вот этим данным, то в EEPROM надо вписать вот это



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

ЗЫ: а то у меня не получается пока что записать EEPROM так, как на рисунке.
rloc
Цитата(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
Значит ни кто не использует SMT1 на FT2232H получается? Я сомневаюсь, что если я залью данные, как пишет rloc в свой программатор - он не заработает.
Попробовал залить туда данные, как написано на форуме микроконтроллера =>

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

Цитата(rloc @ Dec 3 2013, 14:49) *
С фузами не работал, но надежд на положительный исход мало судя по откликам.

Фузы шьет только красная коробочка (DLC10), и вроде бы только под Windows.
ADA007
Цитата(Flood @ Dec 6 2013, 23:31) *
Перешивать пользовательскую зону FT_Prog не может....

Так программатор-то есть..я просто не могу догнать что в eeprom шить, слегка запутался с этими областями. Есть ли дока с описанием областей (а то в ДШ на FTDI - про EEPROM только две строки написано)? Напишите, пожалуйста, полный dump памяти - я залью.
ADA007
Цитата(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
Есть у меня HW-USB модуль на FT4232. Кто подскажет - допилить, чтобы ксилинкс поддерживал можно?
ADA007
Цитата(rloc @ Dec 3 2013, 20:30) *
Например для HS2...


Как думаете, если подсунуть impact-у HS2 сделанный не на ft232h , а на ft2232h (двухпортовом) - будет работать? (по идее система команд в драйвере у них должна быть одинаковая на 1-й порт)
и было бы здорово иметь полный dump с eeprom для hs2 - чтобы это попробовать, а не только с 0x50 до 0х78...
rloc
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
Цитата(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
Цитата(ADA007 @ Jan 9 2014, 17:16) *
Т.е. вроде как user area должна начинаться с 0х14 в вашем случае.

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

Потому, что про user area упоминают FTDI только в этом документе. И больше ничего не нашел про это - вот и подумал, что распространяется на всю серию микросхем FT232x.
К тому же ребята с сайта используют тот же 232h и ссылаются на тот же документ, что я привел выше.
Если кто подскажет, где написано конкретно про ft232h - буду очень благодарен.
rloc
Действительно, FT232H несколько отличается от остальных. Из открытых источников 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
Цитата(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
Все оказалось до безобразия просто.

Цитата(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 из дампа в посте , любезно, предоставленного от rloc вписываем данные. User_Area там по адресам с 0х0010 по 0х002С в конце добавляем необходимое кол-во байт 0х00 в зависимости от типа ftdi и используемой eeprom.
Контрольная сумма считается автоматически драйвером ftdi при записи eeprom.
Расположение ног расписано несколькими постами выше. ADBUS0 и ADBUS4 замыкать не нужно - и так все работает!

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

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

Предполагаю, в какой-то из версий вместо этой перемычки была петля по печатной плате по длине JTAG-цепочки для определения задержки тактового сигнала и автоматической установки максимальной частоты. Владельцы ZedBoard, откликнитесь!
ADA007
Цитата(rloc @ Jan 16 2014, 15:05) *
Поздравляю! ПЛИС прошивали?

Да...прошивал...кабель определяется impact-ом как HS2...на днях еще попробую ChipScope
rloc
Возьму на заметку, пока использовал только FT232H: мультиплексировал между JTAG и пользовательскими данными. С дополнительным портом проще.
rloc
Ради такого случая решил поиздеваться над FT4232H mini module. В 14.7 версии софта импакт находит устройство, как программатор Digilent, это видно по лог-файлу, но потом выдает ошибку - "failed to open device handle". Так что не все йогурты одинаково полезны. И еще подтверждаю - доступа к eFUSE регистрам через Digilent нет, даже меню соответствующее не появляется, через Platform Cable на той же плате все программируется. Алгоритм расчета контрольной суммы в драйверах D2XX - какой-то свой, не CRC16 и не как в libftdi.
ADA007
Цитата(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 и свой тоже - все сошлось (правда пришлось немного допилить,чтобы идея суммы сохранилась)...сырцы прилагаю, если что
ЗЫ: за код больно не бить....писал на скорую руку
rloc
Опа, никак под Линукс проверяли? Т.е. еще не факт, что FT2232H под Виндоус подойдет. Код завтра проверю. По-началу писал побайтно и контрольную сумму вычислял сам, но Импакт не видел программатор, потом - через запись юзеровской области целым блоком, драйвера сами посчитали контрольную сумму и все определилось.
ADA007
Цитата(rloc @ Jan 20 2014, 21:36) *
Опа, никак под Линукс проверяли?
....
драйвера сами посчитали контрольную сумму и все определилось.

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

a14.gif

PS попробую проверить на Zedboard
rloc
Так у ZedBoard уже должна быть родная поддержка программирования через JTAG:
Цитата
Onboard USB-JTAG Programming


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

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

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

Не пойму, зачем ZedBoard отдельный программатор, когда на плате есть интегрированный на FT232H? У Вас точно ZedBoard? Присланный файл соответствует HS1.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.