ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
139168 Топик полностью
Гудвин, волшебник (18.11.2008 01:39, просмотров: 568) ответил ReAl на А нельзя ли дамп еепромки как-то снять? И вообще - у кого что есть типа тех же олимексов. А я попробую позаливать это в свою и поизучать поведение.
Щас просто замкнул выходную ногу eeprom на Vdd, и все стало кучеряво - опозналось как "Dual RS232 A". Подоткнул м161, шьет, стервец... Вообщем, вспомнил - я ееprom шил программатором, ибо если программировал утилиткой FTDI, то макрейгоровское ПО ее не признавало. Там в юзерской области что-то прописывается и режимы обеих портов 2232 задаются для каждого. Посему и не хотел переписывать ;) ЗЫ: Качнул с электроникса свои-же "исследования" двухлетней давности: Цель: ужна jtag отладка под MIPS - выстрее wiggler... Ну и для ARM тоже... Вообщем, у меня имеется всего навсего сканы двух сторон платы usbDemon и прошивка EEPROM, присланная автором первого поста старого топика. Вот ини: http://www.edaboar …/viewtopic.php?t=78033 Кстати, сканы уж очень смахивают на прототип - нет никакой разводки в части jtag... (PS: Все ОК - просто там субплата с буфером) Прошивку в 93с46 надо лить программатотором (MProg.exe от FTDI не катит - что-то неправильно шьет). Но считывается этой утилитой содержимое EEPROM верно (в соответствующем окошке). ПРОШИВКА: 0000 : 01 00 AC 08 25 10 00 05 80 2D 08 00 00 02 96 14 .. .. .. .. .. .. .. .. 0010 : AA 1A C4 12 46 00 14 03 4D 00 61 00 63 00 72 00 .. .. .F .. .M .a .c .r 0020 : 61 00 69 00 67 00 6F 00 72 00 1A 03 75 00 73 00 .a .i .g .o .r .. .u .s 0030 : 62 00 44 00 65 00 6D 00 6F 00 6E 00 28 00 74 00 .b .D .e .m .o .n .. .t 0040 : 6D 00 29 00 12 03 30 00 31 00 30 00 30 00 30 00 .m .. .. .0 .1 .0 .0 .0 0050 : 33 00 33 00 32 00 00 00 00 00 00 00 00 00 00 00 .3 .3 .2 .. .. .. .. .. 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 60 0E .. .. .. .. .. .. .. Одна половина FT2232C (B) сконфигурирована обычным последовательным портом, другая (A) - jtag. Собрал макетку для экспериментов. Схема подключения типовая для MPSSE режима. Буфер не ставил. Для питания интерфейсной части микросхемы поставил стабилизатор на 3.3В. Оба канала запитал от него. По рисунку платы соединил между собой ноги 37,38 (RTS,CTS). Точку их соединения через резистор 1 кОм и светодиод подключил к +3.3В. Ногу 33 на GND (CD). Выводы TDI, TDO, TCK, TMS соединил стандартно к шлейфу через резисторы 51 Ом. (в оригинале все питается от 5В - потом видимо подсоединяются шлейфы для разных процессоров через разъем и устанавливается буфер LVC16245) По фото (если предположить, что U5 - буфер LVC16245), nTRes - это вывод 36 FT2232C. А nReset - 15 (через буферный инвертор - резистор 3 кОм + n-p-n транзистор). По крайней мере для ARM... Для MIPS - еще присутствует импульс на выводе 13 (DINT) На фотографии видно, что задействаны все ноги портов GPIOH0 и GPIOL0. Причем первый (4 ноги) работает на вывод, а второй (4 ноги) на ввод. ЗЫ ЗЫ: Похоже 3 входных ноги задействованы для BDM (проследил по фото). Ноги 39,40 (RXD,TXD) используются в оригинале для считывания микросхемы памяти с криптозащитой DS2432 от maxim-dallas. TXD(40) через буфер с открытым коллектором и подтягивающий резистор соединен со входом RXD (39). Микросхема подсоединена DS2432 параллельно. Вообщем стандартное подключение для 1wire. Библиотека usbdemon.dll от Macraigor (из папки system32) - не что иное, как FTD2XX.dll от FTDI (usbdemon.sys - тоже). C помощью отладчика IDA легко перчить библиотеку jtag_usb.dll. Для отладки dll в качестве "host application" в установках отладчика можно выбрать например UsbDemonFinder.exe. Вообщем как я понял при запуске программ от Macraigor сначала анализируется какое устройство подключено к USB. Напрямую EEPROM не считывается. После того, как выяснится, что устройсво соответствует (vid,pid и пр.) подключается нужная DLL (jtag_usb) и из не уже выполняется процедура чтения серийного номера DS2432. Запустил я это дело сначала с таблеткой DS1990 - нашел в jtag_usb.dll процедуру считывания серийного номера 1wire микросхем. Далее там проверяется соответствие группового кода 0x33 для DS2432. Заменил на 0x01 - программа UsbDemonFinder нашла устройство с серийным номером DS1990. Далее я это дело еще упростил - несколько ранее выполняется вообще проверка наличия 1wire устройства - попатчил - и начало определяться 1wire устройство с номером FFFFFFFFFFFF. После этого решил, что Ноги 39,40 (RXD,TXD) _можно вообще соединить перемычкой_ (и нужно!). Потом (как я понял) начинается чтение лицензии из DS2432. Но так как из устройства считываются все 0xFF, после 2-3 секунд попыток чтения лицензии новый UsbDemonFinder (да и другие программы от Macraigor) находят устройство "usbDemon" с серийным номером FFFFFFFFFF. (старый UsbDemonFinder определяет как "usbSprite LS") В UsbDemonFinder можно помигать светодиодом , нажав соответствующую кнопку. Если поковырять редактором ресурсов UsbDemonFinder.exe, то можно открыть пару кнопочек - вывод флагов и запись флагов в криптозащищенную память... Вывод выглядит так: HW: 0003 FLGS: FF FF FF FF FF FF FF FF Короче после некоторого лечения jtag_usb.dll, устройствао начинает работать... Из DS2432 считывается инфа, которая потом разсовывается в локальные переменные... Пробовал патчить, чтобы считывались все 0 и все 0xFF. Работает - то работает... Но результаты не впечатлили - с процессорами MIPS - тормоза вообще страшные (wiggler работает намного шустрее), С ARM - быстрее. При старте программ долго и многократно (10-15 сек) происходит считывание лицензии из устройства (это можно видеть usb сниффером). Кстати скорость TCK выставляется нормально - от 4 кГц до 6 МГц. (8 скоростей) Правда все новые программы пишут скорости для нового usb2Demon (на основе EZ-USB), старые кажут нормально... Вообщем уперся в недостаток информации - "а как это все работает на оригинальном устройстве"???. СтОит-ли ковырять лицензирование ? Может там собака порылась?- и скорость искуственно занижена из-за некорректной лицензии? jtag_usb.dll при работе делает попытки обращения к двум файлам : jtag_usb.con и mac_usb.new. (обнаружено Filemonitor-ом) Они видимо должны создаться при корректном программировании лицензии в утилите UsbDemonFinder. (PS: ничего не создается - пишется только лицензия в кристалл). PS: Короче дивайс работает, но работает медленно по уже упомянутой один раз причине - опрос по USB происходит раз в 2 мс... И думается мне авторская защита на том и построена - мало запустить дивайс, надо еще и ПРАВИЛЬНО запустить. Скорее всего есть какие-то недокументированные опции драйвера, которые являются великой тайной ;) То-есть надо добиться того, чтобы в интервале 2 мс происходил множественный обмен... PPS: Все-таки "пакетный" обмен иногда присутствует (судя по осциллограммам)... PPPS: Стартует примерно 1.5 сек. Читает "серийный номер", потом читает из дивайса "лицензию" - заполняет структуры в DLL. Естественно все 0xFF (можно 0x00)... PPPPS: В ПО от Macraigor есть поддержка автоопределения скорости jtag. Если выставить максимум, а target это не поддерживает, то скорость автоматом снижается до работоспособной... EEPROM можно! записать утитой MProg - надо просто подключить без EEPROM, должны стоять самые свежие драйвера от FTDI. Потом вставить EEPROM в панельку и зашить файл... Серийный номер можно выставить любой... Автор первого топика имеет железку - прислал мне сканы субплаты в буфером и разъемами. Прислал содержимое каталога - точно такое же, как и скачанное с сайта... Прислал screenshot usbdemon_finder c работающей железяки... Результат: Все работает, но медленно - каждое обращение к jtag выглядит так: FT_Write() FT_GetQueueStatus() FT_Read() Вроде все правильно, но каждый такой цикл занимает 2мс - интервал опроса USB драйвера... Вот такие любопытные мессаги прослеживаются в функции InitJtagController: Host not buffering',0 Host buffering',0 chip flushing',0 chip not flushing',0 WARNING: INTENSIVE LOGGING IS ENABLED : ',0; WARNING: LOGGING IS ENABLED : ',0 INIT JTAG CONTROLLER: passed',0 Timeout: ',0 seconds',0 Latency: ',0 JTAG Speed: ',0 SLOW MODE on',0 SLOW MODE off',0 Intense logging on',0 CPLD',0 Single chip',0 chip will flush buffer',0 chip will NOT flush buffer',0 Crap in buffer = ',0 bytes due to bit bang mode',0 Вот сравнение с электроды : ------------------------------------------------ [quote="dainis"][quote="Ace-X"] Can you provide performance results of FT2232? It looks very promising as USB JTAG solution, but I still have no chances to try it on.[/quote] FLASH Image size 302254 bytes ( 295,17KB), Flash chip M29W320DB Samsung S3C4530A ARM7TDMI CPU Performance for 3 different JTAGS, with Macraigor FlashProg: Wiggler speed=1, JTAG clock 320KHz Programm/Verify 5,9KB/s Verify 7KB/s Raven (Amontec Chameleon POD) JTAG clock 8MHz Programm/Verify 15,5KB/s Verify 16,4KB/s Macraigor usbDemon (FT2232 chip based) Programm/Verify 8,9KB/s Verify 12,3KB/s ------------------------------------------------ Попробовал - результаты очень похожи ! Надо пробовать сравнивать с фирменным... Похоже все работает...