Jump to content
    

Инициализировать USB host на Xilinx ZynqMP Ultrascale+

Требуется провести инициализацию USB 2.0 в режиме USB-host в baremetal. Проверка - на отладке ZCU104 (USB phy - чип USB3320).

Что требуется в результате:

- включение питания на USB-А разъем

- инициализация регистров USB-HOST

- инициализация прерываний USB

- регистрация функций событий USB (attach, detach, приема - передачи)

- отправка стандартного запроса (например GET DEVICE DESCRIPTOR) и получение ответа от устройства.

Устройство любое - скажем, флешка. От хоста не требуется проводить enumeration - никаких хабов не будет. Будет всегда только одно и то же устройство на шине USB.

Как я вижу результат: запускаем программу, втыкаем любое устройство в ZCU104, программа в терминал выводит Device descriptor.

USB Device пример от ксайлинкса проверял - все ок, но HOST как я понял, это совсем другое. У него даже набор регистров отдельный. Инициализацию от device не притянешь к инициализации Host.

Как я понял, примера host драйвера в baremetal xilinx не предоставляет и найти его, по крайней мере для меня, оказалось проблемно. Находил только один платный, для Zynq7000, но хозяин драйвера сказал что в zynqMP ultrascale+ он не заработает - совсем другой контроллер USB.

Может кто-то подскажет толковую документацию по алгоритму инициализации usb-host контроллера. Пока конкретного ничего не нашел, только в общем и целом - в TRM по Zynq Ultrascale programming guide для USB - как то там все очень бедно. 

Объем работ представляю очень смутно - поэтому лучше сообщите свои пожелания по стоимости в личку.

Совсем счастье будет если у кого-то уже описанные задачи решены - сообщите стоимость Вашего решения (тоже в личку)

Заранее благодарен!

 

Share this post


Link to post
Share on other sites

  1. UG1085 - Zynq UltraScale+ MPSoC Technical Reference Manual
    Глава 31: "USB Controller"

  2. UG1087 - Zynq UltraScale+ MPSoC Vivado Design Suite User Guide

    https://docs.amd.com/r/en-US/ug1087-zynq-ultrascale-registers/pmu_usb-USB3_REGS-Register
  1. Zynq UltraScale+ MPSoC: How to get a USB 2.0 standard interface working in PetaLinux

  2. Местная тема 

     

  3.  

Share this post


Link to post
Share on other sites

9 часов назад, alexPec сказал:

Требуется провести инициализацию USB 2.0 в режиме USB-host в baremetal. Проверка - на отладке ZCU104 (USB phy - чип USB3320).

Ух ты, оказывается в суперпупермегацинке нет полноценного встроенного усб контроллера? Требуется внешний чип...Однако))

Share this post


Link to post
Share on other sites

Вы откуда эти ссылки взяли?

9 часов назад, Stepanov сказал:

UG1085 - Zynq UltraScale+ MPSoC Technical Reference Manual
Ключевые разделы:

  • Глава 14: "USB Controller"

image.png.9fd5e8df8de3dbf1d7fd34635d3f9816.png

Раздел 31, не 14. Там общие сведение и Register summary. Детального описания каждого регистра нет.

 

9 часов назад, Stepanov сказал:
  1.  

  2. UG1087 - Zynq UltraScale+ MPSoC Vivado Design Suite User Guide
    Применимо для:

    • Конфигурации IP-ядер USB в Vivado
    • Настройки тактирования и пинов

Это про IP ядра, там ничего нет про PS USB контроллер

9 часов назад, Stepanov сказал:

DS891 - Zynq UltraScale+ MPSoC Data Sheet
Особенно важно:

  • Таблица 38: "USB 2.0 OTG/Host Controller"
  • Питание, частоты, требования к плате

Нет там такой таблицы, последняя таблица 12:

image.thumb.png.886a9da7b2d3a6f6bff36878775d59b0.png

А про USB там только вот что:

image.thumb.png.77b8137e8a9f74d0e39e6380fa05d718.png

9 часов назад, Stepanov сказал:

