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) - там свои законы!
|