реклама на сайте
подробности

 
 
> CY7C68013A отключить загрузку прошивки по Usb
evgen_ln
сообщение Sep 17 2010, 18:23
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Приветствую, подскажите пожалуйста, существует ли способ программно отключить возможность загрузки прошивки через Usb. Суть в том, что разрабатывается клон устройства под существующие закрытые драйвера, в процессе ренумерации подгружающий оригинальную прошивку заменяя ней написанную мною, протокол известен. В ходе чтения EZ-USB Technical Reference Manual, я понял, что все реализовано через вендорспец. команду 0хА0. Но как запретить на нее реагировать, или изменить поведение при ее получении способа так и не увидел.
Подскажите, может есть идеи.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
Konst_777
сообщение Sep 18 2010, 16:47
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(evgen_ln @ Sep 17 2010, 21:23) *
...Суть в том, что разрабатывается клон устройства под существующие закрытые драйвера, в процессе ренумерации подгружающий оригинальную прошивку заменяя ней написанную мною, протокол известен...

Вот это предложение не понятно. Или речь идет о том, что кто-то установил на Вашем компьютере выполнение скрипта для CyUsb.sys, а Вы теперь мучитесь (см. подраздел "Execute a script at start-up" в разделе "Modifying CyUSB.INF" файла "CyUSB.pdf" или "CyUSB.chm").
Цитата(evgen_ln @ Sep 17 2010, 21:23) *
Приветствую, подскажите пожалуйста, существует ли способ программно отключить возможность загрузки прошивки через Usb...

Используйте свой собственный драйвер устройства USB (или фильтр-драйвер), который не будет пропускать "вендорспец. команду 0хА0". И не используйте VID и PID, являющиеся собственностью Cypress (возможно уже это поможет).
Go to the top of the page
 
+Quote Post
evgen_ln
сообщение Sep 18 2010, 18:52
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Цитата
Вот это предложение не понятно.
Да как то сумбурно написал.
В общем разрабатываю устройство которое будет определятся системой как NVIDIA® 3D Vision™ . Устройство будет использовать драйвера от NVIDIA и поддерживать работу с альтернативными 3Д очками. В процессе установки драйвер посылает устройству, запрос с командой 0хА0, которая обрабатывается CY7C68013A автоматически, и происходит загрузка прошивки для оригинального устройства (заменяя написанную мной). Вот меня и интересует вопрос возможно ли как то средствами прошивки избежать обработки запроса с командой 0хА0.
Фильтр-драйвер, я отношу к последним средствам на ровне с патчем дров.
Жаль устройство практически готово, прошивка написана и такой облом.
Go to the top of the page
 
+Quote Post
alexkok
сообщение Sep 19 2010, 01:34
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(evgen_ln @ Sep 18 2010, 21:52) *
Вот меня и интересует вопрос возможно ли как то средствами прошивки избежать обработки запроса с командой 0хА0.

Вряд ли.
Но Вы можете отлавливать момент ренумерации после заливки драйвером его прошивки и, придерживая Bus reset, перезалить свою прошивку с EEPROM, после этого отпустить Bus reset.
Но придётся добавлять какой-нибудь мелкий контроллер или пару микросхем логики.


--------------------
Go to the top of the page
 
+Quote Post
evgen_ln
сообщение Sep 19 2010, 13:23
Сообщение #5





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Цитата
перезалить свою прошивку с EEPROM, после этого отпустить Bus reset
Чесно говоря я не представляю как это можно реализовать на практике.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Sep 19 2010, 15:17
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(alexkok @ Sep 19 2010, 04:34) *
...Но Вы можете отлавливать момент ренумерации после заливки драйвером его прошивки и, придерживая Bus reset, перезалить свою прошивку с EEPROM, после этого отпустить Bus reset....

