|
Вопрос про 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
|
|
|
|
|
 |
Ответов
|
Sep 13 2010, 17:26
|
Участник

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

|
Цитата В FX2LP EP1OUT имеет буфер объемом 64 байта (глава 8 EZ-USB® Technical Reference Manual (EZ-USB_TRM.PDF)). Пока ему пересылаются пакеты размером не более 64 байт все будет хорошо. Что будет, если послать эндпоинту пакет длиной, большей, чем его физический буфер? Как поведет себя драйвер устройства USB и драйвер хост-контроллера? Я не пробовал делать такие вещи. Мой запрос содержит всего один байт. Или в этот буфер идут все запросы, в том числе "CYUSB_IN"? И они каждый по 64 байта? Не нашел, как сделать массив запросов в CyAPI Programmer's Reference. Есть другие документы по CyAPI? Цитата в). синхронно считайте 10 формуляров из Вашего устройства однократным вызовом функции XferData. Предварительно установите с большим запасом таймаут для этой операции. Что-то я не понял, зачем XferData? Разве WaitForXfer() не записывает в нужный буфер принятую информацию? В примерах исползуется только BeginDataXfer-WaitForXfer-FinishDataXfer. Реализовал такой алгоритм: 1) 9 запросов BeginDataXfer() c "CYUSB_IN" 2) запрос BeginDataXfer() c "CYUSB_OUT" 3) WaitForXfer() для "CYUSB_OUT" 4) 9 раз WaitForXfer() для "CYUSB_IN" 5) 10 раз FinishDataXfer() Лог: Код 0.000001 Timer test dt = 0.001 ms 0.000040 Timer test dt = 0.039 ms 0.000047 Timer test dt = 0.007 ms 0.000054 Timer test dt = 0.007 ms 0.000061 Timer test dt = 0.007 ms 0.000067 Timer test dt = 0.007 ms 0.000074 Timer test dt = 0.007 ms 0.000081 Timer test dt = 0.007 ms 0.000195 BeginDataXferIn dt = 0.114 ms 0.000230 BeginDataXferIn dt = 0.035 ms 0.000260 BeginDataXferIn dt = 0.030 ms 0.000290 BeginDataXferIn dt = 0.030 ms 0.000321 BeginDataXferIn dt = 0.031 ms 0.000351 BeginDataXferIn dt = 0.031 ms 0.000387 BeginDataXferIn dt = 0.036 ms 0.000419 BeginDataXferIn dt = 0.031 ms 0.000449 BeginDataXferInSync dt = 0.030 ms 0.000487 BeginDataXferOut dt = 0.038 ms 0.000497 WaitForXferOut dt = 0.010 ms 0.001406 WaitForXferIn dt = 0.909 ms \\Тут прибор снимал данные с датчика 0.001444 WaitForXferIn dt = 0.038 ms 0.001464 WaitForXferIn dt = 0.020 ms 0.001562 WaitForXferIn dt = 0.098 ms 0.001682 WaitForXferIn dt = 0.121 ms 0.001818 WaitForXferIn dt = 0.136 ms 0.001931 WaitForXferIn dt = 0.112 ms 0.002061 WaitForXferIn dt = 0.130 ms 0.002193 WaitForXferInSync dt = 0.133 ms 0.002211 FinishDataXferOut dt = 0.017 ms 0.002226 FinishDataXferIn dt = 0.015 ms 0.002234 FinishDataXferIn dt = 0.009 ms 0.002243 FinishDataXferIn dt = 0.008 ms 0.002251 FinishDataXferIn dt = 0.008 ms 0.002259 FinishDataXferIn dt = 0.008 ms 0.002267 FinishDataXferIn dt = 0.008 ms 0.002276 FinishDataXferIn dt = 0.008 ms 0.002284 FinishDataXferIn dt = 0.008 ms 0.002292 FinishDataXferSync dt = 0.008 ms За вычетом времени работы таймера, вся операция в среднем занимает (2,1+-0,1)мс. По задумке разработчиков, все 4Кб должны приниматься за оставшиеся ~100мкс после обработки сигнала датчика. Это равносильно скорости 40МБ/c. Для bulk многовато, но даже если будет 10МБ/c, для моих целей это будет очень значительное улучшение. Анализируя логи, прихожу к выводу, что WaitForXfer() выполняется один раз за микрокадр, но бывают исключительные ситуации, когда случается 2 WaitForXfer() в кадре. Как бы проконтроллировать и улучшить этот показатель?
Сообщение отредактировал niktagor - Sep 13 2010, 17:29
|
|
|
|
|
Sep 15 2010, 18:35
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(niktagor @ Sep 13 2010, 20:26)  Мой запрос содержит всего один байт. Или в этот буфер идут все запросы, в том числе "CYUSB_IN"? И они каждый по 64 байта? Не нашел, как сделать массив запросов в CyAPI Programmer's Reference. Есть другие документы по CyAPI? Firmware Вашего устройства задает MaxPktSize="512" для "CYUSB_OUT". Если выдавать в "CYUSB_OUT" массив от 1 до 512 байт с помощью одиночного вызова функции XferData(), то устройством это будет воспринято, как один запрос. Если выдавать в "CYUSB_OUT" массив размером N*512 байт с помощью одиночного вызова XferData(), то устройством это будет воспринято, как N запросов. XferData() объединяет в одной функции последовательность вызовов функций BeginDataXfer(), WaitForXfer(), FinishDataXfer(). XferData() является синхронной (блокирующей) функцией для выполнения пересылки данных. То есть, программа (поток) будет выполняться дальше только после завершения выполнения функции XferData(). Аналогично, с помощью одиночного вызова функции BeginDataXfer() для "CYUSB_IN" Вы можете сразу считать 4.5 Кбайта данных регистрации. То есть, Ваш алгоритм: Цитата(niktagor @ Sep 13 2010, 20:26)  Реализовал такой алгоритм:
1) 9 запросов BeginDataXfer() c "CYUSB_IN" 2) запрос BeginDataXfer() c "CYUSB_OUT" 3) WaitForXfer() для "CYUSB_OUT" 4) 9 раз WaitForXfer() для "CYUSB_IN" 5) 10 раз FinishDataXfer() ... может быть переписан так: 1) BeginDataXfer() c "CYUSB_IN" на прием массива размером 4.5 Кбайт 2) BeginDataXfer() c "CYUSB_OUT" 3) WaitForXfer() и FinishDataXfer() для "CYUSB_OUT" 4) WaitForXfer() и FinishDataXfer() для "CYUSB_IN" Для N запросов алгоритм будет выглядеть так: 1) BeginDataXfer() c "CYUSB_IN" на прием массива размером N*4.5 Кбайт 2) BeginDataXfer() c "CYUSB_OUT" на выдачу массива N*512 байт 3) WaitForXfer() и FinishDataXfer() для "CYUSB_OUT" 4) WaitForXfer() и FinishDataXfer() для "CYUSB_IN" Преимущество такого подхода в том, что теперь пересылкой запросов и данных регистрации занимается драйвер хост-контроллера, а не Ваша программа. И есть гораздо больше шансов не потерять данные регистрации. То есть, все было бы хорошо, если бы не следующие обстоятельства: 1). эндпоинт EP1OUT имеет объем буфера в 64 байта. И отправлять ему 512 байт нельзя. А в дескрипторе эндпоинта, который считывается хост-контроллером, написано, что можно. Ну, хост-контроллер и выдаст ему... А Ваше устройство и ответит... А драйвер хост-контроллера возьмет и подвесит Windows. 2). поскольку эндпоинты "CYUSB_OUT" и "CYUSB_IN" сконфигурированы, как Bulk endpoint-ы, то все таки возможны ситуации потери данных регистрации из за того, что хост-контроллер перестал на какое-то время опрашивать Ваше устройство, поскольку активировался ну очень приоритетный процесс. С этими неприятностями можно бороться, отредактировав таблицу дескрипторов в firmware. "CYUSB_OUT"нужно сконфигурировать, как Interrupt endpoint с интервалом опроса в 250 мкс и MaxPktSize="1". "CYUSB_IN" - пока не трогать, так как этот эндпоинт сложнее переконфигурировать.
Сообщение отредактировал Konst_777 - Sep 16 2010, 05:40
|
|
|
|
Сообщений в этой теме
niktagor Вопрос про CY7C68013 EZ-USB FX2 Aug 31 2010, 11:41 niktagor При попытках понять работу примера BulkXfer, родил... Aug 31 2010, 17:30 Konst_777 Цитата(niktagor @ Aug 31 2010, 14:41) 1. ... Aug 31 2010, 18:11 niktagor ЦитатаМожно, нужно отредактировать cyusb.inf файл,... Sep 1 2010, 10:33  Konst_777 Цитата(niktagor @ Sep 1 2010, 13:33) На в... Sep 1 2010, 17:22 niktagor ЦитатаВ таком случае, почему есть уверенность, что... Sep 1 2010, 18:47 Konst_777 Цитата(niktagor @ Sep 1 2010, 21:47) ...М... Sep 1 2010, 18:58 niktagor Добрый день. Ситуация такая. Драйвер cyusb.sys нас... Sep 7 2010, 18:47 Mik174 Цитата(niktagor @ Sep 7 2010, 22:47) Или ... Sep 7 2010, 19:39 Serg_Sm Цитата(niktagor @ Sep 7 2010, 22:47) Добр... Sep 8 2010, 08:19  niktagor Цитата(Serg_Sm @ Sep 8 2010, 12:19) 40 МБ... Sep 8 2010, 08:32   Serg_Sm Цитата(niktagor @ Sep 8 2010, 12:32) Прот... Sep 8 2010, 09:27 Harbinger Оно же USBee нескольких модификаций, оно же LOGIC-... Sep 7 2010, 19:55 niktagor ЦитатаЧто значит "именно блоками по 4К"?... Sep 8 2010, 09:48 Konst_777 Цитата(niktagor @ Sep 8 2010, 12:48) ...В... Sep 8 2010, 10:14 Serg_Sm Цитата(niktagor @ Sep 8 2010, 13:48) Устр... Sep 8 2010, 10:21  Konst_777 Цитата(Serg_Sm @ Sep 8 2010, 13:21) ... и... Sep 8 2010, 11:29 -Al- Цитата(niktagor @ Sep 8 2010, 13:48) Устр... Sep 10 2010, 04:57  Седой Цитата(-Al- @ Sep 10 2010, 10:5... Sep 10 2010, 06:15   -Al- Цитата(Седой @ Sep 10 2010, 10:15) НИКОГД... Sep 10 2010, 18:59    Седой Цитата(-Al- @ Sep 11 2010, 00:5... Sep 11 2010, 07:52 niktagor Хорошо. Почему тогда этот другой процесс ВСЕГДА за... Sep 8 2010, 10:31 Serg_Sm Цитата(niktagor @ Sep 8 2010, 14:31) Хоро... Sep 8 2010, 11:19 niktagor Про 15 миллисекунд разобрался. Это точность систем... Sep 8 2010, 12:03 Konst_777 Цитата(niktagor @ Sep 8 2010, 13:31) Ситу... Sep 8 2010, 14:38 VladimirB Цитата(niktagor @ Sep 8 2010, 16:03) Про ... Sep 8 2010, 20:18 Konst_777 Цитата(niktagor @ Sep 8 2010, 12:48) ... ... Sep 9 2010, 11:54 Serg_Sm В FX2LP есть аппаратная буферизация - как минимум ... Sep 8 2010, 12:48 niktagor Прикрутил high-resolution timer. Выясняется, что м... Sep 9 2010, 17:24 VladimirB Цитата(niktagor @ Sep 9 2010, 21:24) Прик... Sep 9 2010, 20:02 niktagor По поводу моих 250мкс по Вашей ссылке нашел интере... Sep 10 2010, 08:30 Konst_777 Цитата(niktagor @ Sep 10 2010, 11:30) ...... Sep 10 2010, 19:23 niktagor Выкладываю всю информацию об эндпоинтах и приступа... Sep 13 2010, 07:32 Konst_777 Цитата(niktagor @ Sep 13 2010, 10:32) ...... Sep 13 2010, 08:30 niktagor Цитата1). Известно ли Вам как построена аппаратура... Sep 13 2010, 08:52 Konst_777 Цитата(niktagor @ Sep 13 2010, 11:52) ...... Sep 13 2010, 09:50  niktagor Цитата(Konst_777 @ Sep 13 2010, 13:50) ..... Sep 13 2010, 14:28   Konst_777 Цитата(niktagor @ Sep 13 2010, 17:28) Да,... Sep 13 2010, 16:53 Konst_777 Давайте, вначале Вы ответите на мои вопросы. А зат... Sep 13 2010, 17:30 niktagor Konst_777, прошу прощения за невнимательность.
Цит... Sep 14 2010, 14:43 Konst_777 Цитата(niktagor @ Sep 14 2010, 17:43) ...... Sep 14 2010, 19:49  niktagor Цитата(Konst_777 @ Sep 14 2010, 23:49) Ит... Sep 15 2010, 14:42 niktagor EEPROM скачал успешно! Всего 17КБ вышло. Гляну... Sep 19 2010, 18:50 Konst_777 Цитата(niktagor @ Sep 19 2010, 21:50) ...... Sep 19 2010, 19:02  niktagor Цитата(Konst_777 @ Sep 19 2010, 23:02) Ди... Sep 20 2010, 13:24 Serg_Sm Кипарисы с буковкой "A" имеют 16Кбайт па... Sep 20 2010, 05:06 niktagor Сегодня хотел попробовать загрузить обратно данные... Sep 20 2010, 08:47 Serg_Sm Цитата(niktagor @ Sep 20 2010, 12:47) Сег... Sep 20 2010, 10:42 Konst_777 Цитата(niktagor @ Aug 31 2010, 14:41) ...... Sep 20 2010, 14:38 niktagor Цитата(Konst_777 @ Sep 20 2010, 18:38) А ... Sep 20 2010, 18:34  Konst_777 Цитата(niktagor @ Sep 20 2010, 21:34) Про... Sep 20 2010, 21:55   niktagor ЦитатаТо есть, меняете строку строку "07 05 0... Sep 21 2010, 17:55    Konst_777 Цитата(niktagor @ Sep 21 2010, 20:55) ...... Sep 21 2010, 19:15     niktagor Цитата(Konst_777 @ Sep 21 2010, 23:15) Во... Sep 22 2010, 09:17      Konst_777 Цитата(niktagor @ Sep 22 2010, 12:17) Поч... Sep 22 2010, 17:39 MSM Здравствуйте Уважаемые форумчане.
Прочитал внимате... May 15 2014, 15:06 jcxz Вы уверены, что прошивка грузится именно из .sys, ... May 15 2014, 15:55 MSM Прошивка точно грузится из файла AD9957LD.sys
В 15... May 19 2014, 02:30 MSM Спасибо за советы. Прошивку вытащить удалось. Тепе... May 28 2014, 10:12 Dele Добрый день! Может немного не суда, но все же.... Jun 11 2014, 02:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|