|
Использование EEPROM для CY7C68013A (FX2LP) |
|
|
|
Apr 9 2009, 13:20
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789

|
Скажите пожалуйста, насколько трудно сделать Firmware Loader для CY768013A? В AN041 (EZ Loader Custom USB Firmware Loader Driver) приводится описание «как сделать». Вопрос в том – насколько это реально сложно для человека, ранее с DDK дело не имевшим (время, сложность)? Вопрос связан вот с чем: по работе необходимо решить ряд проблем, которые более важны чем «как сделать загрузку FX2LP с хоста», поэтому если эта вещь (написание собственного Loader) достаточна сложна (или несложна, но требует времени), то может лучше поставить EEPROM и предусмотреть механизм ее программирования извне, а уже потом (в дальнейшем, после решения основных задач) заниматься лоадером. Что спецы посоветуют? Просьба не писать «это делается за 1 день левой ногой», если имеется в виду, что «за 1 день» напишет спец по драйверам для винды  ; Какие еще доки посоветуете почитать по этому вопросу.
|
|
|
|
|
 |
Ответов
|
Apr 10 2009, 19:22
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(mikeT @ Apr 9 2009, 16:20)  Скажите пожалуйста, насколько трудно сделать Firmware Loader для CY768013A? В AN041 (EZ Loader Custom USB Firmware Loader Driver) приводится описание «как сделать». Вопрос в том – насколько это реально сложно для человека, ранее с DDK дело не имевшим (время, сложность)? ... По-моему, Вас ввела в заблуждение дата ревизии AN041 (July 9, 2004). На самом деле в этой AN описываются подходы Cypress до 1999 года ("...Windows 98...", "...Windows 98 DDK...", "...Microsoft® Visual C++ 5.0/6.0..."). Конечно сбивают с толку ссылки типа "... Microsoft Visual C++ .NET...". Вообщем, какой то бред, если знать, что с 2005 года существует SuiteUSB.NET 2.0. В его состав входят драйвер общего назначения CyUsb.sys и библиотека классов Microsoft .NET 2.0 CyUSB.dll (интерфейс к CyUsb.sys для .NET приложений). Ознакомившись с " Cypress CyUSB.NET DLL Programmer`s reference" (файл \SuiteUSB.NET\CyUsb.NET.chm) Вы легко обнаружите класс CyFX2Device, с помощью которого Ваше .NET приложение может запрограммировать EEPROM или загрузить программу в память контроллера FX2LP и перезапустить контроллер. Цитата(mikeT @ Apr 9 2009, 16:20)  ..., то может лучше поставить EEPROM и предусмотреть механизм ее программирования извне, а уже потом (в дальнейшем, после решения основных задач) заниматься лоадером. Штатным средством программирования EEPROM является утилита CyConsole.exe. Возможно, полезной для Вас будет тема Проблема с cy7c68013a этого форума.
|
|
|
|
|
Apr 11 2009, 03:33
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789

