Тестирование USB

Режимы устройства

Режим хоста (Host Mode)

Плата разработки выступает в роли USB-хоста, отвечающего за питание подключенных ведомых устройств и управление передачей данных.


Режим устройства/периферии (Device/Peripheral Mode)

Устройство работает как ведомое (управляемое хостом) и не может подключаться к другим USB-устройствам.


Режим OTG (On-The-Go)

Устройство может динамически переключаться между режимом хоста (Host Mode) и режимом устройства (Device Mode) без фиксированной роли.

Связанная конфигурация

Изменение дерева устройств

Измените файл дерева устройств в соответствии со следующим путем проекта:

image-20250714173454991

Добавьте в этот файл следующее содержимое:

Конфигурация ядра для USB как виртуального последовательного порта

Ссылки:

1.https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842272/Zynq+Linux+USB+Device+Driver

2.https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841624/Zynq-7000+AP+SoC+USB+CDC+Device+Class+Design+Example+Techtip

Используйте команду:

В появившемся текстовом интерфейсе включите следующее содержимое: Драйвер можно скомпилировать в ядро или как модуль ядра для динамической загрузки после запуска системы. Рекомендуется компилировать его как модуль ядра.

Перекомпиляция

Используйте команду

Скопируйте перекомпилированное ядро и дерево устройств на SD-карту. Включите питание и загрузите систему, затем вручную загрузите модули ядра в консоли или через telnet:

Вы увидите устройство /dev/ttyGS0:

image-20250715104809779

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

Тестирование USB

В режиме хоста

Заранее подготовьте USB-накопитель (обязательно в формате FAT32) и создайте на нем несколько документов с помощью компьютера, например, два документа с именами a.txt и b.txt.

Замкните контакты JP2 и JP3 на плате разработки перемычками. После включения питания и запуска системы вставьте USB-накопитель в соответствующий интерфейс Type-C OTG (потребуется переходник с Type-C на Type-A "мама"). В консоли последовательного порта появится следующая информация:

image-20250715105713572

Далее введите команду для просмотра точки монтирования USB-накопителя и использования памяти:

image-20250715110308923

Вы увидите, что точка монтирования находится в "/run/media/sda1". В соответствии с расположением USB-накопителя, показанным на изображении выше, введите cd /run/media/sda1, чтобы перейти к USB-накопителю.

Далее вы можете ввести "ls", чтобы просмотреть содержимое USB-накопителя:

image-20250715143127796

Вы увидите, что в папке есть два файла: a.txt и b.txt. Вы также можете напрямую изменять содержимое USB-накопителя.

Режим OTG

Поскольку мы включили USB CDC при конфигурации ядра, при подключении к компьютеру через USB-кабель этот USB будет виртуализирован как последовательный порт.

После нормального включения и запуска системы сначала загрузите модули ядра, соответствующие упомянутому ранее виртуальному последовательному порту. Затем подключите плату разработки к компьютеру с помощью USB-кабеля с разъемами Type-C на обоих концах. В помощнике отладки последовательного порта вы увидите два последовательных порта, где COM11 — это виртуальный последовательный порт, созданный интерфейсом USB OTG, а COM12 — это консольный последовательный порт системы Zynq Linux.

image-20250715113039885

Виртуальный последовательный порт соответствует /dev/ttyGS0 на Zynq.

9c36b01f-3723-4361-ad8c-843a5e21fa39

Полученные данные будут отображены в последовательном терминале компьютера:

c188e68c-74a3-4567-9c0f-ba140de34798

Примечание: В терминале для отправки и получения данных по последовательному порту в качестве условия завершения используется '\n'. То есть к отправляемым данным будет добавляться '\n', а полученные данные должны быть выведены после получения '\n'.

97e8b7b0-39f2-4343-a71e-3851c899638e