iiv 17 12 января, 2022 Опубликовано 12 января, 2022 · Жалоба Добрый день, имею две 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 , но там как-то почему-то мой вопрос пока еще проигнорировали. Спасибо! ИИВ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 января, 2022 Опубликовано 13 января, 2022 · Жалоба 15 часов назад, iiv сказал: но совершенно не понимаю как сделать это через какой-то быстрый интерфейс. Идеально я хотел бы посылать с одной борды на другую пакеты по 16-64К данных и очень хотелось бы, чтобы это шло через DMA не затрагивая основной процессор. Видимо это можно сделать посредством bulk-передач. Что это такое - см.описание USB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 13 января, 2022 Опубликовано 13 января, 2022 · Жалоба 4 hours ago, jcxz said: Видимо это можно сделать посредством bulk-передач. Что это такое - см.описание USB. Спасибо большое, за ключевое слово. Почитал доку на процессор, в ней это слово много раз встречается, но так быстро и ничего не понял, то есть понятно, что bulk надо делать, но хочется с DMA, и как-то в доке я не смог быстро об этом найти, да и разбросано оно все по 3000 страницам доки как-то очень непредсказуемо. Скажите, пожалуйста, а примерчика подходящего под рукой уВас не найдется, чтобы было с чего начинать, а то я эти процессоры только несколько недель назад начал пользовать, и, пока играюсь только в teensy оболочке и до этого с семейством NXP не сталкивался. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 января, 2022 Опубликовано 13 января, 2022 · Жалоба 52 минуты назад, iiv сказал: Скажите, пожалуйста, а примерчика подходящего под рукой уВас не найдется, чтобы было с чего начинать, а то я эти процессоры только несколько недель назад начал пользовать, Так я с этими МК вообще не работал, а периферия во всех разная. Обычно в USB-периферии имеется некоторый объём памяти (FIFO). Когда хотите произвести транзакцию через какую-то EP (endpoint): заполняете FIFO-память, принадлежащую этой EP и потом запускаете транзакцию (например bulk-передачу). Вот заполнение FIFO-памяти данными передаваемого пакета можно делать или силами CPU (через соотв.регистры) или посредством DMA. Но как это всё программируется в вашем МК - это в мануале должно быть. PS: В IAR-е есть хорошие примеры USB-стеков для некоторых семейств NXP (точно есть для LPC17xx). Насчёт вашего - не знаю. Но я эти примеры и на другие платформы переносил - портировал на XMC4xxx например. И USB-хост - он будет многократно сложнее чем USB-device. Будьте готовы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 13 января, 2022 Опубликовано 13 января, 2022 · Жалоба Ну если закладываться, что к хосту будет подключен только один (!) USB-device, то реализация самодельного хоста не должна быть сложной, ИМХО. Кстати. А так ли необходимо тащить все эти USB-хосты и девайсы (с классами и т.д.), когда можно попробовать поднять raw-взаимодействие через EP? Быстро и без плясок с бубном вокруг хоста (например, когда он обслуживает еще какие-то девайсы на шине и делит общую скорость). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 14 января, 2022 Опубликовано 14 января, 2022 · Жалоба Спасибо большое, jcxz и Arlleex за советы!!! Да, у меня только один процессор на другой соединяются. Я бы по SPI данные перетаскивал (DMA на SPI у меня получается и очень даже шустро), но свободного SPI нет да и скорость 50МБит/с совсем для SPI на пределе, у меня по DMA по SPI только 40МБит/с получалась. А эти коннекторы у этих борд стоят свободные, вот и хотелось их задействовать. Скажите, пожалуйста, а USB RAW HID - это то, или надо голый USB RAW искать? (Простите, пожалуйста, за ламерские вопросы, я до этого с USB ни разу не работал). Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 14 января, 2022 Опубликовано 14 января, 2022 · Жалоба 9 минут назад, iiv сказал: Скажите, пожалуйста, а USB RAW HID - это то, или надо голый USB RAW искать? (Простите, пожалуйста, за ламерские вопросы, я до этого с USB ни разу не работал). Лучше голые эндпоинты конечно. Зачем эти надстройки? Лишние тормоза только. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 14 января, 2022 Опубликовано 14 января, 2022 · Жалоба 6 minutes ago, jcxz said: Лучше голые эндпоинты конечно. Спасибо, jcxz! Понял, пошел в этом направлении копать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 14 января, 2022 Опубликовано 14 января, 2022 · Жалоба Как правильно заметил Arlleex, так как у вас - проприетарное решение и только между 2-я девайсами, то можно вообще выкинуть всю кухню стандартного USB-стека (энумерации, назначение адреса и т.п.). Сразу назначить фиксированные адреса (или просто работать всегда через адрес 0), сконфигурить один-два эндпоинта и алга! Так будет раз в 100 проще, чем полноценный USB-хост поднимать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 17 14 января, 2022 Опубликовано 14 января, 2022 · Жалоба Спасибо большое, jcxz , за важную информацию! Пошел разбираться как это сделать! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться