Jump to content

    

CY7C680013A Киньте ссылкой на софт и лит-ру

С Новым Годом!!!

Здравствуйте премногоуважаемые жители форума!!!

 

Имею сей контроллер не знаю как к нему подступиться чтобы USB начаеть делать. Какой софт юзать??

Смотрел кейл, там вроде этот проц есть. Может есть что специфическое от cypressa??

А для разработки драйвера и софта под виндой че юзать???

 

СПС!!!

Share this post


Link to post
Share on other sites

Для начала стоит посмотреть софт от developer kit'а, там как раз Keil и используется в качестве компилятора, есть примеры.

Простой поиск на сайте Cypress'а CY7C68013A (только с правильным количеством нулей) дает кучу ссылок.

Share this post


Link to post
Share on other sites

Для того, чтобы полностью врубиться в USB стандарт, а также

написать программу под этот чип в Keil и спроектировать схему

нужен всего один документ : FX2 TechRefManual.pdf, он лежит

в разделе доков для данного чипа на сайте Cypress.

По поводу драйвера :

Можно воспользоваться уже готовым драйвером с исходниками EZUSB.sys, к нему же в ките, который лежит там же, в разделе SDK для чипа на сайте cypress, есть программа под винду, которая работает в паре с драйвером, тоже с исходниками.

Если не нравится EZUSB, он слегка тормознутый, можно использовать

драйвер CyUSB.sys, тоже есть с исходниками.

Правда верхняя программа под него, классная кстати идет уже без сорцов.

Можно воспользоваться уловкой виндов и использовать свое устройство как MASS STORAGE DEVICE, что значит, чип обзывает себя накопителем, как это делается смотреть на сайте usb.org,

ссылки в это форуме есть. Тогда драйвер не нужен в принципе,

используется готовый по умолчанию в виндах.

Ну а если очень хочется можно написать свой с нуля с помощью WIN XP DDK.

Ну и конечно понадобится собственно USB2.0 спецификация, там же на usb.org.

Edited by rvk

Share this post


Link to post
Share on other sites

Спасибо, я где-то так и делал. Просто для подстраховки, чтобы не забыть чего-то!!!

Share this post


Link to post
Share on other sites
можно использовать драйвер CyUSB.sys, тоже есть с исходниками.
Я использую этот драйвер. Отлично работает! Хотел поинтересоваться, а где его исходники найти? А то в китах все больше EZUSB.sys приводится.

Share this post


Link to post
Share on other sites

Да извините прогнал я по поводу CyUSB, исходников нет, есть

только API файл с заголовком и библиотекой для использования

в программе верхнего уровня.

Edited by rvk

Share this post


Link to post
Share on other sites

FX2_TechRefManual.pdf + GPIF_Primer.pdf рулят. Только в последнем они постоянно что-то недоговаривают. Во всяком случае мне все время так кажется.

 

А я вот просидел 3 дня, прикрутил его родимого к Spartan 3, пакеты летают по GPIF как ласточки. Но вот на комп(возможно и на сам спартан тоже) отдельные пакетики в 512 байт прилетают как попало. Было-бы очень интересно как правильно решать такую проблему.

Share this post


Link to post
Share on other sites
Да извините прогнал я по поводу CyUSB, исходников нет
Ну вот... А я уже губки раскатал... :-)

 

FX2_TechRefManual.pdf + GPIF_Primer.pdf рулят. Только в последнем они постоянно что-то недоговаривают. Во всяком случае мне все время так кажется.
Есть такая буква... Но вообще-то этот Primer - хороший материал. Он даже в основу хелпа GPIF Designer'а лёг. Правда, я не смог с их дурацкого сайта (ох, прошелся бы я серпом по избранным местам их web-дезайнера!) скачать исходники: нажимаю линк - ничего не скачивается (скачал только сам PDF с описанием). Пришлось обращаться в техподдержку, они мне приаттачили ZIP-архив с этими исходниками.

 

