|
Digilent программатор Xilinx, кто пользовал? |
|
|
|
Aug 6 2013, 09:34
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Приветствую всех форумчан! Подскажите, кто пользовал данный девайс ? Действительно ли "Compatible with all Xilinx tools" ? И все ли там так гладко, как они пишут? Привлекает цена самой ftdi-ки, но смущают подводные камни. ЗЫ. не зря же здесь лепили полную копию оригинального DLC10...
|
|
|
|
|
 |
Ответов
(1 - 82)
|
Aug 6 2013, 09:47
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 22-09-06
Из: NN
Пользователь №: 20 592

|
Цитата(DASM @ Aug 6 2013, 13:42)  в ZedBoard он попросту распаян Не только в ней, на всех последних отладочных платах 7 серии
|
|
|
|
|
Aug 6 2013, 10:04
|
Частый гость
 
Группа: Участник
Сообщений: 157
Регистрация: 10-05-13
Пользователь №: 76 788

|
Подводных камней там всего один, он не поддерживает Chipscope и EDK судя по всему. То есть все что с ним можно сделать это зашить прошивку. В этом смысле разница с оригиналом как между программатором и эмулятором.
--------------------
Скажи нет международному терроризму... не покупай Pepsi Cola.
|
|
|
|
|
Aug 6 2013, 10:41
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(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?
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Aug 6 2013, 20:28
|
Частый гость
 
Группа: Свой
Сообщений: 102
Регистрация: 11-10-04
Пользователь №: 849

|
Цитата(fractcon @ Aug 6 2013, 14:04)  Подводных камней там всего один, он не поддерживает Chipscope и EDK судя по всему. То есть все что с ним можно сделать это зашить прошивку. В этом смысле разница с оригиналом как между программатором и эмулятором. Все работает, толкько отладчик раз в 5 медленнее в пошаговой по сравнению с Xilinx USB JTAG.
|
|
|
|
|
Aug 7 2013, 16:51
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(alexr22b @ Aug 7 2013, 00:28)  Все работает, толкько отладчик раз в 5 медленнее в пошаговой по сравнению с Xilinx USB JTAG. Это на одинаковой тактовой частоте? А то вдруг у Digilent по умолчанию 5МГц ставится, а у Xilinx - 25. Цитата А схемку данного девайса уже кто-то срисовал? а то на отладочных платах, там только квадрат нарисован Схемку да, было бы интересно. Я пробовал подключать к плагину от Digilent свой ft2232 минимодуль, заточенный под Lattice, и он не распознаётся. Вроде конфигурационное ПЗУ должно быть чистое. Подозреваю, что у Digilent часть GPIO пинов ft2232 замкнуты друг на друга или питание/землю, и по ним софт определяет, родной девайс или левый. Это помимо наличия трансляторов уровня, но с ними и так всё ясно.
|
|
|
|
|
Aug 7 2013, 19:14
|
Частый гость
 
Группа: Свой
Сообщений: 102
Регистрация: 11-10-04
Пользователь №: 849

|
Цитата(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.
|
|
|
|
|
Aug 11 2013, 01:38
|
Частый гость
 
Группа: Свой
Сообщений: 102
Регистрация: 11-10-04
Пользователь №: 849

|
Цитата(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 напрочь. Спасибо!
|
|
|
|
|
Dec 3 2013, 07:23
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
На днях собрал по типовой схеме с ДШ на макетке 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) Неужели никто не хочет помочь сделать клон, дабы не нарушать авторских прав? (я же не для коммерческих целей делаю)
|
|
|
|
|
Dec 3 2013, 07:49
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(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) Неужели никто не хочет помочь сделать клон, дабы не нарушать авторских прав? (я же не для коммерческих целей делаю)  Могу написать программку для сканирования GPIO портов оригинального адаптера для проверки моего предположения о методе детектирования оригинальности адаптера. Идея в том, что все порты переключаются на ввод, затем делается цикл на 32 шага по всем битам GPIO. Текущий бит переключается на вывод 0, в лог пишутся состояния всех 32 бит GPIO, затем текущий бит переключается на вывод 1, в лог пишутся состояния всех 32 GPIO, затем переключаем текущий бит на ввод и переходим к сканированию следующего. Так можно обнаружить все подтяжки и закоротки. Только у меня сейчас нет под рукой ft2232, чтобы это отладить. И ещё понадобится оригинал, чтобы отсканировать. "Digilent Plugin: Product ID: F030012D" - это, думаю, идентификатор плагина, а не адаптера.
|
|
|
|
|
Dec 3 2013, 10:04
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Отвечаю на вопросы: 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.
|
|
|
|
|
Dec 3 2013, 10:32
|

Местный
  
Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498

|
Цитата(rloc @ Dec 3 2013, 14:04)  Handmade, а-ля диджилент, стоит порядка 10 уе, работает быстрее, обеспечен поддержкой ISE (через plugin), встраивается во все платы и дополнительно дает возможность управления по USB. Если только цена выгоднее
--------------------
Победа - это когда N раз упал и N+1 раз встал.
|
|
|
|
|
Dec 3 2013, 11:21
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(rloc @ Dec 3 2013, 12:04)  Отвечаю на вопросы... Большое спасибо за ответы. А JTAG, как я понимаю, подключен к ADBUS0 - TCK, ADBUS1 - TDI, ADBUS2 - TDO, ADBUS3 - TMS? Попробовал замкнуть ADBUS0-ADBUS4 - кабель пока не определился, но еще надо vid/pid сменить для чистоты эксперимента.
|
|
|
|
|
Dec 3 2013, 11:30
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(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.
|
|
|
|
|
Dec 3 2013, 14:42
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(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 так, как на рисунке.
|
|
|
|
|
Dec 3 2013, 18:30
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(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
|
|
|
|
|
Dec 5 2013, 14:38
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Значит ни кто не использует 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 виде - или как удобно - буду пробовать.
|
|
|
|
|
Dec 6 2013, 21:31
|
Знающий
   
Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871

|
Все правильно пишут, но на приведенной картинке только половина дампа - как раз пользовательская зона. Там, где "через один байт" - штатные Unicode строки идентификации FTDI. А на картинке - пользовательские, проверяемые плагином. Перешивать пользовательскую зону FT_Prog не может, надо делать свой софт (или найти готовый, который умеет). Цитата(rloc @ Dec 3 2013, 14:49)  С фузами не работал, но надежд на положительный исход мало судя по откликам. Фузы шьет только красная коробочка (DLC10), и вроде бы только под Windows.
|
|
|
|
|
Dec 11 2013, 12:28
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(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 поместилось?
|
|
|
|
|
Dec 17 2013, 09:04
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(rloc @ Dec 3 2013, 20:30)  Например для HS2... Как думаете, если подсунуть impact-у HS2 сделанный не на ft232h , а на ft2232h (двухпортовом) - будет работать? (по идее система команд в драйвере у них должна быть одинаковая на 1-й порт) и было бы здорово иметь полный dump с eeprom для hs2 - чтобы это попробовать, а не только с 0x50 до 0х78...
|
|
|
|
|
Jan 9 2014, 13:16
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(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? ЗЫ: Правильно ли я понимаю, что CRC16, что стоит в конце eeprom, от user area не считается?
|
|
|
|
|
Jan 9 2014, 15:00
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 17-11-12
Пользователь №: 74 440

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

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(alver @ Jan 9 2014, 17:00)  Не вижу в списке FT232H Потому, что про user area упоминают FTDI только в этом документе. И больше ничего не нашел про это - вот и подумал, что распространяется на всю серию микросхем FT232x. К тому же ребята с сайта используют тот же 232h и ссылаются на тот же документ, что я привел выше. Если кто подскажет, где написано конкретно про ft232h - буду очень благодарен.
|
|
|
|
|
Jan 9 2014, 19:58
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Действительно, 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;
|
|
|
|
|
Jan 10 2014, 08:54
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(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-ка не считывает данные, если контрольная сумма не правильная...
|
|
|
|
|
Jan 16 2014, 11:38
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Все оказалось до безобразия просто. Цитата(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 не обиделись ЗЫ: vid/pid нужно оставлять оригинальными, а иначе не из той области eeprom будет вычитываться.
|
|
|
|
|
Jan 20 2014, 19:21
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(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 и свой тоже - все сошлось (правда пришлось немного допилить,чтобы идея суммы сохранилась)...сырцы прилагаю, если что ЗЫ: за код больно не бить....писал на скорую руку
|
|
|
|
|
Jan 20 2014, 20:35
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(rloc @ Jan 20 2014, 21:36)  Опа, никак под Линукс проверяли? .... драйвера сами посчитали контрольную сумму и все определилось. Да, изготовленный мною девайс и под linux и под windows проверял - все работает. Контрольную сумму вписывал при помощи драйвера - записывал целым блоком user area.
|
|
|
|
|
Jan 21 2014, 05:50
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Так у ZedBoard уже должна быть родная поддержка программирования через JTAG: Цитата Onboard USB-JTAG Programming Скиньте лучше копию EEPROM, например через FT_PROG. Или у Вас microZed? Там другой чип. Получается UM232H-B - самая дешевая альтернатива внешним программаторам от 15 уе.
|
|
|
|
|
Jan 22 2014, 07:05
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Вот результаты, что у человека (у которого сейчас находиться моя плата) получилось (далее текст письма в котором он мне прислал). В файле картинки. Вначале следовал инструкциям, указанным на форуме, но это результата не принесло: ни в impact, ни в chipscope, устройство не определялось. Затем решил посмотреть в сторону программатора от ZedBoard: подключил его, прочитал с помощью FT_Prog и сохранил шаблон (серийный номер, правда, потом пришлось прописать вручную). Подключил FTDI и залил шаблон туда. После этого содержимое памяти изменяется, но программными средствами указанными выше не распознается. Далее с помощью программы записал содержимое user area в EEPROM аналогично тому, что для программатора. Программа простая: содержит сам массив который нужно записать и обращения к функциям для записи в память. Правда, одно слово из памяти записать в нужное место не получалось - оставил нули. После этого в impact все определилось как показано на рисунках. Содержимое EEPROM программатора от ZedBoard во вложении. Коментарий от человека: Пред-предпоследнее слово (0x0203) записать не получилось. Когда записываю его, то оно получается, либо предпоследним, либо перед блоком описания (начинается с 0х1203). Интересно узнать почему так происходит...
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Jan 22 2014, 09:55
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(rloc @ Jan 21 2014, 09:50)  Получается UM232H-B - самая дешевая альтернатива внешним программаторам от 15 уе. У меня вот какой вопрос. По исходному, когда в памяти FTDI "родная" прошивка, то чип работает с "родными" драйверами... А вот после того, как Вы прошивку поменяли и запущена ISE, можно ли при этом запустить самодельную программу с драйверами как при исходном состоянии... Или же теперь будут работать только Ксайлинсовские драйвера... Или надо выключать ISE и только после этого включать свою программу???
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 22 2014, 11:16
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(rloc @ Jan 22 2014, 14:55)  Xilinx работает с Digilent через plugin, который в свою очередь обращается через D2XX. Поэтому если своя программа тоже работает через D2XX, то одновременная работа возможна. Т.е. закрывать ничего не надо, но работать с микросхемой желательно поочередно, принцип такой: handle открыл - поработал - handle закрыл - передал управление другой программе. Так у меня сейчас и работает: FT_PROG, Impact и UserProg одновременно. Одновременность доступа не отслеживаю, не силен в программировании на С. Понял, спасибо! Тогда жду результатов, чтобы тоже попробовать.. У меня есть JTAG на 2232... И осталось поменять прошивку, так?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Dec 8 2014, 23:56
|
Местный
  
Группа: Свой
Сообщений: 220
Регистрация: 15-05-09
Пользователь №: 49 132

|
Форумчане, особенно 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 какие функции назначены? (по моему мнению скорее всего должно быть так, но могу ошибаться  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 генерится, или как то отдельно заведен.
Сообщение отредактировал bloody-wolf - Dec 9 2014, 01:32
|
|
|
|
|
Dec 9 2014, 07:11
|
Местный
  
Группа: Свой
Сообщений: 220
Регистрация: 15-05-09
Пользователь №: 49 132

|
Цитата(rloc @ Dec 9 2014, 08:08)  Логика - из серии TinyLogic, типа NC7SZ125 с питанием от 1.65 В до 5.5 В. По соединениям - ближе к вечеру. жду с нетерпением  пасибы
|
|
|
|
|
Dec 10 2014, 09:32
|
Местный
  
Группа: Свой
Сообщений: 220
Регистрация: 15-05-09
Пользователь №: 49 132

|
Цитата(rloc @ Dec 9 2014, 23:09)  Напоследок проверил, должно быть так: ВАХ! я у себя на листочке, так сказать, примерно тоже самое изобразил, непонятно было только с управленией OE буферов. Я премного благодарствую вам, rloc. Пойду рисовать кусок схемы и платы ) А соответственно по памяти подойдет тот дамп, что здесь выкладывался, я правильно понял? 93LC56B... 16bit wide 2kbit
Сообщение отредактировал bloody-wolf - Dec 10 2014, 09:37
|
|
|
|
|
Mar 29 2015, 16:07
|

Участник

Группа: Участник
Сообщений: 16
Регистрация: 14-03-13
Из: москва
Пользователь №: 76 028

|
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
Сообщение отредактировал dima2640 - Mar 29 2015, 16:08
|
|
|
|
|
Mar 29 2015, 17:28
|

Участник

Группа: Участник
Сообщений: 16
Регистрация: 14-03-13
Из: москва
Пользователь №: 76 028

|
Цитата(rloc @ Mar 29 2015, 20:18)  Поясните, что Вы хотели этим сказать. программатор Xilinx и программатор Альтеры в одном флаконе Архив смотрели?
Сообщение отредактировал dima2640 - Mar 29 2015, 17:28
|
|
|
|
|
Mar 29 2015, 17:46
|

Участник

Группа: Участник
Сообщений: 16
Регистрация: 14-03-13
Из: москва
Пользователь №: 76 028

|
Цитата(rloc @ Mar 29 2015, 21:34)  Где об этом в архиве сказано? папка "Программатор MBFTDI в среде Altera Quartus". Есть сайт marsohod.org по Альтере там сделали плагин под Quartus и программатор MBlaster на ft2232h mpsse аналог "Digilent программатор" А я развёл плату и слил дамп в файлы для ftprog и Mprog может кому пригодиться. Всё проверено и работает.
|
|
|
|
|
Mar 29 2015, 17:55
|

Участник

Группа: Участник
Сообщений: 16
Регистрация: 14-03-13
Из: москва
Пользователь №: 76 028

|
Цитата(rloc @ Mar 29 2015, 21:51)  Почему нельзя было статично прилинковать ftd2xx.dll? Все вопросы к разработчикам(российским) на сайт Марсоход. Я отвечаю только за схему, плату и слитые дампы с еепром.
Сообщение отредактировал dima2640 - Mar 29 2015, 18:02
|
|
|
|
|
Jan 23 2017, 08:48
|
Местный
  
Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339

|
Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ? Все сводится к одному доп. пину сброса ? Какая ножка FT2232 им управляет ? 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." Спасибо!
Эскизы прикрепленных изображений
|
|
|
|
|
Jan 24 2017, 17:55
|
Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 30-12-04
Пользователь №: 1 761

|
Цитата(toshas @ Jan 23 2017, 11:48)  Кто-нибудь знает в чем отличие "новых" SMT2 и HS3 ? Есть вскрытый HS3 (с растянутой и снятой термоусадкой). В нем как и в HS2 не FT2232, а FT232. Могу под микроскопом посмотреть с какой ноги идет ресет и снять дамп (если научите как).
|
|
|
|
|
Sep 27 2018, 22:04
|
Группа: Новичок
Сообщений: 2
Регистрация: 27-09-18
Пользователь №: 107 742

|
Немного поделюсь и своим опытом на эту тему, т.к. в безуспешных (до текущего момента) попытках провел неделю точно. Мною был заказан и успешно получен комплект с Алиэкспресс под названием ALINX, содержащий отладку на базе Spartan6 xc6slx9 и программатор следующего вида:  Как потом выяснилось, такой программатор больше нигде кроме ALINX не применяется, однако тогда я это не проверил и понадеялся на добросовестность китайцев. Ну и в итоге, естественно, по закону подлости в ISE 14.7 он не завелся  Вот тогда я начал копать всю эту тему, вышел на этот форум и другие источники. Выяснилось, что программатор этот на основе FT232H (а значит закос под Digilent HS2), хотя непосредственно с чипа как-будто были стерты все обозначения и тип был установлен через FT_Prog. Через него же было установлено, что китайцы все же записали в EEPROM некоторые нужные байты, но, видимо, что-то напутали и программатор никак в iMPACT не определялся. Дальнейшие разборки показали, что требуется шить именно User Area и тут уже начали опускаться руки, т.к. инфы по этому поводу мало, она часто путает, а скудные образцы кода были почти никак не комментированы (не в обиду @ADA007  ). Здесь я решил уйти немного в сторону и присобачить к злосчастному программатору UrJTAG и/или OpenOCD. В общем под Виндой (проверял на 7ке, т.к. версию ISE для 10ки у меня не тянет проц в следствие отсутствия виртуализации) достаточно установить официальный установочник драйверов VCP/D2XX (https://www.ftdichip.com/Drivers/VCP.htm или https://www.ftdichip.com/Drivers/D2XX.htm, там одно и то же, нажимать на ссылку в разделе Comments), возможно потребуется немного поиграть с заменой драйверов в Zadig, если уже были установлены какие-либо драйвера до этого или успели уже что-то понаустанавливать. В конце концов UrJTAG научится определять программатор: Код cable ft2232 (да, ft2232, даже если у вас, как и у меня, 232h). Далее, чтобы работала команда Код detect нужно предварительно сказать UrJTAG где ему искать конфигурацию. Для этого с сайта Xilinx качаем BSDL файлы, распаковываем и прописываем команду Код bsdl path C:\Users\Chufyrev\Xilinx\xc6s-2014 и теперь можно детектировать chain (в папке можно оставить только bsdl-файлик для вашей ПЛИСины). Вместо прошивки непосредственно bitstream я генерировал в iMPACT svf-файл: - Жмем Output - SVF File - Create
- Выбираем наш сгенерированный ранее bit-файл
- Появляется картинка чипа, жмем на него, слева Program
- Из того же меню Output говорим Stop SVF
Теперь у нас есть SVF, который мы можем скормить UrJTAG. После пары десятков прошивок рука набьется в этих действиях до автоматизма  Все команды 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, как я понял, поставить надо еще постараться.
|
|
|
|
|
Sep 28 2018, 11:39
|
Группа: Новичок
Сообщений: 2
Регистрация: 27-09-18
Пользователь №: 107 742

|
UPDATE: Под Ubuntu 18 также программатор увиделся, нужно было поставить Digilent Plugin.
|
|
|
|
|
  |
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|