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

Bulk-Only в MassStorage USB, 64b/1ms

Господа, прошу направить на путь истинный...

Возможно для кого-то эта тема уже избита, но все же... ткните носом в документацию, примеры, Ваш личный опыт...

 

Есть пример USB-MEM для LPC214x эмулирующий диск 16кБ в RAM, видоизменил SCSI для работы с реальной MMC/SD - все ок. Но за один фрейм передается 64 байта, что и следует ожидать. А это всего лишь 30кБ/сек, представляете сколько будет читаться MMC карточка объемом 512Мб.

 

Вопросы:

1. Как передавать несколько пакетов за один фрейм в BulkOnly режиме чтобы увеличить скорость хотя бы до 1Mb/сек?

2. Встречал ли кто в сети исходники для реализации Control/Bulk/Interrupt (кажется uC/MSD реализует CBI, но х.з. где он, на фтп нет, в будках нет)?

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


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

См. здесь http://electronix.ru/forum/index.php?showtopic=11785

Я тоже пробовал, пока шина свободна, скорость передачи в режиме BULK приближается к максимальной скорости USB шины. Для Interrupt и Isochron-го режимов макс. скорость равна размеру буфера конечной точки*1000 байт/сек.

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


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

См. здесь http://electronix.ru/forum/index.php?showtopic=11785

Я тоже пробовал, пока шина свободна, скорость передачи в режиме BULK приближается к максимальной скорости USB шины. Для Interrupt и Isochron-го режимов макс. скорость равна размеру буфера конечной точки*1000 байт/сек.

Спасибо за Ваш ответ, но чтение спецификации и использование осциллографа не удалось избежать :). Дело в том что скорость чтения данных 30кБ/сек (MMC->LPC2148->USB) вызвана чем то другим. Сейчас разбираюсь.

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


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

Keil обновил аппноту по массторадж. Утверждают, что поисправляли много багов. Может имеет смысл посмотреть? http://www.keil.com/download/docs/307.asp

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


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

Спасибо за Ваш ответ, но чтение спецификации и использование осциллографа не удалось избежать :). Дело в том что скорость чтения данных 30кБ/сек (MMC->LPC2148->USB) вызвана чем то другим. Сейчас разбираюсь.

Может быть дело в драйвере? Работаете под Windows?

Я для тестирования использовал LibUsb-Win32 очень удобно для проверки разных вариантов

я, правда для AT43USB355, использовал для проверки работы конечных точек разных типов,

определения скоростей и т.д.

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


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

...

Есть пример USB-MEM для LPC214x эмулирующий диск 16кБ в RAM, видоизменил SCSI для работы с реальной MMC/SD - все ок. Но за один фрейм передается 64 байта, что и следует ожидать. А это всего лишь 30кБ/сек, представляете сколько будет читаться MMC карточка объемом 512Мб.

...

 

Привет!

А не поделитесь ли исходником или ссылкой???

А то проблема та же PC+MCU+MMC! Только MCU от SiLabs и пока совсем не понимаю, как РС дожен с ним общаться!!!

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


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

См. здесь http://electronix.ru/forum/index.php?showtopic=11785

Я тоже пробовал, пока шина свободна, скорость передачи в режиме BULK приближается к максимальной скорости USB шины. Для Interrupt и Isochron-го режимов макс. скорость равна размеру буфера конечной точки*1000 байт/сек.

Если я не ошибаюсь, пакет от конечной точки в FullSpeed BULK режиме по определению не может быть больше 64 байт (в спецификации USB 2.0). Т.е согласно этой формулы физический предел для BULK в FullSpeed (12 Мбит/сек) режиме должен быть 64 кБ/Сек. На практике, за один фрейм может отсылаться множество пакетов.

Изменено пользователем KolyanV

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


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

Если я не ошибаюсь, пакет от конечной точки в FullSpeed BULK режиме по определению не может быть больше 64 байт (в спецификации USB 2.0). Т.е согласно этой формулы физический предел для BULK в FullSpeed (12 Мбит/сек) режиме должен быть 64 кБ/Сек. На практике, за один фрейм может отсылаться множество пакетов.

См. внимательнее, формула справедлива для "Для Interrupt и Isochron-го режимов макс. скорость равна размеру буфера конечной точки*1000 байт/сек", для BULK все зависит от наличия данных для передачи и свободности шины

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


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

Cм. внимательнее, формула справедлива для "Для Interrupt и Isochron-го режимов макс. скорость равна размеру буфера конечной точки*1000 байт/сек", для BULK все зависит от наличия данных для передачи и свободности шины

 

Все верно,

но как сделать чтобы LPC21xx формировал прерывание по приему пакета, а не по окончанию фрейма?

Из Кейловского примера получается так, что при передаче данных скажем из PC в EndPoint (сконфигурированного как Bulk-Only 64B) процессора, прерывание формируется с периодом 1 мс, хотя уверен что шина свободна на 90%.

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


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

Cм. внимательнее, формула справедлива для "Для Interrupt и Isochron-го режимов макс. скорость равна размеру буфера конечной точки*1000 байт/сек", для BULK все зависит от наличия данных для передачи и свободности шины

 

Все верно,

но как сделать чтобы LPC21xx формировал прерывание по приему пакета, а не по окончанию фрейма?

Из Кейловского примера получается так, что при передаче данных скажем из PC в EndPoint (сконфигурированного как Bulk-Only 64B) процессора, прерывание формируется с периодом 1 мс, хотя уверен что шина свободна на 90%.

Очень интересно...

Перенес код из Keil на GCC - заработало на нормальной скорости >250кБ/сек (и то ограничение связано со скоростью работы с MMC по SPI).

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


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

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

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

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

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

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

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

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

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

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