|
|
 |
Ответов
|
Nov 20 2015, 12:26
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Поднял на собственном стеке HID с двумя INT точками. Сделал эхо. Все прекрасно работает. Производительность не измерял пока. Есть непонимание по одному вопросу: Есть регистры, задающие размерность FIFO для IN конечных точек. Это OTG_FS_DIEPTXF0 для контрольной точки и OTG_FS_DIEPTXFx для рабочих точек. С полем INEPTXFD все понятно. В мануале прямо про них написано: Цитата Bits 31:16INEPTXFD:IN endpoint TxFIFO depth This value is in terms of 32-bit words. Minimum value is 16 The power-on reset value of this register is specified as the largest IN endpoint FIFO number depth. С полем INEPTXSA, у меня, полного понимания нет. Описание в доке: Цитата INEPTXSA:IN endpoint FIFOx transmit RAM start address This field contains the memory start address for IN endpoint transmit FIFOx. The address must be aligned with a 32-bit memory location. Т.е. вроде как исчисление в этом поле в байтах, но число должно быть выровнено на 32 бита. Посмотрел примеры от ST. Там берется, к примеру, размер буфера в 32-бит словах (как и нужно), и это значение используется для вычисления адреса следующего буфера... Т.е. значение не делится на 4 для получения смещения в байтах... Посмотрел в отладчике состояние этих регистров по умолчанию после инициализации OTG - там, судя по дефолтным значениям полей, происходит то же самое. Правда, для последних регистров, в итоге, занчение адреса вылезает за пределы максимального размера памяти OTG... Хоть в байтах, хоть в 32-бит словах. Опять веселье (С)aaarrr Извините, может немного сумбурно объяснил вопрос.
--------------------
|
|
|
|
|
Nov 20 2015, 13:45
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(aaarrr @ Nov 20 2015, 19:09)  Нет, все в словах исчисляется. FIFO у них иной адресации и не имеет. Зачем тогда написано, что в поле адреса должно быть загружено значение, выровненное на 32 бита? Как можно не выровнять то, что уже выровнено? Цитата(Tarbal @ Nov 20 2015, 19:28)  Расскажите дилетанту для чего в USB нужен DMA пожалуйста. Ведь если посылать полные пакеты по 64 байта, то уже вроде как железо заполнит само буфер и вызовет одно прерывание на принятых 64 байта. Или речь идет о коротких пакетах? Вероятно я не вижу подводных камней. Ну хотя бы для того чтобы переслать данные из памяти USB в порт, минуя копирование данных в память. Вроде как в stm32 otg это можно сделать, хотя, я еще не пробовал. За выходные вечера хочу попробовать. Организация FIFO, на мой взгляд, позволяет это сделать. При запуске трансфера настроить точку и канал, и по прерываниям по приему стартовать канал DMA.
--------------------
|
|
|
|
|
Nov 21 2015, 04:41
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Вернусь к вопросу использования DMA. Цитата(aaarrr @ Nov 20 2015, 19:48)  64 байта пакета - это всего 16 слов, возможность выигрыша в такой конфигурации представляется сомнительной. Для OUT передач это, возможно, и верно, т.к. для BULK и INT трансферов 64 байта - это максимум. Я проверил на HID и на CDC с штатным Windows драйвером usbser.sys. Для IN передач все намного радужнее. У IN точек есть персональный хардварный буфер, который может быть по размеру намного больше чем размер точки. Т.е. к примеру, если точка имеет размер 64 байта, я свободного могу сделать буфер размером, к примеру, в 512 байт и загрузить его полностью используя DMA. В данном случае будет явный прирост производительности. Жаль, конечно, что для OUT точек сделали какой то кастрированный общий буфер...
--------------------
|
|
|
|
|
Mar 19 2017, 21:09
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Подниму темку в связи со схожим вопросом... Цитата(prottoss @ Dec 18 2015, 14:19)  Построил USB MSD устройство. Столкнулся с вот такой проблемой:
Если ставлю IN FIFO для EP1 =512 или более - передача в хост затыкается на команде SCSI Read10 чтения 0 сектора. Состояние регистров EP1 IN становится вот такое: В регистре DIEPCTL1 бит EPENA установлен, что говорит о том, что точка занята (в режиме передачи). В регистре DIEPSIZ1 поле PKTCNT равно количеству 64 бит пакетов, т.е. 512/64 = 8. Поле XFRSIZ = 0; В регистре DTXFSTS1 поле INEPTFSAV = 0 - Буфер полный.
Хост, при этом, передачу не видит. CDC устройство (свое), данные ходят через BULK EP1. Работает все, кроме передачи данных от девайса к хосту (при этом через EP0 ответы проходят нормально, код пересылки данных на 99% общий). После записи в TX FIFO EP1 остается в таком виде: DIEPCTL1 = 0x80498040, т.е. EPENA установлен DIEPSIZ1 = 0x80000, поле PKTCNT=1, поле XFRSIZ = 0 (изначально отправлялся 1 пакет размером 5 байт, соответственно было 0x80005) DTXFSTS1 = 14, исходный размер был 16 слов, записал 5байт (=2 слова), т.е. все логично. Если писать данные дальше, то буфер заполняется и все. Ситуация почти 1:1 с Вашей, интересно что это может быть, и чем все закончилось у Вас? P.S. Да, камень STM32F746
Сообщение отредактировал Шаманъ - Mar 19 2017, 21:11
|
|
|
|
Сообщений в этой теме
V_M_Luck STM32 USB FS OTG Jul 8 2011, 13:24 V_M_Luck Вновь поднимаю тему.
Пример-то заработал. Но тянут... Jul 13 2011, 15:51 Forger Цитата(V_M_Luck @ Jul 13 2011, 19:51) ...... Sep 9 2012, 15:07 SviMik Ровно та же проблема, как и в последнем сообщении.... Sep 9 2012, 11:41 SviMik В моём случае, дескриптор взят из заведомо рабочег... Sep 9 2012, 16:10 aaarrr CNAK в DOEPCTL0 после обработки setup установить н... Sep 9 2012, 19:54 SviMik Вот же однако... Заработало! Плюс вам в карму,... Sep 9 2012, 22:19 aaarrr Цитата(SviMik @ Sep 10 2012, 02:19) Интер... Sep 9 2012, 22:51 SviMik Пытаюсь реализовать CDC девайс. Что получилось:
1.... Sep 17 2012, 00:32 SviMik Вомзжно, я что-то не так понял с FIFO буфферами. Е... Sep 18 2012, 00:11 MBR Цитата(SviMik @ Sep 18 2012, 04:11) Это к... Sep 18 2012, 10:49 SviMik Хорошо. Тоесть моя конфигурация выше впринципе пра... Sep 18 2012, 13:48 MBR Цитата(SviMik @ Sep 18 2012, 17:48) При э... Sep 18 2012, 14:05 SviMik Всмысле флаг прерывания? Да, как и все остальные п... Sep 18 2012, 14:27 MBR А где запись данных после отправки очередного балк... Sep 18 2012, 15:03 SviMik Всмысле? Функция hwtx() выше, вызываю её вручную, ... Sep 18 2012, 15:11 SviMik Кажется, чего-то я в этой жизни не понимаю
Из дев... Sep 18 2012, 22:30 MBR Раз все остальное вроде верно, что там в hwtx? Sep 19 2012, 14:26 SviMik (Назначение hwtx - слать Hello World. Исключительн... Sep 19 2012, 15:01 MBR Собственно, я ошибок не вижу. Я делаю все примерно... Sep 20 2012, 12:15 SviMik Я сдаюсь
Можете выложить какой-нибудь минимальный... Sep 22 2012, 22:15 NaughtyFreak Подниму тему.
Подскажите плз, все глаза стёр уже г... Feb 19 2013, 08:11 Сергей Борщ Подниму древнюю тему.
STM32F107, родной стек из ... Mar 16 2015, 09:49 Сергей Борщ Цитата(Сергей Борщ @ Mar 16 2015, 11:49) ... Mar 17 2015, 23:10 esaulenka Ещё разик подниму тему.
На эти грабли: https://my... Apr 7 2015, 09:57 johnshadow Цитата(esaulenka @ Apr 7 2015, 12:57) Ещё... Apr 8 2015, 13:57 esaulenka Рекомендацию библиотеки ST спасибо. Знать, что оно... Apr 14 2015, 10:58 Golikov A. По спецификации USB 2.0 если мы говорим о SETUP то... Apr 14 2015, 11:09 esaulenka Подумал-подумал, и окончательно запутался.
Два bu... Apr 14 2015, 12:14 Golikov A. окончанием данных служит пакет длинной меньше макс... Apr 14 2015, 12:35 Immortal_Buka Может подскажет кто:
В соответствии с вот этой шту... Sep 22 2015, 12:52 prottoss Доброго времени суток.
Тоже решил освоить STM32 OT... Oct 25 2015, 12:30 aaarrr Цитата(prottoss @ Oct 25 2015, 15:30) Дан... Oct 25 2015, 13:07  prottoss Цитата(aaarrr @ Oct 25 2015, 19:07) Хост ... Oct 25 2015, 13:37   aaarrr Цитата(prottoss @ Oct 25 2015, 16:29) Хос... Oct 25 2015, 13:46    prottoss Цитата(aaarrr @ Oct 25 2015, 19:46) Как э... Oct 25 2015, 14:17     aaarrr Цитата(prottoss @ Oct 25 2015, 17:17) Не ... Oct 25 2015, 15:18      prottoss А OTG_FS_GINTSTS_RXFLVL, как я понял из даташита, ... Oct 25 2015, 15:30       aaarrr Цитата(prottoss @ Oct 25 2015, 18:30) А O... Oct 25 2015, 15:37        prottoss Цитата(aaarrr @ Oct 25 2015, 21:37) Нет, ... Oct 25 2015, 15:44         aaarrr Цитата(prottoss @ Oct 25 2015, 18:44) 1.Ч... Oct 25 2015, 16:11          prottoss Цитата(aaarrr @ Oct 25 2015, 22:11) 1. Чт... Oct 25 2015, 16:19           aaarrr Цитата(prottoss @ Oct 25 2015, 19:19) Зач... Oct 25 2015, 16:26            prottoss Цитата(aaarrr @ Oct 25 2015, 22:26) Не зн... Oct 25 2015, 16:50             aaarrr Цитата(prottoss @ Oct 25 2015, 19:50) А ч... Oct 25 2015, 17:25 prottoss Продолжаю неспеша тупить с STM32. С Setup пакетами... Nov 7 2015, 18:41 aaarrr Цитата(prottoss @ Nov 7 2015, 21:41) В че... Nov 7 2015, 18:48  prottoss Цитата(aaarrr @ Nov 8 2015, 00:48) OTG_FS... Nov 7 2015, 18:54   aaarrr Цитата(prottoss @ Nov 7 2015, 21:54) Т.е.... Nov 7 2015, 19:02    prottoss Цитата(aaarrr @ Nov 8 2015, 01:02) Так вы... Nov 7 2015, 19:08     aaarrr Цитата(prottoss @ Nov 7 2015, 22:08) Так ... Nov 7 2015, 19:29      prottoss Цитата(aaarrr @ Nov 8 2015, 01:29) EPENA ... Nov 7 2015, 19:44       aaarrr Цитата(prottoss @ Nov 7 2015, 22:44) Не п... Nov 7 2015, 19:47        prottoss Цитата(aaarrr @ Nov 8 2015, 01:47) Получи... Nov 7 2015, 19:51         aaarrr Цитата(prottoss @ Nov 7 2015, 22:51) Но я... Nov 7 2015, 19:55          prottoss Цитата(aaarrr @ Nov 8 2015, 01:55) Перене... Nov 7 2015, 20:16           aaarrr Цитата(prottoss @ Nov 7 2015, 23:16) Спас... Nov 7 2015, 20:28           prottoss Цитата(prottoss @ Nov 8 2015, 02:16) Прав... Nov 7 2015, 20:37            aaarrr Цитата(prottoss @ Nov 7 2015, 23:37) Мне ... Nov 7 2015, 20:59             prottoss Цитата(aaarrr @ Nov 8 2015, 02:59) Уровен... Nov 7 2015, 21:06            aaarrr Цитата(prottoss @ Nov 7 2015, 23:37) ...е... Nov 7 2015, 21:15             Tarbal Цитата(aaarrr @ Nov 8 2015, 01:15) Вот не... Nov 20 2015, 15:45            Tarbal Цитата(prottoss @ Nov 8 2015, 00:37) Мне ... Nov 20 2015, 13:28   prottoss Ну и по передаче так же.
Цитата(aaarrr @ Nov... Nov 20 2015, 13:47    aaarrr Цитата(prottoss @ Nov 20 2015, 16:47) Что... Nov 20 2015, 13:50     aaarrr Цитата(aaarrr @ Nov 20 2015, 16:50) Честн... Nov 20 2015, 13:55    prottoss Цитата(aaarrr @ Nov 20 2015, 19:48) 64 ба... Nov 20 2015, 13:55     prottoss Размер трансфера данных задается все таки в байтах... Nov 20 2015, 13:57   Tarbal Цитата(prottoss @ Nov 20 2015, 17:45) Ну ... Nov 20 2015, 13:51 aaarrr Цитата(Tarbal @ Nov 20 2015, 16:28) Ведь ... Nov 20 2015, 13:46 prottoss Цитата(aaarrr @ Nov 20 2015, 19:46) Выраз... Nov 20 2015, 13:48 Genadi Zawidowski Я эту ситуацию ловил как результат порчи FIFO из-з... Mar 20 2017, 00:43 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 03... Mar 20 2017, 06:05 Genadi Zawidowski Рабочие в проекте. Проблемы если по формуле (там г... Mar 20 2017, 08:42 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 11... Mar 20 2017, 10:03 Genadi Zawidowski 1) эти неиспользуемые ендпоинты инициализируются о... Mar 20 2017, 12:56 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 15... Mar 20 2017, 15:03 controller_m30 У меня был похожий случай недавно (на USB CDC), чт... Mar 20 2017, 14:01 Genadi Zawidowski Добавлю - особенно хорошо проявляются такие забыты... Mar 20 2017, 14:09 Genadi Zawidowski Дополнил инициализацию отладочной печатью:
Кодv1=0... Mar 20 2017, 17:38 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 20... Mar 20 2017, 19:05 Genadi Zawidowski Цитатано в заголовочном файле была ошибка
В студию... Mar 20 2017, 19:06 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 22... Mar 20 2017, 19:52 Genadi Zawidowski Вот версия с внутренним генератором, теоретически ... Mar 20 2017, 20:01 Шаманъ Народ, я тут всех поставил на уши, а потом подключ... Mar 20 2017, 20:38 Alechek Цитата(Шаманъ @ Mar 21 2017, 01:38) Народ... Mar 21 2017, 03:52 Genadi Zawidowski Попробуй мой тест на XP - у меня работало (термина... Mar 20 2017, 20:40 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 23... Mar 20 2017, 21:04 Genadi Zawidowski На одном из двуз компортов - Kenwood CAT. На объем... Mar 20 2017, 21:16 Шаманъ Цитата(Genadi Zawidowski @ Mar 21 2017, 00... Mar 21 2017, 14:32 Шаманъ Цитата(Genadi Zawidowski @ Mar 21 2017, 00... Mar 21 2017, 04:20 Шаманъ XP таки была "новая" в смысле XP SP3 Mar 21 2017, 05:28 Genadi Zawidowski Спасибо. На какой операционной системе проверялось... Mar 21 2017, 14:45
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|