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

 
 
> Протокол Bulk-Only для Mass Storage, Только один бульк
AlexBoss
сообщение Jun 30 2006, 13:35
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 30-06-06
Из: Донецк
Пользователь №: 18 488



Строю Embedded Host на базе Cypress SL811HS для доступа к USB Flash-кам на Full Speed.
Аппаратура в порядке. Все SetUp транзакции (те, что адресованы к 0-му EndPoin) завершаются успешно.
А вот с транспортным протоколом (это который "Bulk-Only") - какие-то непонятки.
Выполняется любая, есс-но из числа поддерживаемых классом, SCSI команда. Выполняестя
корректно и полностью - с корректным CSW. И после этого любая попытка обращения к BulkOut
EndPoint приводит к Time-Out!
Например, читаем сектор:
- посылаю в BulkOutEP CBW (31 байт с кодом операции 28h) - получаю ACK;
- посылаю 8 запросов чтения по 64 байта из BulkInEP - получаю NAK,NAK....ACK и
512 байт Boot сектора флэшки;
- посылаю запрос чтения 13-ти байт из BulkInEP - получаю ACK и коррктный CSW с
"Command Passed".
Все! Любые попытки повторить это, или послать любую другую SCSI команду в Bulk-Only
упаковке приводит к Time-Out в статусе пакета. Пробовал 5 разнотипных флэшек - результат
идентичный.
Может кто наступал на подобные грабли? java script:emoticon(':help:', 'smid_14')
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexBoss
сообщение Jul 20 2006, 12:40
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 30-06-06
Из: Донецк
Пользователь №: 18 488



Q1. Уточните пожалуйста каким образом вы "посылаете" команду на чтение блока?
Поскольку я Строю Embedded Host , см. первый пост, то не "посылаете", а именно ПОСЫЛАЮ, т.к. кто же еще пошлет если не HOST? Если Вас действительно интересует последовательность байт, которые я выдаю в OutEP и принимаю в ответ из InEP, то могу расписать, хотя они строго соответствуют спецификации "Universal Serial Bus Mass Storage Class Bulk-Only Transport" Revision 1.0.
Q2. Каким образом вы определили что все выполняемые вами команды корректны?
Команды выполняю не я, а обычная USB флэшка, которой я их посылаю. А корректность подтверждается тем, что, например, на команду чтения 0-го блока я получаю 512 байт BOOT-сектора флэшки, а затем корректный CSW с bCSWStatus = 0 (Command Passed).
Q3. Какую программу используете для этого?
У меня железка на базе промышленной IBM-совместимой материнки формата PC-104 + SL811HS в качестве HOSTa на той самой PC-104-й шине. BIOS - мой, операционная среда - моя, поэтому и все программы тоже мои (что хочу, то и ворочу).

Поэтому похоже Ваша тема "TMS + flash = Mass Storage" не совсем аналогична моей, скорее даже диаметрально противоположна, т.к. Вы строите Device, а я Host для доступа к Вашему (или другим аналогичным) Mass Storage Device.

Что же касается бяки, описанной в моем первом посте, то ее удалось таки победить. Меня сбило с понталыку заявление "... перед началом передачи массива триггер синхронизации данных должен быть сброшен в 0: при выполнении первой транзакции блок данных имеет идентификатор DATA0,...", см. стр.701, Владимир Кулаков, Программирование на аппаратном уровне, Специальный справочник.

Не верьте люди!!!

Как только я убрал принудительное обнуление Toggle битов для OutEP и InEP перед началом команды, все заработало как часики. Вывод: триггеры синхронизации данных для Bulk EndPoint-ов есть вещи глобальные (не зависящие от начала Bulk-Only команды). И обнулять их должно только после Reset и Clear_Feature STALL соответствующей EP.
Однако это не относится к триггеру канала управления (EndPoint0) - там свои законы!
Go to the top of the page
 
+Quote Post
kernel32ddl
сообщение Jul 20 2006, 12:52
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 44
Регистрация: 20-02-06
Из: Penza
Пользователь №: 14 526



Ясно, тема хостов действительно для меня диаметрально противоположна...
Но тем не менее поздравляю вас с успехом smile.gif !
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:48
Рейтинг@Mail.ru


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