|
|
  |
Как прошить камень Cypress FX2, используя драйвер CyUsb.sys |
|
|
|
Jan 17 2007, 15:13
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704

|
Цитата(Warlord @ Jan 17 2007, 11:47)  Есть 2 варианта: прошивка загружается операционной системой с помощью скрипта сразу после загрузки драйвера, и второй - с помошью утилиты CyConsole. Хочется третий вариант - самому. Может кто уже сталкивался или реализовал?? Никаких проблем. В Cypress'овской USB DevStudio есть пример FxEEPROM, в котором расписана, в числе прочего, и процедура загрузки RAM микросхемы FX2 (функция LoadHexToRAM). Все делается простыми операциями через Control Endpoint с запросом Vendor Request = 0xA0 (Upload/Download on-chip RAM). Правда, пример написан на Борландовском Си...
--------------------
MPEG-4 - в массы!
|
|
|
|
|
Jan 17 2007, 16:26
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874

|
Огромное, спасибо, jur! А то я уже начал копать CyConsole и обнаружил что сначала она загружает VendAX прошивку, которая зашита внутри, а потом уже собсно рабочую. Я тоже пишу на борланде, так что не надо будет перекраивать код  З.Ы. Я несколькими неделями ранее уже копал этот проект FxEEPROM, так ради интереса, но до конца не разбирался (так как использовал ezusb.sys) и поэтому пропустил его мимо :\
|
|
|
|
|
Jan 17 2007, 20:23
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704

|
Цитата(Warlord @ Jan 17 2007, 15:26)  Огромное, спасибо, jur! Без вопросов :-) Кстати, я вот об этом процессе ренумерации думаю, думаю... Как-то мне не до конца понятно, как же в деталях, по шагам, он происходит? В общем виде - все понятно, но бес кроется в мелочах... Меня смущает вот что. Напишу я свою программу, которая загружает FX2. Когда FX2 загрузится, она ренумерируется и появляется уже как другая микросхема. Но ведь прежняя-то пропадает! Детально этот процесс мне видится так: 1. Запускается моя программа. 2. Она должна найти исходную FX2, до ренумерации (с моими VID/PID). 3. Программа загружает процессор FX2 и рестартует его. 4. (Вот тут интересно) Моя программа должна закрыть исчезнувшее устройство с исходной FX2! 5. Программа открывает уже новую FX2 и может работать с моим устройством. Встает вопрос: что делать, если FX2 уже сконфигурирована? Предусмотреть какие-нибудь спец-регистры? Или зашить еще и разные DID для моих VID/PID? В простейшем случае можно, конечно, наплевать на предупреждение Cypress и работать с их VID/PID (0x04B4/0x8613) для начальной загрузки, и со своими VID/PID после ренумерации. Тогда следует предварительно проверить, существует ли в системе устройство с моими VID/PID. Если существует - то просто начинаем работать. Если не существует, то проверяем, имеется ли устройство с VID/PID равными 0x04B4/0x8613. Если есть - загружаем свою прошивку, если нет - Error. Я верно понимаю этот процесс?
--------------------
MPEG-4 - в массы!
|
|
|
|
|
Jan 18 2007, 08:22
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704

|
Цитата(Doka @ Jan 17 2007, 20:38)  Цитата(jur @ Jan 17 2007, 20:23)  4. (Вот тут интересно) Моя программа должна закрыть исчезнувшее устройство с исходной FX2! я бы не связывал так однозначно загрузку нового бинарника и исчезновения/появление устройства. Не понял. Какого бинарника? Я имел ввиду то, что после загрузки фирмвари в FX2 у нас происходит отключение из системы одного устройства (исходной, неренумерированной микросхемы) и подключение другого (моей целевой системы). Происходит ренумерация. Цитата(Doka @ Jan 17 2007, 20:38)  процесс ренумерации довольно подробно описан в TRM и в цайпрессных слайдах. (по памяти): FX2 отключением подтягивающего резистора от шины переводит автомат состояний USB в состояние disconnected. Затем из программы востанавливается значение бита регистра - состояние - connected и последующие ритуалы распознания и инциализации USB-девайса. Во, во. Т.е. эмулируется как бы физическое отключение одной микросхемы и подключение другой. А раз она отключилась, то нужно закрыть открытый для нее драйвер, выполнить "Close", так сказать, и потом заново "Open". Потом еще это возможное существование моего устройства при запуске программы... Я ведь как? Могу один раз запустить программу, выйти из нее, и затем еще раз запустить. Так при первом запуске в системе будет присутствовать микросхема с одними VID/PID (0x04B4/0x8613), а при повторном запуске - уже с другими (с VID/PID целевой системы). Я ведь питание не отключал, мое железо как было ренумерировано на целевые VID/PID, так и осталось. В общем, покумекать еще нужно :-)
--------------------
MPEG-4 - в массы!
|
|
|
|
|
Jan 18 2007, 10:47
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874

|
Цитата(jur @ Jan 17 2007, 20:23)  1. Запускается моя программа. 2. Она должна найти исходную FX2, до ренумерации (с моими VID/PID). 3. Программа загружает процессор FX2 и рестартует его. 4. (Вот тут интересно) Моя программа должна закрыть исчезнувшее устройство с исходной FX2! 5. Программа открывает уже новую FX2 и может работать с моим устройством. .... Я верно понимаю этот процесс? Все правильно, после того как ядро usb отключает подтягивающий резистр от шины, ОС выгружает драйвер устройства, апликухе остается только освободить дескриптор (Close), поймать сообщение системы о том, что лист устройств изменился(дополнился), снова создать класс, если Count>0 то можно проверить VID/PID. Вот только надо быть осторожным с inf файлами, их д.б. 2 одинаковых с разными VID/PID. Я использую одинаковые V/P но разные DID.
|
|
|
|
|
Jan 18 2007, 14:49
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874

|
Уж не знаю чем CyLoad(v1.3) отличается от CyUSB(v1.7) только CyUSB тоже может проигрывать скрипты: Цитата CyUSB.chm писал: Features · Supports automatic play-back of control transfer scripts at device startup но это при подлючении устройства, после загрузки его драйвера, а мне надо в любой момент и любую прошивку, а не ту которая указана в inf файле. jur подсказал, и я реализовал загрузку, все получилось
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|