А я вот просидел 3 дня, прикрутил его родимого к Spartan 3, пакеты летают по GPIF как ласточки. Но вот на комп (возможно и на сам спартан тоже) отдельные пакетики в 512 байт прилетают как попало. Было-бы очень интересно как правильно решать такую проблему.
Не знаю, что используется на компьютерной стороне, но я пользуюсь CyAPI к их превосходному CyUSB.sys. У меня была похожая проблема, пакеты хаотически не приходили. Понятное дело, грешил на их драйвер. Но зря. Оказалось, что в моем железе была трудноуловимая ошибка, импульс SLWR изредка был короче, чем нужно (речь о CY7C68001). Поэтому мне думается, что если работа идет через CyAPI, то желательно очень внимательно проверить железо. В Спартане что-нибудь отладочное намутить, хотя бы пакеты подсчитывать. Т.к. их CyAPI работает очень хорошо, я на него грешил бы в последнюю очередь.

Share this post


Link to post
Share on other sites
Не знаю, что используется на компьютерной стороне, но я пользуюсь CyAPI к их превосходному CyUSB.sys. У меня была похожая проблема, пакеты хаотически не приходили. Понятное дело, грешил на их драйвер. Но зря. Оказалось, что в моем железе была трудноуловимая ошибка, импульс SLWR изредка был короче, чем нужно (речь о CY7C68001). Поэтому мне думается, что если работа идет через CyAPI, то желательно очень внимательно проверить железо. В Спартане что-нибудь отладочное намутить, хотя бы пакеты подсчитывать. Т.к. их CyAPI работает очень хорошо, я на него грешил бы в последнюю очередь.

 

Я наверно выразился немного смутно. Все пакеты приходят, и насколько я понял без ошибок. Проблема в том, что эти самые пакеты приходят не в правильном порядке. Если отправление делать медленно, то все путем. Стоит начать отправлять без задержки, так начинаются проблемы. На компе запущен CyBulk(та, что идет в пакете sdk) который и проверяет целостность. Насколько я понимаю USB в Bulk режиме не дает гарантии когда пакет придет, но я так и не понял, что насчет гарантии очередности пакетов. Если ее нет то посоветуйте, как правильно и быстро(что важно) это можно решить.

Share this post


Link to post
Share on other sites

Мой вопрос отпадает. Написал свою прогу на CyAPI и все начало работать. Видать этот CyBulk как-то странно считывает данные.

Теперь правда беда, скорость с CyAPI ник черту. Видео 512 на 512 8-бит идет всего 25 фпс, это примерно 12 мегабайт/сек. А хочется 35 мб/сек.

Share this post


Link to post
Share on other sites
Мой вопрос отпадает. Написал свою прогу на CyAPI и все начало работать. Видать этот CyBulk как-то странно считывает данные.

Теперь правда беда, скорость с CyAPI ник черту. Видео 512 на 512 8-бит идет всего 25 фпс, это примерно 12 мегабайт/сек. А хочется 35 мб/сек.

Забить на CyAPI - перейти на USBIO и всё получится. А как провереяте скорость ? Переполнение буферов ?

Share this post


Link to post
Share on other sites
Забить на CyAPI - перейти на USBIO и всё получится. А как провереяте скорость ? Переполнение буферов ?

 

Программа посылает Спартану картинку, тот ее по простому инвертирует и отсылает назад, на моем конце я гляжу частоту с которой я принимаю кадры. Судя по этому и расчитал, что примерно 12 метров.

Насчет переполнения буферов. Судя по мигающему на борде светодиоду ПЛИС справляется со своим делом очень быстро. Почти все время стоит в ожидании. Я поставил на вход и на выход по 2кб фифо, так что и ПЛИС микроконтроллер помоему не стоят.

Еще я попробовал убрать весь код какой можно было из главного цикла. Скорость поднялась с 25 до 27 кадров с сек.

Так что последую вашему совету и попробую USBIO.

Share this post


Link to post
Share on other sites

Программа посылает Спартану картинку, тот ее по простому инвертирует и отсылает назад, на моем конце я гляжу частоту с которой я принимаю кадры. Судя по этому и расчитал, что примерно 12 метров.

Насчет переполнения буферов. Судя по мигающему на борде светодиоду ПЛИС справляется со своим делом очень быстро. Почти все время стоит в ожидании. Я поставил на вход и на выход по 2кб фифо, так что и ПЛИС микроконтроллер помоему не стоят.

 

А какого размера буфер софтовый передается драйверу ? Размером на кадр или маленький ?

Еще я попробовал убрать весь код какой можно было из главного цикла. Скорость поднялась с 25 до 27 кадров с сек.

Какая машина используется ?

Так что последую вашему совету и попробую USBIO.

У нас когда то давно получилось на ввод получить примерно 27Мб, больше не было потребности.

Share this post


Link to post
Share on other sites
А какого размера буфер софтовый передается драйверу ? Размером на кадр или маленький ?

Размер буфера на весь кадр, тоесть примерно 260 кбайт.

 

Какая машина используется ?

Pentium 4 3.06ghz, 533 mhz bus. Мать с 865 чипсетом.

 

Только что попробовал USBIO Demo application и его

Read File to Pipe и второй с Write Pipe to File. Тоесть

пишу в EP2OUT и читаю из EP6IN.

При запуске оба показывают стабильно 8.9 мегабайт/с. Тоесть

примерно 18 мбайт/с так как трафик идет в обе стороны.

Уже не 12 как в CyAPI, но и не желаемые 30-35.

Share this post


Link to post
Share on other sites
Забить на CyAPI - перейти на USBIO и всё получится.
Ну не знаю, не знаю... По моему, от API это никак не зависит, все дело в драйвере. А драйверу все равно, как к нему обращаться: посредством своих низкоуровневых вызовов, или через CyAPI. Является ли драйвер ezusb.sys лучше чем CyUSB.sys я тоже затрудняюсь сказать. Во всяком случае специалисты самой Cypress говорят, что предпочтительнее использовать CyUSB.sys. Кроме того, ничто не мешает работать с CyUSB.sys посредством низкоуровневых вызовов, т.к. хендл драйвера всегда имеется (вызов DeviceHandle).

 

Что касается CyAPI, то нужно помнить, что для скоростного обмена данными следует использовать асинхронный ввод/вывод через связку BeginDataXfer->WaitForXfer->FinishDataXfer, а не простой XferData. Также следует учесть буферирование. Например, для своих скоростей передачи (до 8 МБ) я опытным путем выяснил, что достаточная скорость достигается при очереди из 4 запросов по 8 512-байтных блоков в каждом (увеличение до 16-ти или 32-х увеличивает общую скорость передачи, но уже не намного). Далее. Передача данных должна обязательно производиться в отдельном треде, для которого нужно выставить повышенный приоритет (я выставляю THREAD_PRIORITY_TIME_CRITICAL).

 

Ну и, наконец, достижение скоростей передачи в 30-35 МБ/сек - далеко не тривиальная задача! Достаточно взглянуть на скорость передачи данных с одного винчестера на другой. У меня скорость такой передачи на дисках EIDE даже 30 МБ не достигает! А ведь эта процедура выполняется системными средствами, хорошо вылизанными и отлаженными системными драйверами! Получить скорость более 35 МБ удается только с дисками SATA. Поэтому мне думается, что задача достижения скорости передачи в 30-35 МБ/сек должна решаться комплексно, с учетом не только драйверного хозяйства, но и приложения, использующего эти данные. Кстати, очень полезно провести хронометраж с помощью точного таймера (того, который QueryPerformanceCounter), это может помочь выявить узкие места.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this