|
|
  |
Вопрос про CY7C68013 EZ-USB FX2, Есть готовое устройство, нужно подключиться, не поломав. |
|
|
|
Aug 31 2010, 11:41
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 24-06-09
Пользователь №: 50 601

|
Добрый день. Систуация такая. Имеется готовое устройство от буржуйских разработчиков, построенное на базе CY7C68013. К нему прилагается программа под винду, которую мне нужно полностью заменить своей самопальной программой. При этом прошивку устройства требуется оставить нетронутой. Использует она драйвер ezusb.sys. Имеется также бумажка с описанием USB команд и формата пакетов для устройства. Никогда с данным чипом дела не имел. Сейчас скачал CY3681 EZ-USB FX2 Development Kit, запустил EZ-USB Control Panel. Устройство успешно определилось. Смотрю на все это, и возникают у меня вопросы, и не могу я удержаться и не задать их вам.
1. Как мне скопировать всю информацию из чипа (программу, EEPROM и.т.д.), и что вообще нужно копировать, чтобы в процессе изучения не испортить объект изучения?
2. Я правильно понимаю, что EZ-USB Control Panel позволяет мне вручную потестировать интерфейс взаимодействия с устройством, напрямую посылая байты в оконечные точки и принимая оттуда данные?
3. uVision2 - это программа для написания прошивки? Нужно ли мне вообще в ней что-то делать, если я прошивку менять не хочу?
4. Я скачал и установил Suite USB 3.4 for Visual Studio. В самой студии ничего не изменилось. Как мне ее найти? Умеет ли она работать с драйвером ezusb.sys? Если нет, то можно ли мне использовать новый драйвер cyusb.sys, если прошивка написана под старый?
5. Как узнать, в каком режиме девайс работает - full speed или high speed?
6. Сейчас сижу под вистой. Могут ли возникнуть проблемы из-за несовместимости с ней старого драйвера?
7. (пространный) Может ли в устройстве быть защита, которая не позволит ему работать не с родной программой? (догадываюсь, что может). Может ли быть защита, которая не позволит ему работать с инструментарием от cypress? Может ли быть защита, которая что-нибудь сломает, если "узнает", что я пытаюсь написать свою софтину?
8. Какой алгоритм дальнейшей работы посоветуете? Какие программы использовать? Какие вопросы у меня еще не возникли, но могут возникнуть в ближайшее время? На какие подводные камни я могу напороться?
На некоторые из этих вопросов на форуме в том или ином виде уже есть ответы, но меня они не совсем устроили. Большое спасибо всем, кто откликнется!
Сообщение отредактировал niktagor - Aug 31 2010, 11:44
|
|
|
|
|
Aug 31 2010, 17:30
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 24-06-09
Пользователь №: 50 601

|
При попытках понять работу примера BulkXfer, родился вот такой код: CODE #include "stdafx.h" #include <stdio.h> #include <windows.h> #include <stdlib.h>
int _tmain(int argc, _TCHAR* argv[])
{ HANDLE phDriver;
SECURITY_ATTRIBUTES security; security.nLength = sizeof(security); security.lpSecurityDescriptor = NULL; security.bInheritHandle = false;
LPCWSTR completeDeviceName; completeDeviceName = (LPCWSTR)"Ezusb-0"; phDriver = CreateFile( completeDeviceName, GENERIC_WRITE, FILE_SHARE_WRITE, &security, OPEN_EXISTING, 0, NULL); printf("%d\n",phDriver); getchar(); return 0; } Програмка упорно выдает -1 с кодом ошибки 2(ERROR_FILE_NOT_FOUND). В чем ошибка? EZ-USB Control Panel говорит, что девайс называется Ezusb-0.
|
|
|
|
|
Aug 31 2010, 18:11
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(niktagor @ Aug 31 2010, 14:41)  1. Как мне скопировать всю информацию из чипа (программу, EEPROM и.т.д.), и что вообще нужно копировать, чтобы в процессе изучения не испортить объект изучения? Читайте в теме Проблема с cy7c68013a. Скопировать нужно все содержимое EEPROM. По типу EEPROM определите ее емкость. Посмотрите, может быть Ваш модуль содержит перемычку или джампер, с помощью которых можно отключить EEPROM. Цитата(niktagor @ Aug 31 2010, 14:41)  2. Я правильно понимаю, что EZ-USB Control Panel позволяет мне вручную потестировать интерфейс взаимодействия с устройством, напрямую посылая байты в оконечные точки и принимая оттуда данные? Да. EZ-USB Control Panel это бабушка Cypress USB Console (CyConsole.exe). Цитата(niktagor @ Aug 31 2010, 14:41)  3. uVision2 - это программа для написания прошивки? Нужно ли мне вообще в ней что-то делать, если я прошивку менять не хочу? Нет. Цитата(niktagor @ Aug 31 2010, 14:41)  4. Я скачал и установил Suite USB 3.4 for Visual Studio. В самой студии ничего не изменилось. Как мне ее найти? Умеет ли она работать с драйвером ezusb.sys? Если нет, то можно ли мне использовать новый драйвер cyusb.sys, если прошивка написана под старый? В самой студии ничего измениться и не должно. Suite USB 3.4 содержит драйвер cyusb.sys и библиотеки для общения с драйвером для Visual Studio: cyapi.lib - для C++ и cyusb.dll для C#. А также документацию и примеры. Прочитайте "ReleaseNotes.pdf". Нет ezusb.sys это дедушка cyusb.sys. Можно, нужно отредактировать cyusb.inf файл, добавив в него VID и PID для Вашего устройства, а затем выполнить принудительную установку драйвера cyusb.sys. Цитата(niktagor @ Aug 31 2010, 14:41)  5. Как узнать, в каком режиме девайс работает - full speed или high speed? Посмотреть с помощью CyConsole.exe. Если для Bulk endpoint "Max Pkt Size" равно 512, то девайс работает в high speed, если 64, то в full speed. Цитата(niktagor @ Aug 31 2010, 14:41)  6. Сейчас сижу под вистой. Могут ли возникнуть проблемы из-за несовместимости с ней старого драйвера? Могут, используйте cyusb.sys для Vista. Цитата(niktagor @ Aug 31 2010, 14:41)  7. (пространный) Может ли в устройстве быть защита, которая не позволит ему работать не с родной программой? (догадываюсь, что может). Может ли быть защита, которая не позволит ему работать с инструментарием от cypress? Может ли быть защита, которая что-нибудь сломает, если "узнает", что я пытаюсь написать свою софтину? Если под программой Вы понимаете firmware для FX2LP, то не может, даже если модуль содержит внешний watchdog. Если под программой Вы понимаете программу для ПЭВМ, то это не защита, а незнание протокола обмена с firmware. Цитата(niktagor @ Aug 31 2010, 14:41)  8. Какой алгоритм дальнейшей работы посоветуете? Какие программы использовать? Какие вопросы у меня еще не возникли, но могут возникнуть в ближайшее время? На какие подводные камни я могу напороться? Читать документацию, темы данного подфорума и задавать вопросы. Современные. Почему никто не отвечает на Ваши вопросы. На нежелание читать документацию и злобные ответы на Ваши вопросы Невнимательно я прочитал Ваш топик. Увы мне. В качестве совета: Вам будет легче выполнить поставленную задачу если Вы перейдете от ezusb.sys к cyusb.sys и от C++ к C#.
Сообщение отредактировал Konst_777 - Aug 31 2010, 18:40
|
|
|
|
|
Sep 1 2010, 10:33
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 24-06-09
Пользователь №: 50 601

|
Цитата Можно, нужно отредактировать cyusb.inf файл, добавив в него VID и PID для Вашего устройства, а затем выполнить принудительную установку драйвера cyusb.sys. Читая сайт сайпресс, нашел, что новый драйвер "не будет работать со старыми разработками". Я правильно Вас понял, что не меняя старую прошивку устройства, написанную под ezusb.sys, я смогу так же осуществлять с ней взаимодействие через драйвер сyusb.sys? В чем тогда несовместимость? Только со стороны софта? То есть программа от разработчика перестанет работать, а я свой софт все же смогу написать? Или вообще совместимость полная, а я запутался... Цитата Посмотреть с помощью CyConsole.exe. Если для Bulk endpoint "Max Pkt Size" равно 512, то девайс работает в high speed, если 64, то в full speed. 64. А проблема именно со скоростью. Может можно просто изменить режим на high speed, не меняя софта и не создавая себе проблем? Как это сделать? Такое изменение потребует изменения прошивки, софта, или и того и другого? Цитата Читайте в теме Проблема с cy7c68013a. Скопировать нужно все содержимое EEPROM. По типу EEPROM определите ее емкость. Посмотрите, может быть Ваш модуль содержит перемычку или джампер, с помощью которых можно отключить EEPROM. На всякий случай, еще раз обращу внимание на то, что мне требуется именно написать софт для уже готового устройства с готовой прошивкой. Я даже открывать его не могу, т.к. на нем гарантийная пломба и.т.д. Я в самом крайнем случае могу прошить его через USB, но для этого нужно сначала быть уверенным, что я ничего не потеряю. Konst_777, большое спасибо за развернутый ответ.
|
|
|
|
|
Sep 1 2010, 17:22
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(niktagor @ Sep 1 2010, 13:33)  На всякий случай, еще раз обращу внимание на то, что мне требуется именно написать софт для уже готового устройства с готовой прошивкой. Я даже открывать его не могу, т.к. на нем гарантийная пломба и.т.д. Я в самом крайнем случае могу прошить его через USB, но для этого нужно сначала быть уверенным, что я ничего не потеряю. В таком случае, почему есть уверенность, что у Вас в этом черном ящике контроллер FX2, а не FX1 (только Full Speed)? Тогда было бы понятно почему нет High-Speed соединения. Какая документация есть у Вас на это устройство? Цитата(niktagor @ Sep 1 2010, 13:33)  64. А проблема именно со скоростью. Может можно просто изменить режим на high speed, не меняя софта и не создавая себе проблем? Как это сделать? Такое изменение потребует изменения прошивки, софта, или и того и другого? На всякий случай проверьте, что Ваш компьютер поддерживает High-Speed USB: проверьте, что в менеджере устройств в ветке "Контроллеры USB" присутствует "Стандартный расширенный USB хост-контроллер". Или измерьте среднюю скорость копирования большого по объему файла с современной флэшки на диск ПЭВМ. Цитата(niktagor @ Sep 1 2010, 13:33)  Читая сайт сайпресс, нашел, что новый драйвер "не будет работать со старыми разработками". Можете дать ссылку? Цитата(niktagor @ Sep 1 2010, 13:33)  ... Я правильно Вас понял, что не меняя старую прошивку устройства, написанную под ezusb.sys, я смогу так же осуществлять с ней взаимодействие через драйвер сyusb.sys? В чем тогда несовместимость? Только со стороны софта? То есть программа от разработчика перестанет работать, а я свой софт все же смогу написать? Или вообще совместимость полная, а я запутался... Любое устройство USB (USB device) представляет собой набор endpoints. Или говорят о pipes - каналах обмена. Так вот, сyusb.sys является универсальным драйвером USB устройств и может общаться со всеми endpoint-ми, которые поддерживает firmware устройства USB.
|
|
|
|
|
Sep 1 2010, 18:47
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 24-06-09
Пользователь №: 50 601

|
Цитата В таком случае, почему есть уверенность, что у Вас в этом черном ящике контроллер FX2, а не FX1 (только Full Speed)? Тогда было бы понятно почему нет High-Speed соединения. Какая документация есть у Вас на это устройство? Есть хитрым путем добытый ОЕМ-мануал, в котором написано, что контроллер CY7C68013. Так же там есть описание всех USB-команд с форматами пакетов для режимов high speed и full speed. Цитата Проверьте, что в менеджере устройств в ветке "Контроллеры USB" присутствует "Стандартный расширенный USB хост-контроллер Есть. Intel® ICH8 Family USB2 Enhanced Host Controller - 2836. Цитата Цитата Читая сайт сайпресс, нашел, что новый драйвер "не будет работать со старыми разработками".
Можете дать ссылку? Прошу прощения, ввел в заблуждение из-за дефекта днк своего устройства памяти. Там написано: "Please note that the cyusb.sys driver has a different API (CYAPI) than the ezusb.sys driver that host applications will have to communicate through. Thus, host applications written for one driver will not be compatible with the other. It is recommended that new designs start with the cyusb.sys driver." http://www.cypress.com/?rID=32538 Опишу всю историю в надежде, что это поможет. Этот девайс был заказан из заморских стран по причине того, что именно скоростные характеристики указаны очень хорошие. Но оказалось, что они не соответствуют заявленным и работает он примерно в 2 раза медленнее, а это для нас недопустимо. На все возмущенные запросы в службу технической поддержки ответ был один - раньше(при тестах) он работал быстрее, но потом у всех что-то случилось и такой скорости уже не удается добиться. А команда разработчиков софта для девайса была сторонняя. Они деньги получили и ошибки уже править отказываются. Фантастика! Сначала не верилось. Начали изучать. Оказалось, что во время работы девайса процессор загружается на 100%. Программа написана на Java. Скорее всего, перестало у всех работать из-за выхода новой версии джавы. Пытались скачать старые, но это результата не дало. Вот и появилась идея свой софт написать. А сейчас оказалось, что девайс работает в bulk mode, да еще и с full speed. Можно ли просто full заменить на high и избавиться от проблем?
|
|
|
|
|
Sep 1 2010, 18:58
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(niktagor @ Sep 1 2010, 21:47)  ...Можно ли просто full заменить на high и избавиться от проблем? Начинать нужно с установки драйвера cyusb.sys. А затем разбираться, какой все таки используется контроллер и что не дает ему работать в High Speed. Цитата(niktagor @ Sep 1 2010, 21:47)  Есть. Intel® ICH8 Family USB2 Enhanced Host Controller - 2836. Все таки, подключите к тому же разъему USB ПЭВМ, к которому Вы подключаете Ваше устройство, современную USB-флешку и измерьте среднюю скорость копирования большого по объему файла с USB-флешки на диск ПЭВМ.
Сообщение отредактировал Konst_777 - Sep 2 2010, 03:55
|
|
|
|
|
Sep 7 2010, 18:47
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 24-06-09
Пользователь №: 50 601

