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

 
 
> Задержки чтения в USB Mass Storage, Поясните или ткните носом в спецификацию
PriBoris
сообщение May 7 2008, 17:16
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352



Есть прибор с хитрой и неоднородной организацией памяти.
Компьютеру эта память представляется в виде отдельных файлов, которые надо с прибора считывать.
Если использовать READ_10, то из-за неизбежных задержек сектор (512байт) из памяти прибора может считываться до 0.3сек. Не могу понять ( найти в спецификациях ) что нужно делать по USB в течение этого времени. Если я в течение этого времени отзываюсь NAKами по OUT и по IN, то Windows переклинивает. Т.е. вылезает букет ошибок и как результат винда сбрасывает USB-функцию.
Что делать ? Поддерживается ли в MassStorage/SCSI какое-нибудь отложенное чтение ? Или как-то подругому можно решить проблему ?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
galjoen
сообщение May 7 2008, 18:20
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(PriBoris @ May 7 2008, 21:16) *
Если я в течение этого времени отзываюсь NAKами по OUT и по IN, то Windows переклинивает. Т.е. вылезает букет ошибок и как результат винда сбрасывает USB-функцию.

Вообще это странно. Вы уверены? Тут вроде только на IN NAKи приходится слать. А что такое винда запрашивает в том CBW, на который вы NAKи на OUT шлёте? Я давным-давно такое делал, поэтому не уверен, но у меня вроде 5 секунд NAKи на IN до ошибки слались.
Цитата(PriBoris @ May 7 2008, 21:16) *
Что делать ? Поддерживается ли в MassStorage/SCSI какое-нибудь отложенное чтение ? Или как-то подругому можно решить проблему ?
Заранее спасибо.

Можно винде слать CSW с ошибкой, а на следующий REQUEST SENSE послать, что ошибка CRC была "ID CRC ERROR" - SenseKey=3, ASC=0x10, ASCQ=0. В этом случае точно ДОЛГО тот-же READ(10) шлётся. В смысле с теми-же параметрами. Проверял. Из-за этого даже новую флешку, у которой CRC в 0м секторе не совпадает, отформатировать невозможно.
А м.б. логичнее что-то типа "LOGICAL DRIVE NOT READY - BECOMING READY" послать (SenseKey=2, ASC=4, ASCQ=1). Или ещё что-нибудь - попробуйте.

Встречный вопрос. А как вы с кэширование боретесь? Или вам только 1 раз прочитать нужно, а потом ничего не меняется? Или способ как винду заставить перечитать знаете? Тогда этим способом (борьбы с кэшированием) поделитесь пожалуйста.
Go to the top of the page
 
+Quote Post



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

 


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


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