Перейти к содержанию
    

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

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

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

 

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

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

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

 

СПС!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для того, чтобы полностью врубиться в 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.

Изменено пользователем rvk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Изменено пользователем rvk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да извините прогнал я по поводу 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 работает очень хорошо, я на него грешил бы в последнюю очередь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Размер буфера на весь кадр, тоесть примерно 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Забить на 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), это может помочь выявить узкие места.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...