mikeT 0 9 апреля, 2009 Опубликовано 9 апреля, 2009 · Жалоба Скажите пожалуйста, насколько трудно сделать Firmware Loader для CY768013A? В AN041 (EZ Loader Custom USB Firmware Loader Driver) приводится описание «как сделать». Вопрос в том – насколько это реально сложно для человека, ранее с DDK дело не имевшим (время, сложность)? Вопрос связан вот с чем: по работе необходимо решить ряд проблем, которые более важны чем «как сделать загрузку FX2LP с хоста», поэтому если эта вещь (написание собственного Loader) достаточна сложна (или несложна, но требует времени), то может лучше поставить EEPROM и предусмотреть механизм ее программирования извне, а уже потом (в дальнейшем, после решения основных задач) заниматься лоадером. Что спецы посоветуют? Просьба не писать «это делается за 1 день левой ногой», если имеется в виду, что «за 1 день» напишет спец по драйверам для винды :rolleyes: ; Какие еще доки посоветуете почитать по этому вопросу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ClockworkOrange 0 9 апреля, 2009 Опубликовано 9 апреля, 2009 · Жалоба >> Какие еще доки посоветуете почитать по этому вопросу. http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 10 апреля, 2009 Опубликовано 10 апреля, 2009 · Жалоба Скажите пожалуйста, насколько трудно сделать 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 и перезапустить контроллер. ..., то может лучше поставить EEPROM и предусмотреть механизм ее программирования извне, а уже потом (в дальнейшем, после решения основных задач) заниматься лоадером. Штатным средством программирования EEPROM является утилита CyConsole.exe. Возможно, полезной для Вас будет тема Проблема с cy7c68013a этого форума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikeT 0 11 апреля, 2009 Опубликовано 11 апреля, 2009 · Жалоба 1 По-моему, Вас ввела в заблуждение дата ревизии AN041 (July 9, 2004). Да. Это я что-то затупил - не посмотрел на дату Но... с 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: Средний уровень (разбор и "склейка" пакектов, ну в общем, какая-то предобработка) должен писать я и я планировал делать это на С++. Вообще, мы хотели в перспективе QT использовать и для среднего уровня и для GUI. В то же время, я прекрасно понимаю, что если Cypress сделал и активно двыигает новое решение под .NET, то со старым его решением, тем более под FX2LP могут быть проблемы + это скорее всего уже Cypress'ом не поддерживается в должной мере. В связи с этим у меня такой вопрос конкретного чайника (под винду я писал только сверхпростые консольки и такие вещи как .NET для меня известны на уровне статей из журнала "мурзилка" :rolleyes: ): могу ли я использовать все "вкусности" от решения предлагаемого Cypress под .NET, но использовать не .NET а, например "обычный" С++? 2 Штатным средством программирования EEPROM является утилита CyConsole.exe. Возможно, полезной для Вас будет тема Проблема с cy7c68013a этого форума. Спасибо большое за очень за ссылку. Прочитал на два раза, но вот такой вопрос есть (там он затронут слегка): микруха EEPROM у нас впаивается "намертво" и джамперов никаких не будет (такие требования, будь моя воля - поставил бы EEPROM в панельке и все, а потом, когда все отлажено, убрал-бы ее вообще насовсем), что там в ней лежит - хз. Не будет ли проблем с этим (старт FX2LP с подключенной EEPROM с мусором внутри)? Или обязательно нужно что-то осмысленное туда записать? В принципе, мы можем вывести технологический разъем для прошивки EEPROM с компутера. Как Вы считаете, стоит ли зарезервировать такую возможность "на крайний случай"? 3 Мы планируем, что клок на FX2LP будет приходить с ПЛИС, то есть пока ПЛИС не стартует, FX2LP будет "мертвая". не будет ли тут каких-нибудь проблем, связанных с USB (сам протокол), т.к. питание подано, а тактовой частоты еще нет? P.S. Очень большое Вам спасибо за развернутый и крайне полезный ответ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 12 апреля, 2009 Опубликовано 12 апреля, 2009 · Жалоба 1 Про новый подход с использованием .NET я знаю. Но нам крайне не хотелось бы использовать .NET только потому что "Cypress так сделал". Верхний уровень (GUI и т.п.) у нас пишет человек который плотно работает на Delphi (не дотнетовском) и врядли мы его сагитируем на .NET перейти :rolleyes: Средний уровень (разбор и "склейка" пакектов, ну в общем, какая-то предобработка) должен писать я и я планировал делать это на С++. Вообще, мы хотели в перспективе QT использовать и для среднего уровня и для GUI. ... В связи с этим у меня такой вопрос конкретного чайника (под винду я писал только сверхпростые консольки и такие вещи как .NET для меня известны на уровне статей из журнала "мурзилка" :rolleyes: ): могу ли я использовать все "вкусности" от решения предлагаемого Cypress под .NET, но использовать не .NET а, например "обычный" С++? Если, разница в предложениях на рынке труда для программистов Delphi и для программистов .NET не является достаточной мотивацией для вашего программиста верхнего уровня, то вам придется использовать связку приложения на Delphi ( (GUI и т.п.)) с .dll (задачи среднего уровня и общение с CyUSB.sys). В этом случае "настольной книгой" для Вас является "Cypress CyUsb.sys Programmer`s Reference"(\Cypress\USB\help\cyusb.chm). Думаю для Вас полезным будет Archive.rar из темы прием данных из АЦП в ПК по USB. 2 Спасибо большое за очень за ссылку. Прочитал на два раза, но вот такой вопрос есть (там он затронут слегка): микруха EEPROM у нас впаивается "намертво" и джамперов никаких не будет (такие требования, будь моя воля - поставил бы EEPROM в панельке и все, а потом, когда все отлажено, убрал-бы ее вообще насовсем), что там в ней лежит - хз. Не будет ли проблем с этим (старт FX2LP с подключенной EEPROM с мусором внутри)? Или обязательно нужно что-то осмысленное туда записать? В принципе, мы можем вывести технологический разъем для прошивки EEPROM с компутера. Как Вы считаете, стоит ли зарезервировать такую возможность "на крайний случай"? Если будете ставить EEPROM, из которой будет загружаться FX2LP, то обязательно нужно поставить джампер (см. EEPROM.gif из темы Проблема с cy7c68013a). Иначе, если во время программирования EEPROM произойдет сбой, то придется отпаивать и поднимать ножку у EEPROM. То же самое будет, если записанная программа содержит ошибки и Windows перестает видеть FX2LP. 3 Мы планируем, что клок на FX2LP будет приходить с ПЛИС, то есть пока ПЛИС не стартует, FX2LP будет "мертвая". не будет ли тут каких-нибудь проблем, связанных с USB (сам протокол), т.к. питание подано, а тактовой частоты еще нет? Нужно выдавать Reset на FX2LP, пока не стабилизируется тактовая частота, подаваемая на FX2LP. Все требования изложены в "cy7c68013a_8.pdf", "EZ-USB_TRM.pdf" и "fx2_to_fx2lp.pdf". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikeT 0 12 апреля, 2009 Опубликовано 12 апреля, 2009 · Жалоба В этом случае "настольной книгой" для Вас является "Cypress CyUsb.sys Programmer`s Reference"(\Cypress\USB\help\cyusb.chm). Думаю для Вас полезным будет Archive.rar из темы прием данных из АЦП в ПК по USB. Спасибо. Как я понял, рекомендованный Вами док - это "старый" подход для работы с USB (HOST), а "новый" - это .NET? Если будете ставить EEPROM, из которой будет загружаться FX2LP, то обязательно нужно поставить джампер (см.[url="http://electronix.ru/forum/index.php? а) если у нас будет разъем для программирования EEPROM извне, то это ведь снимает необходимость установки джампера? б) что Вы порекомендуете - может вообще тогда не ставить EEPROM? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lepert 0 12 апреля, 2009 Опубликовано 12 апреля, 2009 (изменено) · Жалоба Спасибо. Как я понял, рекомендованный Вами док - это "старый" подход для работы с USB (HOST), а "новый" - это .NET? а) если у нас будет разъем для программирования EEPROM извне, то это ведь снимает необходимость установки джампера? б) что Вы порекомендуете - может вообще тогда не ставить EEPROM? Да там совсем не обязательно все делать именно на NET, делайте на Delphi. API он и в Африке API. Ваша задача достучаться до CyUSB dll-ки. А на каком языке Вы это сделаете не важно. Что касается джампера, утилита CyUSB Console позволяет затереть и перепрошить EEPROM без переподключений джампера, проверено. EzUSB не позволяет это делать, а CyUSB позволяет. А раз CyUSB может, значит и Вы сможете. Другое дело, если Вы работаете в связке с программой хоста, может действительно, не морочить голову с внешней памятью, а заливать софт в Cypress из основной программы на PC, это наиболее простой путь. Правда при каждом запуске она будет переподключать устройство, к этому надо быть готовым, то есть будет звук ту-дум переподключения устройства, что не есть хорошо. Тут надо по моему ориентироваться на то, как часто будет смена софта. Если раз в год, это одно, тогда можно вообще делать это внешним конфигуратором. А если раз в месяц, тогда наверное, лучше делать без EEPROM. Изменено 12 апреля, 2009 пользователем lepert Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 12 апреля, 2009 Опубликовано 12 апреля, 2009 · Жалоба Да там совсем не обязательно все делать именно на NET, делайте на Delphi. API он и в Африке API. Ваша задача достучаться до CyUSB dll-ки. А на каком языке Вы это сделаете не важно. ... Пожалуйста, напишите, где можно почитать о том, как в приложении на Delphi (native 32bit) наследовать классы .NET сборок? ... Что касается джампера, утилита 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"? Пожалуйста, расскажите как это сделать? ... а) если у нас будет разъем для программирования EEPROM извне, то это ведь снимает необходимость установки джампера? Мне не понятно, почему Вас так пугает присутствие двухконтактного разъема - для установки джампера, вместо трехконтактного - для обеспечения возможности запрограммировать EEPROM через интерфейс I2C с помощью внешнего устройства? Причем, этот трехконтактный должен иметь ключ, чтобы правильно подключать внешнее устройство. И даже в этом случае, все еще есть возможность что-нибудь спалить, при подключении внешнего устройства и отсутствии общего заземления. б) что Вы порекомендуете - может вообще тогда не ставить EEPROM? Мой ответ на этот вопрос уже изложен в теме прием данных из АЦП в ПК по USB. То есть, я считаю, что нужно иметь возможность задать желаемый VID, PID, и Serial Number. EEPROM_Trouble.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikeT 0 13 апреля, 2009 Опубликовано 13 апреля, 2009 · Жалоба Мне не понятно, почему Вас так пугает присутствие двухконтактного разъема... Давайте, я ниже изложу так как я Вас понял (и вообще саму идею), а Вы поправите если я неправ? 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: Тем более, что проблема с программированием и "отключением" EEPROM снимиается. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 13 апреля, 2009 Опубликовано 13 апреля, 2009 · Жалоба Давайте, я ниже изложу так как я Вас понял (и вообще саму идею), а Вы поправите если я неправ? ... так? Вы все совершенно правильно поняли. Джампер устанавливается для отключения EEPROM. В рабочем режиме джампер снят. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikeT 0 13 апреля, 2009 Опубликовано 13 апреля, 2009 · Жалоба Вы все совершенно правильно поняли. Джампер устанавливается для отключения EEPROM. В рабочем режиме джампер снят. Я тогда наберусь наглости и спрошу еще вот по этой теме луп-бэк на FX2LP, т.к. вижу по Вашим ответом, что Вы фундаментально разобрались с USB и, возможно, ответ у Вас потребует не более 5 секунд :rolleyes: Суть вопроса: Можно ли на "голой" FX2LP (ну как на ките стоит) организовать либо луп-бэк (хост->FX2LP->хост), либо режим "FX2LP->HOST", причем: а) скорость меня итнтересует от 25 МБ в секунду и выше б) если используется режим генератора данных ("FX2LP->HOST"), то чтобы была возможность генерировать какие-то переменные данные, а не константу. Заранее благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 13 апреля, 2009 Опубликовано 13 апреля, 2009 · Жалоба Суть вопроса: Можно ли на "голой" 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 0 14 апреля, 2009 Опубликовано 14 апреля, 2009 · Жалоба ...Можно получить режим генератора с медленно изменяющимися данными. CPU контроллера имеет возможность доступа к данным Endpoint, как к ОЗУ. CPU контроллера должно отслеживать момент завершения выдачи FX2LP данных HOSTу модифицировать один байт в In Endpoint и запускать следующую пересылку данных "FX2LP->HOST". Тут можно побороться за скорость обмена около 25 МБ в секунду. Спасибо большое. Будем думать :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Glitko 0 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба Помогите разобратся ! У меня на плате CY768013A-128, АТмега-64,ПЛИСИна,АЦП.CY768013A-128 используется в режиме GPIF.Прошивка CY768013A-128 нормально заливается Сайпросовской консолью и работает.Но я хочу грузить прошивку из АТмега-64, при включении питания ,дальше Атмега по своему плану.Делаю файл *.iic с помощью утилиты hex2bix,заношу его в АТмегу,при повторном включении питания шиш, прошивка не работает ,подхватываются стандартный для CY768013A-128 VID и PID!Просто VID и PID с АТмеги грузятся без проблем.Подскажите что может быть? Я понимаю, что вариантов много но все-таки!? Тему внимательно прчитал, при формировании *.iic делал все как советовали! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SFx 0 11 мая, 2009 Опубликовано 11 мая, 2009 · Жалоба Помогите разобратся ! ..... Тему внимательно прчитал, при формировании *.iic делал все как советовали! Вы прошивку от CY грузите по I2C из ATmega64. я так понимаю прошивка для CY должна быть внутри флешки также сохранена, как и прошивка для ATmega64... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться