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

DMA USB Host<->USB Device на двух IMXRT1062

Добрый день,

 

имею две Teensy 4.1 https://www.pjrc.com/store/teensy41.html  , с процессором  IMXRT1062

В каждой борде есть USB Host и USB Slave, я хочу (слышал что можно) соединить Хост в Слейв и напрямую коммуницироваться, но совершенно не понимаю как сделать это через какой-то быстрый интерфейс. Идеально я хотел бы посылать с одной борды на другую пакеты по 16-64К данных и очень хотелось бы, чтобы это шло через DMA не затрагивая основной процессор.

 

Тыкните, пожалуйста, в какой-то пример как это делают! Я уже спросил у производителя на форуме https://forum.pjrc.com/threads/69191-2xT4-1-USB-Host-lt-gt-Usb-Devie-with-DMA , но там как-то почему-то мой вопрос пока еще проигнорировали.

 

Спасибо!

 

ИИВ

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


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

15 часов назад, iiv сказал:

но совершенно не понимаю как сделать это через какой-то быстрый интерфейс. Идеально я хотел бы посылать с одной борды на другую пакеты по 16-64К данных и очень хотелось бы, чтобы это шло через DMA не затрагивая основной процессор.

Видимо это можно сделать посредством bulk-передач. Что это такое - см.описание USB.

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


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

4 hours ago, jcxz said:

Видимо это можно сделать посредством bulk-передач. Что это такое - см.описание USB.

Спасибо большое, за ключевое слово. Почитал доку на процессор, в ней это слово много раз встречается, но так быстро и ничего не понял, то есть понятно, что bulk надо делать, но хочется с DMA, и как-то в доке я не смог быстро об этом найти, да и разбросано оно все по 3000 страницам доки как-то очень непредсказуемо.

 

Скажите, пожалуйста, а примерчика подходящего под рукой уВас не найдется, чтобы было с чего начинать, а то я эти процессоры только несколько недель назад начал пользовать, и, пока играюсь только в teensy оболочке и до этого с семейством NXP не сталкивался.

 

Спасибо!

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


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

52 минуты назад, iiv сказал:

Скажите, пожалуйста, а примерчика подходящего под рукой уВас не найдется, чтобы было с чего начинать, а то я эти процессоры только несколько недель назад начал пользовать,

Так я с этими МК вообще не работал, а периферия во всех разная.

Обычно в USB-периферии имеется некоторый объём памяти (FIFO). Когда хотите произвести транзакцию через какую-то EP (endpoint): заполняете FIFO-память, принадлежащую этой EP и потом запускаете транзакцию (например bulk-передачу). Вот заполнение FIFO-памяти данными передаваемого пакета можно делать или силами CPU (через соотв.регистры) или посредством DMA. Но как это всё программируется в вашем МК - это в мануале должно быть.

 

PS: В IAR-е есть хорошие примеры USB-стеков для некоторых семейств NXP (точно есть для LPC17xx). Насчёт вашего - не знаю. Но я эти примеры и на другие платформы переносил - портировал на XMC4xxx например.

И USB-хост - он будет многократно сложнее чем USB-device. Будьте готовы.

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


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

Ну если закладываться, что к хосту будет подключен только один (!) USB-device, то реализация самодельного хоста не должна быть сложной, ИМХО.

Кстати. А так ли необходимо тащить все эти USB-хосты и девайсы (с классами и т.д.), когда можно попробовать поднять raw-взаимодействие через EP?

Быстро и без плясок с бубном вокруг хоста (например, когда он обслуживает еще какие-то девайсы на шине и делит общую скорость).

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


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

Спасибо большое, jcxz и Arlleex за советы!!!

 

Да, у меня только один процессор на другой соединяются. Я бы по SPI данные перетаскивал (DMA на SPI у меня получается и очень даже шустро), но свободного SPI нет да и скорость 50МБит/с совсем для SPI на пределе, у меня по DMA по SPI только 40МБит/с получалась. А эти коннекторы у этих борд стоят свободные, вот и хотелось их задействовать.

 

Скажите, пожалуйста, а USB RAW HID - это то, или надо голый USB RAW искать? (Простите, пожалуйста, за ламерские вопросы, я до этого с USB ни разу не работал).

 

Спасибо!

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


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

9 минут назад, iiv сказал:

Скажите, пожалуйста, а USB RAW HID - это то, или надо голый USB RAW искать? (Простите, пожалуйста, за ламерские вопросы, я до этого с USB ни разу не работал).

Лучше голые эндпоинты конечно. Зачем эти надстройки? Лишние тормоза только.

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


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

6 minutes ago, jcxz said:

Лучше голые эндпоинты конечно.

Спасибо, jcxz! Понял, пошел в этом направлении копать.

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


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

Как правильно заметил Arlleex, так как у вас - проприетарное решение и только между 2-я девайсами, то можно вообще выкинуть всю кухню стандартного USB-стека (энумерации, назначение адреса и т.п.). Сразу назначить фиксированные адреса (или просто работать всегда через адрес 0), сконфигурить один-два эндпоинта и алга!

Так будет раз в 100 проще, чем полноценный USB-хост поднимать.

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


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

Спасибо большое, jcxz , за важную информацию! Пошел разбираться как это сделать!

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


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

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

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

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

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

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

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

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

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

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