Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Mass storage на LPC214x
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Nixon
Привязал пример mass storage от кейла к SD-карте. Работает, но поскольку для обмена данными используется только один endpoint, то скорость чтения/записи очень низка.

Может кто-то уже сталкивался с проблемой ускорения? Разбираться, как все ускорить самому нет времени.
galjoen
Цитата(Nixon @ Feb 9 2008, 15:00) *
Привязал пример mass storage от кейла к SD-карте. Работает, но поскольку для обмена данными используется только один endpoint, то скорость чтения/записи очень низка.

Может кто-то уже сталкивался с проблемой ускорения? Разбираться, как все ускорить самому нет времени.

1. У Mass Storage минимум 2 EP д.б. (не считая 0-й). Одна Bulk In другая Bulk Out.
2. От кол-ва EP скорость обмена не зависит. Если успевать данные в Bulk In писать (или из Bulk Out читать), так чтобы NAK-ов не было - full speed Mass Storage мегабайт в секунду качает. Для full speed это максимум - 16 пакетов по 64 байта в каждом кадре=1 мСек.

Я реально такой скорости добился. Правда не для ARM. Но для ARM даже проще. Т.к. у него есть EP с двумя буферами. Один буфер по USB передаётся(принимается), а другой в это время заполняется(читается). Для Mass Storage такая задача легко решается. Т.к. данных размером меньше кластера (мин 512 байт) вообще не бывает. А обычно по 64 кБайта и больше шлётся.
demiurge
Друзья! Обращаюсь с помощью ко всем, кто на "ты" с LPC2148. Объясняю ситуацию. Нужно создать USB усторойство, которое бы в режиме Bulk в самом простом варианте (хотя бы через прерывания) позволяло бы передавать данные в обоих направлениях (In/Out). Проанализировал заготовки от Keil (HID, MassStorage,…). Но эти классы, на мой диллетанский взгляд, не подходят. Я подправил программу для MassStorage:1) выбросил всё, что касалось прежнего класса и SCASI интерфейса;2) в дескрипторах всё указал для абстрактного класса (0xFF);3) подправил функцию ввода/вывода через вторую логическую точку (Bulk).
После этого с помощью WinDriver создал драйвер и добился передачи (OUT) – в память LPC2148 все пишется корректно. Но IN трансфер не работает. Выяснил, что на IN прерывания нет (функция конечной точки IN не вызывается). Из описания на чип вычитал, что можно включить прерывание на NAK для IN точки с помощью команды Set Mode (0xF3). Но где её прописать и как проконтролировать Set Mode Register не знаю.
Буду рад любой подсказке.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.