|
1Цитата(Konst_777 @ Apr 11 2009, 02:22)  По-моему, Вас ввела в заблуждение дата ревизии AN041 (July 9, 2004). Да. Это я что-то затупил - не посмотрел на дату Но... Цитата(Konst_777 @ Apr 11 2009, 02:22)  с 2005 года существует SuiteUSB.NET 2.0. В его состав входят драйвер общего назначения CyUsb.sys и библиотека классов Microsoft .NET 2.0 CyUSB.dll (интерфейс к CyUsb.sys для .NET приложений). Ознакомившись с " Cypress CyUSB.NET DLL Programmer`s reference" (файл \SuiteUSB.NET\CyUsb.NET.chm) Вы легко обнаружите класс CyFX2Device, с помощью которого Ваше .NET приложение может запрограммировать EEPROM или загрузить программу в память контроллера FX2LP и перезапустить контроллер. Про новый подход с использованием .NET я знаю. Но нам крайне не хотелось бы использовать .NET только потому что "Cypress так сделал". Верхний уровень (GUI и т.п.) у нас пишет человек который плотно работает на Delphi (не дотнетовском) и врядли мы его сагитируем на .NET перейти  Средний уровень (разбор и "склейка" пакектов, ну в общем, какая-то предобработка) должен писать я и я планировал делать это на С++. Вообще, мы хотели в перспективе QT использовать и для среднего уровня и для GUI. В то же время, я прекрасно понимаю, что если Cypress сделал и активно двыигает новое решение под .NET, то со старым его решением, тем более под FX2LP могут быть проблемы + это скорее всего уже Cypress'ом не поддерживается в должной мере. В связи с этим у меня такой вопрос конкретного чайника (под винду я писал только сверхпростые консольки и такие вещи как .NET для меня известны на уровне статей из журнала "мурзилка"  ): могу ли я использовать все "вкусности" от решения предлагаемого Cypress под .NET, но использовать не .NET а, например "обычный" С++? 2Цитата(Konst_777 @ Apr 11 2009, 02:22)  Штатным средством программирования EEPROM является утилита CyConsole.exe. Возможно, полезной для Вас будет тема Проблема с cy7c68013a этого форума. Спасибо большое за очень за ссылку. Прочитал на два раза, но вот такой вопрос есть (там он затронут слегка): микруха EEPROM у нас впаивается "намертво" и джамперов никаких не будет (такие требования, будь моя воля - поставил бы EEPROM в панельке и все, а потом, когда все отлажено, убрал-бы ее вообще насовсем), что там в ней лежит - хз. Не будет ли проблем с этим (старт FX2LP с подключенной EEPROM с мусором внутри)? Или обязательно нужно что-то осмысленное туда записать? В принципе, мы можем вывести технологический разъем для прошивки EEPROM с компутера. Как Вы считаете, стоит ли зарезервировать такую возможность "на крайний случай"? 3Мы планируем, что клок на FX2LP будет приходить с ПЛИС, то есть пока ПЛИС не стартует, FX2LP будет "мертвая". не будет ли тут каких-нибудь проблем, связанных с USB (сам протокол), т.к. питание подано, а тактовой частоты еще нет? P.S. Очень большое Вам спасибо за развернутый и крайне полезный ответ!
|
|
|
|
|
Apr 12 2009, 09:54
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(mikeT @ Apr 11 2009, 06:33)  1Про новый подход с использованием .NET я знаю. Но нам крайне не хотелось бы использовать .NET только потому что "Cypress так сделал". Верхний уровень (GUI и т.п.) у нас пишет человек который плотно работает на Delphi (не дотнетовском) и врядли мы его сагитируем на .NET перейти  Средний уровень (разбор и "склейка" пакектов, ну в общем, какая-то предобработка) должен писать я и я планировал делать это на С++. Вообще, мы хотели в перспективе QT использовать и для среднего уровня и для GUI. ... В связи с этим у меня такой вопрос конкретного чайника (под винду я писал только сверхпростые консольки и такие вещи как .NET для меня известны на уровне статей из журнала "мурзилка"  ): могу ли я использовать все "вкусности" от решения предлагаемого Cypress под .NET, но использовать не .NET а, например "обычный" С++? Если, разница в предложениях на рынке труда для программистов Delphi и для программистов .NET не является достаточной мотивацией для вашего программиста верхнего уровня, то вам придется использовать связку приложения на Delphi ( (GUI и т.п.)) с .dll (задачи среднего уровня и общение с CyUSB.sys). В этом случае "настольной книгой" для Вас является " Cypress CyUsb.sys Programmer`s Reference"(\Cypress\USB\help\cyusb.chm). Думаю для Вас полезным будет Archive.rar из темы прием данных из АЦП в ПК по USB. Цитата(mikeT @ Apr 11 2009, 06:33)  2 Спасибо большое за очень за ссылку. Прочитал на два раза, но вот такой вопрос есть (там он затронут слегка): микруха EEPROM у нас впаивается "намертво" и джамперов никаких не будет (такие требования, будь моя воля - поставил бы EEPROM в панельке и все, а потом, когда все отлажено, убрал-бы ее вообще насовсем), что там в ней лежит - хз. Не будет ли проблем с этим (старт FX2LP с подключенной EEPROM с мусором внутри)? Или обязательно нужно что-то осмысленное туда записать? В принципе, мы можем вывести технологический разъем для прошивки EEPROM с компутера. Как Вы считаете, стоит ли зарезервировать такую возможность "на крайний случай"? Если будете ставить EEPROM, из которой будет загружаться FX2LP, то обязательно нужно поставить джампер (см. EEPROM.gif из темы Проблема с cy7c68013a). Иначе, если во время программирования EEPROM произойдет сбой, то придется отпаивать и поднимать ножку у EEPROM. То же самое будет, если записанная программа содержит ошибки и Windows перестает видеть FX2LP. Цитата(mikeT @ Apr 11 2009, 06:33)  3 Мы планируем, что клок на FX2LP будет приходить с ПЛИС, то есть пока ПЛИС не стартует, FX2LP будет "мертвая". не будет ли тут каких-нибудь проблем, связанных с USB (сам протокол), т.к. питание подано, а тактовой частоты еще нет? Нужно выдавать Reset на FX2LP, пока не стабилизируется тактовая частота, подаваемая на FX2LP. Все требования изложены в " cy7c68013a_8.pdf", " EZ-USB_TRM.pdf" и " fx2_to_fx2lp.pdf".
|
|
|
|
|
Apr 12 2009, 11:27
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789

