реклама на сайте
подробности

 
 
> Как добиться скорости в 20 Мб/с по HS USB
Vitaliy S.
сообщение Nov 11 2008, 13:39
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 11-11-08
Пользователь №: 41 539



Исследую вопрос mass storage, и не могу понять как card readerы и прочие читаки и USB диски получают скорость в 20-50 Мб/сек, при том что все устройства у них сконфигурированы в HS режиме с одним! ендпоинтом, который по спецификации USB 2.0 может давать не больше 4,5 Мб/с?

Была идея что читалки используют несколько ендпоинтов параллельно на вывод за счёт чего получается большая скорость, но как то везде в конфигурации устройств вижу лишь 1 EP на вывод.

Изучил несколько исходников firmware LPC2888, Cortex M3, Cypress . Везде BOT режим с двум енпоинтами!!

Вобщем для меня загадка как это работает больше 4 МБ!?

Может кто знает как это делается? Буду очень благодарен за советы и ссылки?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mempfis_
сообщение Nov 20 2008, 11:37
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Vitaliy S. @ Nov 11 2008, 17:39) *
Исследую вопрос mass storage, и не могу понять как card readerы и прочие читаки и USB диски получают скорость в 20-50 Мб/сек, при том что все устройства у них сконфигурированы в HS режиме с одним! ендпоинтом, который по спецификации USB 2.0 может давать не больше 4,5 Мб/с?


В таких устройствах используется bulk-передача - пока канал не занят (например контрольными передачами) устройство может посылать буффер bulk-EP один за одним. Для сравнения в interrupt-EP передача возможна только раз в период опроса (например 1мс в USB1.1 при максимальном размере EP в 64 байта и скорость передачи в таком случае ограничивается 64kB/S). В bulk-EP таких ограничений нет (да и буффер конечной точки побольше) вот и получается нормальная скорость smile.gif
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Dec 3 2008, 09:14
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Нигде почему-то не упомянуто о том что endpoit-ы могут иметь один или два буфера.
Если буфер один, то перерывы в передаче обеспечены.
Кроме того со стороны компьютера нужно запрашивать передачу не по 64 или 512 байт а бОльшими блоками.

Я исследовал возможности ОС для предачи данных для режима FS(на последней странице).
В зависимости от ОС размер запрошенного блока может быть от 4 до 64 килобайт.
http://njnmnp.narod.ru/note/USB_for_programmer.pdf
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 8 2008, 09:01
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата
Нигде почему-то не упомянуто о том что endpoit-ы могут иметь один или два буфера.
Если буфер один, то перерывы в передаче обеспечены.

В документации на микросхемы USB обычно указывается возможность буферизации конечной точки.
В isp1181a например двукратная буферизация. В HS-USB-микроконтроллерах Cypress четырёхкратная (может быть и более, без документации точно не скажу). Размер конечной точки для bulk-передачи ограничен стандартом USB2.0:
An endpoint for bulk transfers specifies the maximum data payload size that the endpoint can accept from or transmit to the bus. The USB defines the allowable maximum bulk data payload sizes to be only 8, 16, 32, or 64 bytes for full-speed endpoints and 512 bytes for high-speed endpoints.

Цитата
Кроме того со стороны компьютера нужно запрашивать передачу не по 64 или 512 байт а бОльшими блоками.

Имеется ввиду запрос к драйверу на получение блока данных от 4кБ.
Драйвер заполняет буффер получая от usb-функции (вашего устройства) пакеты по 8-512байт и после заполнения возвращает его.
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 8 2008, 09:37
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(mempfis_ @ Dec 8 2008, 12:01) *
Имеется ввиду запрос к драйверу на получение блока данных от 4кБ.
Драйвер заполняет буффер получая от usb-функции (вашего устройства) пакеты по 8-512байт и после заполнения возвращает его.


В последних WinMobile приходится читать блоками по 8кб, хотя раньше работало и на 4кб (FS, 1Мибит/сек).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vitaliy S.   Как добиться скорости в 20 Мб/с по HS USB   Nov 11 2008, 13:39
- - alexkok   Цитата(Vitaliy S. @ Nov 11 2008, 16:39) И...   Nov 11 2008, 17:45
|- - Vitaliy S.   Цитата(alexkok @ Nov 11 2008, 20:45) 480М...   Nov 12 2008, 08:49
- - sergeeff   Наличие в контроллере USB 2.0 вовсе не означает, ч...   Nov 12 2008, 16:14
|- - Vitaliy S.   Цитата(sergeeff @ Nov 12 2008, 19:14) Нал...   Nov 14 2008, 15:02
|- - Stanislav   Цитата(Vitaliy S. @ Nov 14 2008, 18:02) С...   Nov 14 2008, 20:13
- - uriy   Vitaliy S.Я уже запутался где у вас мегабит а где ...   Nov 14 2008, 17:10
- - Alex11   Что-то я не помню в спецификации, где прописано эт...   Nov 14 2008, 21:07
|- - galjoen   Цитата(Alex11 @ Nov 15 2008, 00:07) Что-т...   Nov 17 2008, 09:00
|- - Vitaliy S.   Цитата(galjoen @ Nov 17 2008, 12:00) Я то...   Nov 17 2008, 10:09
|- - -Al-   Цитата(Vitaliy S. @ Nov 17 2008, 13:09) Н...   Nov 17 2008, 11:30
|- - Vitaliy S.   Цитата(-Al- @ Nov 17 2008, 14:3...   Nov 17 2008, 11:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 07:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016