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

 
 
> Использование EEPROM для CY7C68013A (FX2LP)
mikeT
сообщение Apr 9 2009, 13:20
Сообщение #1


Участник
*

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



Скажите пожалуйста, насколько трудно сделать Firmware Loader для CY768013A? В AN041 (EZ Loader Custom USB Firmware Loader Driver) приводится описание «как сделать». Вопрос в том – насколько это реально сложно для человека, ранее с DDK дело не имевшим (время, сложность)?

Вопрос связан вот с чем: по работе необходимо решить ряд проблем, которые более важны чем «как сделать загрузку FX2LP с хоста», поэтому если эта вещь (написание собственного Loader) достаточна сложна (или несложна, но требует времени), то может лучше поставить EEPROM и предусмотреть механизм ее программирования извне, а уже потом (в дальнейшем, после решения основных задач) заниматься лоадером.

Что спецы посоветуют?
Просьба не писать «это делается за 1 день левой ногой», если имеется в виду, что «за 1 день» напишет спец по драйверам для винды rolleyes.gif ;
Какие еще доки посоветуете почитать по этому вопросу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Konst_777
сообщение Apr 10 2009, 19:22
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 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 этого форума.
Go to the top of the page
 
+Quote Post
mikeT
сообщение Apr 11 2009, 03:33
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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 перейти rolleyes.gif Средний уровень (разбор и "склейка" пакектов, ну в общем, какая-то предобработка) должен писать я и я планировал делать это на С++. Вообще, мы хотели в перспективе QT использовать и для среднего уровня и для GUI.
В то же время, я прекрасно понимаю, что если Cypress сделал и активно двыигает новое решение под .NET, то со старым его решением, тем более под FX2LP могут быть проблемы + это скорее всего уже Cypress'ом не поддерживается в должной мере.

В связи с этим у меня такой вопрос конкретного чайника (под винду я писал только сверхпростые консольки и такие вещи как .NET для меня известны на уровне статей из журнала "мурзилка" rolleyes.gif ): могу ли я использовать все "вкусности" от решения предлагаемого 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.
Очень большое Вам спасибо за развернутый и крайне полезный ответ!
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Apr 12 2009, 09:54
Сообщение #4


Знающий
****

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



Цитата(mikeT @ Apr 11 2009, 06:33) *
1
Про новый подход с использованием .NET я знаю. Но нам крайне не хотелось бы использовать .NET только потому что "Cypress так сделал". Верхний уровень (GUI и т.п.) у нас пишет человек который плотно работает на Delphi (не дотнетовском) и врядли мы его сагитируем на .NET перейти rolleyes.gif Средний уровень (разбор и "склейка" пакектов, ну в общем, какая-то предобработка) должен писать я и я планировал делать это на С++. Вообще, мы хотели в перспективе QT использовать и для среднего уровня и для GUI.
...
В связи с этим у меня такой вопрос конкретного чайника (под винду я писал только сверхпростые консольки и такие вещи как .NET для меня известны на уровне статей из журнала "мурзилка" rolleyes.gif ): могу ли я использовать все "вкусности" от решения предлагаемого 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".
Go to the top of the page
 
+Quote Post
mikeT
сообщение Apr 12 2009, 11:27
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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?
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Apr 12 2009, 14:28
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 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.
Прикрепленные файлы
Прикрепленный файл  EEPROM_Trouble.zip ( 36.38 килобайт ) Кол-во скачиваний: 72
 
Go to the top of the page
 
+Quote Post
mikeT
сообщение Apr 13 2009, 04:53
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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 - почитал Ваши сообщения, понял, что нужно поставить обязательно rolleyes.gif Тем более, что проблема с программированием и "отключением" EEPROM снимиается.

Спасибо.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Apr 13 2009, 06:45
Сообщение #8


Знающий
****

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



Цитата(mikeT @ Apr 13 2009, 07:53) *
Давайте, я ниже изложу так как я Вас понял (и вообще саму идею), а Вы поправите если я неправ?
...
так?

Вы все совершенно правильно поняли. Джампер устанавливается для отключения EEPROM. В рабочем режиме джампер снят.
Go to the top of the page
 
+Quote Post
mikeT
сообщение Apr 13 2009, 09:44
Сообщение #9


Участник
*

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



Цитата(Konst_777 @ Apr 13 2009, 13:45) *
Вы все совершенно правильно поняли. Джампер устанавливается для отключения EEPROM. В рабочем режиме джампер снят.


Я тогда наберусь наглости и спрошу еще вот по этой теме луп-бэк на FX2LP, т.к. вижу по Вашим ответом, что Вы фундаментально разобрались с USB и, возможно, ответ у Вас потребует не более 5 секунд rolleyes.gif

Суть вопроса:
Можно ли на "голой" FX2LP (ну как на ките стоит) организовать либо луп-бэк (хост->FX2LP->хост), либо режим "FX2LP->HOST", причем:
а) скорость меня итнтересует от 25 МБ в секунду и выше
б) если используется режим генератора данных ("FX2LP->HOST"), то чтобы была возможность генерировать какие-то переменные данные, а не константу.

Заранее благодарен.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Apr 13 2009, 17:37
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 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 МБ в секунду.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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