|
Цитата(Konst_777 @ Apr 12 2009, 16:54)  В этом случае "настольной книгой" для Вас является " Cypress CyUsb.sys Programmer`s Reference"(\Cypress\USB\help\cyusb.chm). Думаю для Вас полезным будет Archive.rar из темы прием данных из АЦП в ПК по USB. Спасибо. Как я понял, рекомендованный Вами док - это "старый" подход для работы с USB (HOST), а "новый" - это .NET? Цитата(Konst_777 @ Apr 12 2009, 16:54)  Если будете ставить EEPROM, из которой будет загружаться FX2LP, то обязательно нужно поставить джампер (см.[url="http://electronix.ru/forum/index.php? а) если у нас будет разъем для программирования EEPROM извне, то это ведь снимает необходимость установки джампера? б) что Вы порекомендуете - может вообще тогда не ставить EEPROM?
|
|
|
|
|
Apr 12 2009, 14:28
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(lepert @ Apr 12 2009, 14:42)  Да там совсем не обязательно все делать именно на NET, делайте на Delphi. API он и в Африке API. Ваша задача достучаться до CyUSB dll-ки. А на каком языке Вы это сделаете не важно. ... Пожалуйста, напишите, где можно почитать о том, как в приложении на Delphi (native 32bit) наследовать классы .NET сборок? Цитата(lepert @ Apr 12 2009, 14:42)  ... Что касается джампера, утилита CyUSB Console позволяет затереть и перепрошить EEPROM без переподключений джампера, проверено. EzUSB не позволяет это делать, а CyUSB позволяет. А раз CyUSB может, значит и Вы сможете. ... Простой пример для FX2LP:Код //------------------------------------------------------------------------------------- // Файл: main.c // Назначение: Данное приложение отключает контроллер FX2LP от шины USB, // что делает невозможным перепрограммирование EEPROM с // помощью CyConsole.exe, если не предусмотрено отключение EEPROM // до подачи питания на FX2LP и подключение EEPROM после подачи // питания на FX2LP //-------------------------------------------------------------------------------------
// We use fx2regs.h for register address allocation by using "#define ALLOCATE_EXTERN" #define ALLOCATE_EXTERN
#include <fx2.h> #include <fx2regs.h>
void main(void) { // disconnect from USB USBCS |= bmDISCON;
// Main Loop while(TRUE) { } } Проект приложен в " EEPROM_Trouble.zip". Сможете Вы с помощью CyConsole.exe " затереть и перепрошить EEPROM без переподключений джампера" после загрузки в EEPROM " EEPROM_Trouble.iic"? Пожалуйста, расскажите как это сделать? Цитата(mikeT @ Apr 12 2009, 14:27)  ... а) если у нас будет разъем для программирования EEPROM извне, то это ведь снимает необходимость установки джампера? Мне не понятно, почему Вас так пугает присутствие двухконтактного разъема - для установки джампера, вместо трехконтактного - для обеспечения возможности запрограммировать EEPROM через интерфейс I2C с помощью внешнего устройства? Причем, этот трехконтактный должен иметь ключ, чтобы правильно подключать внешнее устройство. И даже в этом случае, все еще есть возможность что-нибудь спалить, при подключении внешнего устройства и отсутствии общего заземления. Цитата(mikeT @ Apr 12 2009, 14:27)  б) что Вы порекомендуете - может вообще тогда не ставить EEPROM? Мой ответ на этот вопрос уже изложен в теме прием данных из АЦП в ПК по USB. То есть, я считаю, что нужно иметь возможность задать желаемый VID, PID, и Serial Number.
|
|
|
|
|
Apr 13 2009, 04:53
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789

|
Цитата(Konst_777 @ Apr 12 2009, 21:28)  Мне не понятно, почему Вас так пугает присутствие двухконтактного разъема... Давайте, я ниже изложу так как я Вас понял (и вообще саму идею), а Вы поправите если я неправ? 1. На Вашей схеме (пример с джампером) стоит EEPROM с 16-битной адресацией. В рабочем режиме пин A0 должен быть == "1". То есть в рабочем режиме джампер снят (мне это именно и нужно, т.к. наличие джампера в рабочем режиме крайне нежелательно из-за условий эксплуатации изделия) 2. Вы ставите А0 в "0" (хоть джампером, хоть пинцетом, лишь бы закоротка была) перед подачей питания, подаете питание (А0 по прежнему == "0"), FX2LP (EEPROM Boot Loader) проверяет "какой тип EEPROM стоит - small/large?", используя для этого данные с шины [A2:A0] (важен именно разряд A0). FX2LP считает, что "установлена small EEPROM (А0 == "0")", пытается "подружиться" с EEPROM, но жестоко обламывается (ACK он в ответ не получает). После чего FX2LP считает, что "No EEPROM detected" и стартует без нее. 3. Убираем джампер. EEPROM теперь доступна и мы можем ее программировать и т.п. так? по поводу того нужна или не нужна EEPROM - почитал Ваши сообщения, понял, что нужно поставить обязательно  Тем более, что проблема с программированием и "отключением" EEPROM снимиается. Спасибо.
|
|
|
|
|
Apr 13 2009, 09:44
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789

|
Цитата(Konst_777 @ Apr 13 2009, 13:45)  Вы все совершенно правильно поняли. Джампер устанавливается для отключения EEPROM. В рабочем режиме джампер снят. Я тогда наберусь наглости и спрошу еще вот по этой теме луп-бэк на FX2LP, т.к. вижу по Вашим ответом, что Вы фундаментально разобрались с USB и, возможно, ответ у Вас потребует не более 5 секунд Суть вопроса: Можно ли на "голой" FX2LP (ну как на ките стоит) организовать либо луп-бэк (хост->FX2LP->хост), либо режим "FX2LP->HOST", причем: а) скорость меня итнтересует от 25 МБ в секунду и выше б) если используется режим генератора данных ("FX2LP->HOST"), то чтобы была возможность генерировать какие-то переменные данные, а не константу. Заранее благодарен.
|
|
|
|
|
Apr 13 2009, 17:37
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(mikeT @ Apr 13 2009, 12:44)  Суть вопроса: Можно ли на "голой" FX2LP (ну как на ките стоит) организовать либо луп-бэк (хост->FX2LP->хост), либо режим "FX2LP->HOST", причем: а) скорость меня итнтересует от 25 МБ в секунду и выше б) если используется режим генератора данных ("FX2LP->HOST"), то чтобы была возможность генерировать какие-то переменные данные, а не константу. Я не знаю как организовать луп-бэк (хост->FX2LP->хост) со скоростью обмена от 25 МБ в секунду. CPU контроллера не может выполнять программные пересылки с такой скоростью. Если для режима генератора данных использовать GPIF (как в Archive.rar), то необходимо изменять данные на ATA Connector с помощью какого-то внешнего устройства, "чтобы была возможность генерировать какие-то переменные данные, а не константу". Можно получить режим генератора с медленно изменяющимися данными. CPU контроллера имеет возможность доступа к данным Endpoint, как к ОЗУ. CPU контроллера должно отслеживать момент завершения выдачи FX2LP данных HOSTу модифицировать один байт в In Endpoint и запускать следующую пересылку данных "FX2LP->HOST". Тут можно побороться за скорость обмена около 25 МБ в секунду.
|
|
|
|
Сообщений в этой теме
mikeT Использование EEPROM для CY7C68013A (FX2LP) Apr 9 2009, 13:20 ClockworkOrange >> Какие еще доки посоветуете почитать по эт... Apr 9 2009, 15:27    lepert Цитата(mikeT @ Apr 12 2009, 14:27) Спасиб... Apr 12 2009, 11:42         mikeT Цитата(Konst_777 @ Apr 14 2009, 00:37) ..... Apr 14 2009, 02:28 Glitko Помогите разобратся ! У меня на плате CY768013... May 7 2009, 21:40 SFx Цитата(Glitko @ May 8 2009, 01:40) Помоги... May 11 2009, 12:35  Konst_777 Цитата(SFx @ May 11 2009, 15:35) Вы проши... May 11 2009, 17:45 puritanin Товарищи, подскажите пжлста по такой проблеме:
име... Jul 25 2009, 10:51 Konst_777 Цитата(puritanin @ Jul 25 2009, 13:51) ..... Jul 26 2009, 13:35 puritanin Точно, я просто опечатался, в программе все правил... Jul 27 2009, 08:07 kostyx Здравствуйте! имеется cypress EZ-USB fx2lp,
... Oct 12 2009, 06:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|