Corner 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Есть у меня HW-USB модуль на FT4232. Кто подскажет - допилить, чтобы ксилинкс поддерживал можно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 17 декабря, 2013 Опубликовано 17 декабря, 2013 · Жалоба Например для HS2... Как думаете, если подсунуть impact-у HS2 сделанный не на ft232h , а на ft2232h (двухпортовом) - будет работать? (по идее система команд в драйвере у них должна быть одинаковая на 1-й порт) и было бы здорово иметь полный dump с eeprom для hs2 - чтобы это попробовать, а не только с 0x50 до 0х78... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 54 17 декабря, 2013 Опубликовано 17 декабря, 2013 · Жалоба 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 0 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба 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: ЗЫ: Правильно ли я понимаю, что CRC16, что стоит в конце eeprom, от user area не считается? :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alver 0 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба Т.е. вроде как user area должна начинаться с 0х14 в вашем случае. Не вижу в списке FT232H Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба Не вижу в списке FT232H Потому, что про user area упоминают FTDI только в этом документе. И больше ничего не нашел про это - вот и подумал, что распространяется на всю серию микросхем FT232x. К тому же ребята с сайта используют тот же 232h и ссылаются на тот же документ, что я привел выше. Если кто подскажет, где написано конкретно про ft232h - буду очень благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 54 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба Действительно, 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 0 10 января, 2014 Опубликовано 10 января, 2014 · Жалоба Действительно, FT232H несколько отличается от остальных. Спасибо, действительно отличается, код чипа (0x56) записывается => ft2232h output[0x18] = eeprom->chip; ft232h output[0x1e] = eeprom->chip; т.е. user_area у 232h начинается действительно с 0х20 адреса... Там есть и алгоритм вычисления чексуммы, который весьма далек от CRC16: Судя из приведенного кода сумма считается от все памяти и похоже, что ftdi-ка не считывает данные, если контрольная сумма не правильная... :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 16 января, 2014 Опубликовано 16 января, 2014 · Жалоба Все оказалось до безобразия просто. Перешивать пользовательскую зону 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: ЗЫ: vid/pid нужно оставлять оригинальными, а иначе не из той области eeprom будет вычитываться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 54 16 января, 2014 Опубликовано 16 января, 2014 · Жалоба Поздравляю! ПЛИС прошивали? ADBUS0 и ADBUS4 замыкать не нужно - и так все работает! Предполагаю, в какой-то из версий вместо этой перемычки была петля по печатной плате по длине JTAG-цепочки для определения задержки тактового сигнала и автоматической установки максимальной частоты. Владельцы ZedBoard, откликнитесь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 16 января, 2014 Опубликовано 16 января, 2014 · Жалоба Поздравляю! ПЛИС прошивали? Да...прошивал...кабель определяется impact-ом как HS2...на днях еще попробую ChipScope Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 54 16 января, 2014 Опубликовано 16 января, 2014 · Жалоба Возьму на заметку, пока использовал только FT232H: мультиплексировал между JTAG и пользовательскими данными. С дополнительным портом проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 54 17 января, 2014 Опубликовано 17 января, 2014 · Жалоба Ради такого случая решил поиздеваться над FT4232H mini module. В 14.7 версии софта импакт находит устройство, как программатор Digilent, это видно по лог-файлу, но потом выдает ошибку - "failed to open device handle". Так что не все йогурты одинаково полезны. И еще подтверждаю - доступа к eFUSE регистрам через Digilent нет, даже меню соответствующее не появляется, через Platform Cable на той же плате все программируется. Алгоритм расчета контрольной суммы в драйверах D2XX - какой-то свой, не CRC16 и не как в libftdi. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 20 января, 2014 Опубликовано 20 января, 2014 · Жалоба Алгоритм расчета контрольной суммы в драйверах 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rloc 54 20 января, 2014 Опубликовано 20 января, 2014 · Жалоба Опа, никак под Линукс проверяли? Т.е. еще не факт, что FT2232H под Виндоус подойдет. Код завтра проверю. По-началу писал побайтно и контрольную сумму вычислял сам, но Импакт не видел программатор, потом - через запись юзеровской области целым блоком, драйвера сами посчитали контрольную сумму и все определилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться