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

Zynq USB

Всем привет!

Пробую запустить USB на Zynq-7000 baremetal. За основу взял пример xusbps_intr_example.c из поставки Vivado/Vitis.

 

Разрабатываемое устройство - USB Device с контрольными конечными точками 0x00 и 0x80, и по одной Bulk конечной точке IN и OUT.

 

Сценарий работы: хост передает данные на устройство по Bulk OUT, устройство их обрабатывает и возвращает хосту через Bulk IN.

 

Собственно, все работает более-менее хорошо до тех пор, пока не нужно "придержать" передачу данных с хоста. Т.е. приходит блок данных на обработку и пока приложение на Zynq занимается обработкой, я не хочу принимать новые данные с хоста. Вроде бы интерфейс USB позволяет реализовать такой сценарий ответами NAK/NYET. Судя по ug585-Zynq-7000-TRM, конечная точка Bulk OUT на запросы транзакций отвечает NAK, если она не primed. Т.е. перед транзакцией мы готовим дескрипторы транзакций dTD, затем делаем конечную точку primed. Когда отработают USB и DMA, данные окажутся в указанной области памяти, дескрипторы dTD снова становятся активными, а конечная точка должна стать не-primed. Пробую реализовать. Передаю c хоста блок данных по размеру входного буфера. USB и DMA отрабатывают, но конечная точка остается primed. Статус конечной точки проверяю, читая регистр XUSBPS_EPRDY_OFFSET. Т.е. если верить ug585, в primed конечную точку хост может продолжить передавать данные, в ситуации, когда их некуда девать. 

 

Если кто-нибудь работал с USB на Zynq-7000 baremetal, то как вы это обходили? Ситуация выглядит так, что штатный драйвер не рассчитан на такого рода обмен. Ну, или что более вероятно, я чего-то не понимаю)

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


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

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

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

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

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

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

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

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

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

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