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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как добиться скорости в 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
alexkok
сообщение Nov 11 2008, 17:45
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



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

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

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

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

Может кто знает как это делается? Буду очень благодарен за советы и ссылки?

Посмотрите здесь о скорости


--------------------
Go to the top of the page
 
+Quote Post
Vitaliy S.
сообщение Nov 12 2008, 08:49
Сообщение #3





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



Цитата(alexkok @ Nov 11 2008, 20:45) *
480Мб/сек

Это понятно, это макисмальная пропускная способность шины!, а я спрашивал про один ендпоинт!, у которого придел 4,5 Мб, как мне кажется из описания шины. На шине несколько ендпоинтов от разных устройств.


Посмотрите здесь о скорости



За ссылки спасибо, читаю. Правда там нет ни слова о том как это реализовать в других контроллерах а не Cypress, на да ладно всё равно почитаю.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Nov 12 2008, 16:14
Сообщение #4


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Наличие в контроллере USB 2.0 вовсе не означает, что там реализован режим high speed 480 Mbit/s (60 MB/s), как правило только full speed 12 Mbit/s (1.5 MB/s) и low speed 1.5 Mbit/s (187.5 kB/s).

Соответственно если надо заполучить васокую скорость надо выбирать контроллер, который поддерживает именно режим high speed.
Go to the top of the page
 
+Quote Post
Vitaliy S.
сообщение Nov 14 2008, 15:02
Сообщение #5





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



Цитата(sergeeff @ Nov 12 2008, 19:14) *
Наличие в контроллере USB 2.0 вовсе не означает, что там реализован режим high speed 480 Mbit/s (60 MB/s), как правило только full speed 12 Mbit/s (1.5 MB/s) и low speed 1.5 Mbit/s (187.5 kB/s).

Соответственно если надо заполучить васокую скорость надо выбирать контроллер, который поддерживает именно режим high speed.



Суть вопроса на FS HS, это и так понятно, вопрос в том что я читаю в спецификации что один ендпоинт может выдать на гора по шине лишь 4,6 Мб в секунду, а вся шина имеет пропускную способность 56 Мб и (480МБит), так вот чтобы заполнить в всю шину устройство должно параллельно фигачить минимум по 10 ендпоинтов, а в конфигурации всех флешек, кардридеров тольео один! HS ендпоинт, т.е они могут выдавать только 4,6 Мб, а они как-то выдают 20-30 Мб.

Вот в чём вопрос. Как они это делают имея один EP?
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 14 2008, 17:10
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Vitaliy S.Я уже запутался где у вас мегабит а где мегабайт. Вроде принято писать так МБ - мегабайт (большая буква Б), Мб а лучше Мбит (соответственно маленькая буква).
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 14 2008, 20:13
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Vitaliy S. @ Nov 14 2008, 18:02) *
Суть вопроса на FS HS, это и так понятно, вопрос в том что я читаю в спецификации что один ендпоинт может выдать на гора по шине лишь 4,6 Мб в секунду
Где Вы это прочитали? 07.gif
Приведите ссылку, плиз.

Цитата(Vitaliy S. @ Nov 14 2008, 18:02) *
...а вся шина имеет пропускную способность 56 Мб и (480МБит)...
Вообще-то, теоретически достижимая пропускная способность HS USB составляет не 56, а 49МБайт/с.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Alex11
сообщение Nov 14 2008, 21:07
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Что-то я не помню в спецификации, где прописано это ограничение. У меня живьем на филипсовском контроллере 20 МБ/сек на одном эндпойнте работает, причем скорость ограничена моими внешними цепями. Контроллер может больше.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Nov 17 2008, 09:00
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Alex11 @ Nov 15 2008, 00:07) *
Что-то я не помню в спецификации, где прописано это ограничение. У меня живьем на филипсовском контроллере 20 МБ/сек на одном эндпойнте работает, причем скорость ограничена моими внешними цепями. Контроллер может больше.

Я тоже про ограничение впервые слышу!
Одна EP может полностью заполнить весь канал. Зарезервируется только 10% пропускной способности на контрольный канал (передачи через EP 0).
Go to the top of the page
 
+Quote Post
Vitaliy S.
сообщение Nov 17 2008, 10:09
Сообщение #10





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



Цитата(galjoen @ Nov 17 2008, 12:00) *
Я тоже про ограничение впервые слышу!
Одна EP может полностью заполнить весь канал. Зарезервируется только 10% пропускной способности на контрольный канал (передачи через EP 0).


Не, ну если может то я только рад. smile.gif Я прочитал про это в книжке Шины PCI, USB, FirwWire от Михаила Гука. ....

Парни! Всё понял!

Выпускная способность ендпоинта зависит от размера буфера ендпоинта! И размера поля данных в кадре! Я тупо не дочитал.

При размере буфера ендпоинта в 3072 байта, ендпоинта может давать 24 Мегабайта в секунду.
При размере буфера ендпоинта в 2048 байт, ендпоинт может давать 16 Мегабайт.

56 не может давать один EP, максимум 24.

Всё, казус в моём сознании разрешился, всем спасибо! Просто в кардиридерах и прочих устройствах
мощная аппаратура с большими буферами, а в простых универсальных контроллерах типа LPC2888 EP имеют 512 байтовый буфер, посему они дают тока 3,5 Мб, что я и видел на своём макете.
Go to the top of the page
 
+Quote Post
-Al-
сообщение Nov 17 2008, 11:30
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894



Цитата(Vitaliy S. @ Nov 17 2008, 13:09) *
Не, ну если может то я только рад. smile.gif Я прочитал про это в книжке Шины PCI, USB, FirwWire от Михаила Гука. ....

Парни! Всё понял!

Выпускная способность ендпоинта зависит от размера буфера ендпоинта! И размера поля данных в кадре! Я тупо не дочитал.

При размере буфера ендпоинта в 3072 байта, ендпоинта может давать 24 Мегабайта в секунду.
При размере буфера ендпоинта в 2048 байт, ендпоинт может давать 16 Мегабайт.

56 не может давать один EP, максимум 24.

Всё, казус в моём сознании разрешился, всем спасибо! Просто в кардиридерах и прочих устройствах
мощная аппаратура с большими буферами, а в простых универсальных контроллерах типа LPC2888 EP имеют 512 байтовый буфер, посему они дают тока 3,5 Мб, что я и видел на своём макете.

Фигня какая-то... Cypress CY7C68013A дает до 40МБайт/сек на 1 Bulk Endpoint с 2мя буферами по 512байт и стандартным драйвером.
Go to the top of the page
 
+Quote Post
Vitaliy S.
сообщение Nov 17 2008, 11:34
Сообщение #12





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



Цитата(-Al- @ Nov 17 2008, 14:30) *
Фигня какая-то... Cypress CY7C68013A дает до 40МБайт/сек на 1 Bulk Endpoint с 2мя буферами по 512байт и стандартным драйвером.


Вероятно имеется ввиду поле данных, в передаваемом за раз блоке, как-то так. Возможно тут и не нужен
большой EP буфер контроллера. Просто чем больше буфер EP тем больше может само ядро контроллера отправить данных на шину, как я понимаю.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 20 2008, 11:37
Сообщение #13


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

Группа: Свой
Сообщений: 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
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 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
Сообщение #15


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

Группа: Свой
Сообщений: 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

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

 


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


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