|
Добрый день. Ситуация такая. Драйвер cyusb.sys настроил, работаю с ним в C++. Используя метод XferData, получаю из устройства в цикле 1000 раз по 4 Кбайта. Эта операция занимает от 2 до 5 секунд. Устройство может выдавать свои 4 Кбайта каждую миллисекунду, то есть операция должна занимать около секунды. Как узнать, где теряется скорость, и как это можно исправить? Возможно, нужно использовать более быстрые методы драйвера? Или 4МБ/с - это уже проблема для USB?
|
|
|
|
|
Sep 7 2010, 19:39
|
Местный
  
Группа: Свой
Сообщений: 357
Регистрация: 6-01-07
Пользователь №: 24 139

|
Цитата(niktagor @ Sep 7 2010, 22:47)  Или 4МБ/с - это уже проблема для USB? Устройство по ссылке http://www.saleae.com/logic/features/гонит в ПК 24 Мб в секунду. Сделано на CY7C68013A.
|
|
|
|
|
Sep 8 2010, 08:19
|
Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167

|
Цитата(niktagor @ Sep 7 2010, 22:47)  Добрый день. Ситуация такая. Драйвер cyusb.sys настроил, работаю с ним в C++. Используя метод XferData, получаю из устройства в цикле 1000 раз по 4 Кбайта. Эта операция занимает от 2 до 5 секунд. Устройство может выдавать свои 4 Кбайта каждую миллисекунду, то есть операция должна занимать около секунды. Как узнать, где теряется скорость, и как это можно исправить? Возможно, нужно использовать более быстрые методы драйвера? Или 4МБ/с - это уже проблема для USB? 40 МБайт в секунду вполне реально, но нужен свой драйвер. Стандартные тормознутые, хотя и на них можно организовать обмен в 10-20 МБ/с. По поводу "1000 раз по 4 Кбайта" - цикл выполняется в User Mode со всеми вытекающими из этого проблемами. Попробуй работать с блоками большего размера 64Кб к примеру.
|
|
|
|
|
Sep 8 2010, 08:32
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 24-06-09
Пользователь №: 50 601

|
Цитата(Serg_Sm @ Sep 8 2010, 12:19)  40 МБайт в секунду вполне реально, но нужен свой драйвер. Стандартные тормознутые, хотя и на них можно организовать обмен в 10-20 МБ/с. По поводу "1000 раз по 4 Кбайта" - цикл выполняется в User Mode со всеми вытекающими из этого проблемами. Попробуй работать с блоками большего размера 64Кб к примеру. Протокол устройства сделан таким образом, что читать приходится именно блоками по 4к и изменить это не возможно без вмешательства в него. User Mode это относится к контроллеру в устройстве или в PC? Где об этих режимах прочитать можно?
|
|
|
|
|
Sep 8 2010, 09:27
|
Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167

|
Цитата(niktagor @ Sep 8 2010, 12:32)  Протокол устройства сделан таким образом, что читать приходится именно блоками по 4к и изменить это не возможно без вмешательства в него. User Mode это относится к контроллеру в устройстве или в PC? Где об этих режимах прочитать можно? Что значит "именно блоками по 4К"? 4К - это несколько транзакций для USB протокола, а где их несколько - можно попробовать увеличить. Единственная проблема, если после каждого блока нужно слать ответ-подтверждение. В таком случае нормальной скорости не добьешься никак. Kernel & User mode
|
|
|
|
|
Sep 8 2010, 09:48
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 24-06-09
Пользователь №: 50 601

|
Цитата Что значит "именно блоками по 4К"? 4К - это несколько транзакций для USB протокола, а где их несколько - можно попробовать увеличить. Устройство сделано так, что я отправляю туда один запрос размером 1 байт. Оно в ответ выплевывает 8 транзакций по 512 байт и одну с sync packet'ом. Потом все повторяется заново. Так вот, эта операция должна занимать не больше 1 миллисекунды. А получается какая-то ерунда. Используя USB monitor, получаю удивительные результаты. Все работает сверхбыстро, пока куда-то не пропадают 15мс(смотри скриншот). Где искать причину?
Эскизы прикрепленных изображений
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|