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

 
 
 
Reply to this topicStart new topic
> MSD - все запросы дублированные?, странный трафик толко под вендой?
AlexRayne
сообщение Mar 9 2017, 19:57
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 282
Регистрация: 27-09-07
Пользователь №: 30 877



Поднимаю MSD на stm32f4.
1) Хостом используется Win XP / 8 машины. при отладке наблюдаю изумительные дела - множественные запросы чтения одних и техже секторов, READ_CAPACITY, READ_FORMAT_CAPACITIES, MODE_SELECT_6 - есть в этом какойто великий смысл?

2) помимо постоянного чтения ранее читаных секторов, почти все запросы SUB идут дублированно с одним и тем же тегом, а может и более 2х раз повторяться - тоесть так тупо и читает READ10 lba0 - два раза подряд. и запись так же - идут две команды записи в один сектор! как с этим правильно обходиться?

3) команда PREVENT_ALLOW_MEDIUM_REMOVAL - выполняется странно - идет пара команд друг за другом, одна запрещает, за ней сразу снятие запрета. Вот это о чем? и как правильно должно быть?

Это же самое поведение наблюдаю с нормальной флешкой под вынь8. 8/

Сообщение отредактировал AlexRayne - Mar 9 2017, 19:57
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Mar 10 2017, 15:20
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 24-02-09
Пользователь №: 45 309



А где наблюдаете дублированные команды: в программе анализатора USB на компьютере (типа BusHound, и т.п.), или на стороне отладочной платы?

Если в компьютере, то программа анализатора может просто показывать запросы на разных уровнях: на уровне SCSI-запросов операционки, и на уровне запросов USB-драйвера. Поэтому и CBW-тэг один и тот-же в дублях, хотя он выбирается случайно для каждой команды.
В BusHound точно есть такой эффект, если в настройках выставить слишком много галочек.

Если смОтрите на стороне отладочной платы, то там дубли приходят тоже, но другие. Не такие где один и тот-же CBW-тэг два раза (с этим всё в порядке - повторных тэгов нет), а просто в некоторых случаях многократные чтения сектора (обычно это сектор 0), и команды: SCSI_MODE_SENSE_6, Request Sense, SCSI_TEST_UNIT_READY, Read Format Capacity и т.п служебные.
Записей каждого сектора по два раза, одними и теми же данными (до последнего байта) не встречал.
Go to the top of the page
 
+Quote Post
AlexRayne
сообщение Mar 13 2017, 11:12
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 282
Регистрация: 27-09-07
Пользователь №: 30 877



Цитата(controller_m30 @ Mar 10 2017, 18:20) *
А где наблюдаете дублированные команды: в программе анализатора USB на компьютере (типа BusHound, и т.п.), или на стороне отладочной платы?

Если в компьютере, то программа анализатора может просто показывать запросы на разных уровнях: на уровне SCSI-запросов операционки, и на уровне запросов USB-драйвера. Поэтому и CBW-тэг один и тот-же в дублях, хотя он выбирается случайно для каждой команды.
В BusHound точно есть такой эффект, если в настройках выставить слишком много галочек.

Если смОтрите на стороне отладочной платы, то там дубли приходят тоже, но другие. Не такие где один и тот-же CBW-тэг два раза (с этим всё в порядке - повторных тэгов нет), а просто в некоторых случаях многократные чтения сектора (обычно это сектор 0), и команды: SCSI_MODE_SENSE_6, Request Sense, SCSI_TEST_UNIT_READY, Read Format Capacity и т.п служебные.
Записей каждого сектора по два раза, одними и теми же данными (до последнего байта) не встречал.

С записью сектора разобрался - это галюн моей либы не умеющей корректно работать с ZLP.
но вот дубли других команд - обычное дело. Я пользуюсь ваершарком - у него сыпется портянка обмена УСБ драйвера, и невидно где к какому уровню запрос он видит.
на стороне платы обнаружил особенность венды - интенсивное использование ZLP, сбивающее с толку. Может ли быть отсутствие ZLP в ответах хосту причиной дублирования команд?
постоянное перечитывание сектора 0, boot сектора, корня - вот это и смущает, ощущение что кеш файловой системы не действует на флешках?

по пункту 3 есть у Вас какието замечания? понятно что это можно проигнорить, о сама особеность намекает на галюны какието

Сообщение отредактировал AlexRayne - Mar 13 2017, 11:13
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Mar 13 2017, 14:28
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 24-02-09
Пользователь №: 45 309



Про возможность работы без ZLP не знаю. Я когда-то писал "движок" MSD для контроллера, и по началу ZLP не довёл до ума - так устройство не проходило до конца инициализацию. Операционка видела флешку, но читать-писать её отказывалась.

По пункту 3. Точно не помню что делает эта команда (занимался MSD лет 5 назад laughing.gif ). Кажется она выдаётся "по делу" только перед безопасным извлечением флешки из разъёма USB. А в начале работы с флешкой - как бы для инициализации устройства: по запрету завершили все операции с носителем, а по разрешению приготовились к выполнению новых команд.
Сейчас бегло посмотрел текст своего "движка", и там против команды (1E) PREVENT_ALLOW_MEDIUM_REMOVAL - стоит программная "заглушка", которая рапортует об успешном выполнении, но ничего более не делает.
В моём устройстве батарейное питание, внезапного отключения от USB оно не боится, и потому эта команда игнорируется. А вообще её можно принять к сведению, чтоб устройство знало о готовящемся отключении от компа.

Но вы проверьте наверняка, что эта команда именно так работает.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th November 2017 - 17:22
Рейтинг@Mail.ru


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