AN1219 - Using the USB 2.0 Controller in Zynq UltraScale+ MPSoC Devices (Application Note)

Это откуда? Ксайлинкс про такой документ судя по всему не слышал:

image.thumb.png.abb5a2178ffdf7906158c799b1256151.png

 

9 часов назад, Stepanov сказал:

XAPP1306 - USB 3.0 and 2.0 Design on Zynq UltraScale+ MPSoC

Это вообще не о том, вас обманули 🙂

image.thumb.png.1e2be08f17f2f9271f73d01c373e81c3.png

9 часов назад, Stepanov сказал:

TRM Appendix B: USB Protocol and Architecture

В TRM только Appendix A, и он не про USB.

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


Так что вопрос по-прежнему актуален. Новой информации пока никакой...

1 час назад, mantech сказал:

Ух ты, оказывается в суперпупермегацинке нет полноценного встроенного усб контроллера? Требуется внешний чип...Однако))

Да и с внешним-то не все так просто видимо. Поди запусти еще на нем хост...

Share this post


Link to post
Share on other sites

11 минут назад, alexPec сказал:

Вы откуда эти ссылки взяли?

ChatGPT вестимо. Уже не первый раз.

22 минуты назад, alexPec сказал:

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


Так что вопрос по-прежнему актуален. Новой информации пока никакой...

Хост-контроллер там xHCI, поэтому берите https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf и делайте по нему:

image.thumb.png.aec8c8367bd409a722d0b12961cab2f3.png

VS

image.thumb.png.0207fa9f2c74e3d973c45f20ec941b2c.png

23 минуты назад, alexPec сказал:

Да и с внешним-то не все так просто видимо. Поди запусти еще на нем хост...

Поскольку xHCI сейчас везде, то в первом приближении трудности только в том, чтобы найти самый baremetal вариант и поменять в нём адреса регистров + перетащить из линуксового драйвера инициализацию низкоуровневых блоков самого кристалла.

Share this post


Link to post
Share on other sites

2 часа назад, makc сказал:

Поскольку xHCI сейчас везде, то в первом приближении трудности только в том, чтобы найти самый baremetal вариант и поменять в нём адреса регистров + перетащить из линуксового драйвера инициализацию низкоуровневых блоков самого кристалла.

Спасибо. Не знал про это. Покопаю в эту сторону.
Но предложение про купить готовое решение не отменяется.

Share this post


Link to post
Share on other sites

3 часа назад, makc сказал:

то в первом приближении трудности только в том, чтобы найти самый baremetal вариант 

Я его кстати где-то видел, как раз для цинка и брал что-то для аллвиннера, года 3 назад

Share this post


Link to post
Share on other sites

1 час назад, mantech сказал:

Я его кстати где-то видел, как раз для цинка и брал что-то для аллвиннера, года 3 назад

А не вспомните где?

В алвиннере тоже xHCI интеловский?

Share this post


Link to post
Share on other sites

2 часа назад, alexPec сказал:

В алвиннере тоже xHCI интеловский?

В аллвиннере да, OHCI\EHCI  усб 2.0, усб 3.0 там нет. Это стандартный контроллер, он во многих чипах, рокчип, IMX6(7) от фриски, в NXPшных МК тоже и пр...

Edited by mantech

Share this post


Link to post
Share on other sites

2 часа назад, alexPec сказал:

Спасибо! Похоже на правду.

Больше того, это вполне неплохо работает на x86, а поскольку регистровый интерфейс специфицирован и унифицирован, то и на Цинке тоже будет работать.

Share this post


Link to post
Share on other sites

15 hours ago, mantech said:

Ух ты, оказывается в суперпупермегацинке нет полноценного встроенного усб контроллера? Требуется внешний чип...Однако))

480 мгц ногами дрыгать не такто просто внешний чип по большому счету это физика кстати и стм32 в hs егоже требуют

Share this post


Link to post
Share on other sites

8 часов назад, mnovikov2000 сказал:

кстати и стм32 в hs егоже требуют

Да да, тоже "гениальные" разработчики))))

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...