То есть, предлагаете добавить аппаратный watchdog. Firmware FX2LP должно периодически инвертировать состояние вывода контроллера, подключенного ко входу сброса watchdog-а. Тогда, через некоторое время после загрузки чужой прошивки watchdog выдаст аппаратный Reset и произойдет загрузка штатной прошивки из EEPROM. Все это работает для FX2 (CY7C68013), но не для FX2LP. На время выдачи аппаратного Reset FX2LP отключается от USB (раздел "3.2 Automatic Disconnect and Reconnect on Hard Reset" в файле "fx2_to_fx2lp.pdf"). После снятия Reset произойдет загрузка штатной прошивки, затем подключение к USB и драйвер снова загрузит "чужую" прошивку. Процесс будет циклически повторяться...

Цитата(evgen_ln @ Sep 18 2010, 21:52) *
...В процессе установки драйвер посылает устройству, запрос с командой 0хА0, которая обрабатывается CY7C68013A автоматически, и происходит загрузка прошивки для оригинального устройства (заменяя написанную мной)...

А что, действительно в NVIDIA Stereoscopic 3D USB controller используется CY7C68013A?
Go to the top of the page
 
+Quote Post
evgen_ln
сообщение Sep 19 2010, 16:54
Сообщение #7





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Цитата(Konst_777 @ Sep 19 2010, 18:17) *
А что, действительно в NVIDIA Stereoscopic 3D USB controller используется CY7C68013A?

Да, CY7C68013A-100. Могу скинуть фотку если интересно.

NVIDIA выбрала этот контролер для ”ПИРАМИДКИ” в силу критичности таймингов, работа устрайства возможна только в режиме USB 2.0 Hi Speed, а контролеров с поддержкой этого режима сами знаете раз два и обчелся. CY7C68013A самый часто используемый и проверенный. Вот на нем и сделали.
В самих беспроводных очках использован AVR.

Сообщение отредактировал evgen_ln - Sep 19 2010, 16:55
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Sep 19 2010, 18:38
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(evgen_ln @ Sep 17 2010, 21:23) *
...Суть в том, что разрабатывается клон устройства под существующие закрытые драйвера, в процессе ренумерации подгружающий оригинальную прошивку заменяя ней написанную мною, протокол известен...

Цитата(evgen_ln @ Sep 18 2010, 21:52) *
...В процессе установки драйвер посылает устройству, запрос с командой 0хА0, которая обрабатывается CY7C68013A автоматически, и происходит загрузка прошивки для оригинального устройства (заменяя написанную мной)...

Цитата(evgen_ln @ Sep 19 2010, 19:54) *
Да, CY7C68013A-100..

Ну так, нужно найти, где хранится, загружаемая драйвером прошивка и подменить ее на свою. Конечно, если прошивка хранится в драйвере, то заменить ее будет очень сложно. Поскольку драйвер подписан. А вот если, где то в отдельном файле или dll, то прошивку можно будет подменить. Итак первый шаг - найти, где находится прошивка.
Go to the top of the page
 
+Quote Post
evgen_ln
сообщение Sep 19 2010, 19:05
Сообщение #9





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Прошивка лежит в драйвере nvstusb.sys, причем в трех ипостасиях. Судя по хеадерам, устройство имеет несколько версий. В логах ЮСБ снифера снятого с реального устройства, на который я опирался стоит версия продукта 0300. Да драйвера подписаны ибо существуют только под Висту и Вин7. Ну скажем переподписать тестовой подписью не проблема, меня такой вариант устроит, но как быть с разной длиной моей прошивки и оригинальной, просто забить 0х00. В драйвере прошивка в формате hex.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Sep 19 2010, 19:33
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Если Ваша прошивка имеет меньший объем, то можно и "просто забить 0х00". Драйвер должен сам понять по полям hex, где заканчивается прошивка.

Вообще же, мои познания в том, как хранится информация в исполняемых файлах, очень незначительны.

Цитата(evgen_ln @ Sep 19 2010, 22:05) *
Прошивка лежит в драйвере nvstusb.sys, причем в трех ипостасиях...

Вообще то в четырех и в таком порядке: VID_0955&PID_0007, VID_0955&PID_7004, VID_0955&PID_7002, VID_0955&PID_7003. Причем в формате iic (подраздел "3.4.3 Serial EEPROM Present, First Byte is 0xC2" из EZ-USB® Technical Reference Manual (EZ-USB_TRM.pdf)), а не Intel Hex.

Поиск начала iic блока по последовательности: c2 55 09, поиск конца iic блока по последовательности: 80 01 E6 00 00 00

Сообщение отредактировал Konst_777 - Sep 19 2010, 20:24
Go to the top of the page
 
+Quote Post
alexkok
сообщение Sep 19 2010, 20:19
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(Konst_777 @ Sep 19 2010, 19:17) *
То есть, предлагаете добавить аппаратный watchdog. Firmware FX2LP должно периодически инвертировать состояние вывода контроллера, подключенного ко входу сброса watchdog-а. Тогда, через некоторое время после загрузки чужой прошивки watchdog выдаст аппаратный Reset и произойдет загрузка штатной прошивки из EEPROM. Все это работает для FX2 (CY7C68013), но не для FX2LP. На время выдачи аппаратного Reset FX2LP отключается от USB (раздел "3.2 Automatic Disconnect and Reconnect on Hard Reset" в файле "fx2_to_fx2lp.pdf"). После снятия Reset произойдет загрузка штатной прошивки, затем подключение к USB и драйвер снова загрузит "чужую" прошивку. Процесс будет циклически повторяться...

Нет, я предполагал что после после загрузки прошивки драйвером фёрмваре будет делать ренумерацию (только перепутал disconnect с bus reset), но оно, конечно, может этого и не делать.


--------------------
Go to the top of the page
 
+Quote Post
evgen_ln
сообщение Sep 19 2010, 21:57
Сообщение #12





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Спасибо Konst_777, четвертой не заметил. Завтра буду пробовать, отпишусь
Go to the top of the page
 
+Quote Post
evgen_ln
сообщение Sep 20 2010, 19:30
Сообщение #13





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Докладываю, патчинг прошел успешно, виндовс принял драйвер. Кусок старой прошивки не забивал нулями, так и оставил, на функционал не повлиял. Драйвер подписал тестовой подписью, при помощи утилитки dseo13b, кстати для драйвописателей очень удобна все в одном флаконе для Тестового режима Вин 7 / Виста.
Еще раз спасибо всем принявшим участие в обсуждении.
Если у кого будут альтернативные идеи по теме ветки буду благодарен.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Sep 20 2010, 19:58
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(evgen_ln @ Sep 20 2010, 22:30) *
...
Если у кого будут альтернативные идеи по теме ветки буду благодарен.

Альтернативных идей пока нет, а вопрос есть. Почему не получилось сделать полный клон? Тогда можно было использовать для FX2LP firmware от NVIDIA и не нужно было бы модифицировать драйвер.
Go to the top of the page
 
+Quote Post
evgen_ln
сообщение Sep 20 2010, 20:38
Сообщение #15





Группа: Новичок
Сообщений: 9
Регистрация: 17-09-10
Пользователь №: 59 561



Основная задача реализовать поддержку сторонних очков, более дешевых но не хуже оригинальных (ED, XpanD). Поэтому софт по любому надо писать самому. В моем распоряжении плата с CY7C68013A-56, делаю на нем для себя и группы товарищей упрощенный по железу вариант. И для данной задачи этого достаточно, происходит обработка 8 битовых пакетов, их синхронизация, и дерганье портом исходя из необходимого протокола. На порт повешены ИК-диоды через полевик-драйвер вот и все. Копию железа сделать можно в принципе достаточно любой китайской тестбоард CY7C68013A-100/128, но зачем. Я дизасемблировал прошивку и получил довольно полное представление о функционале сего девайса и считаю железо избыточным. Да и разбираться с новыми контролерами мое хобби...

Сообщение отредактировал evgen_ln - Sep 20 2010, 20:39
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 18:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01527 секунд с 7
ELECTRONIX ©2004-2016