Перейти к содержанию
    

притормозить USB MS

Приветствую! Есть некое устройство, в котором имеется типо флешка на 100кб. Все определяется, работает и т.п. Теперь вопрос:

а как корректно замедлить работу такого накопителя?

Сама флешка размещается в ОЗУ, это имитация в виде USB MS.

Изменено пользователем mnovikov2000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока за USB таймаут не вылетели, можно просто медленнее отвечать на запросы. Или Вам надо на часы замедлить? Или надо, чтобы обращения к устройству были реже? В последнем варианте будет сложно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорее до минут. Не отвечать пробовал, все плохо и по-разному. Тут скорее что-то вроде сигнала ожидания при чтении-записи напрашивается, но в командах scsi не нашел такого, там из всего несколько. Чтение-запись медленная, и пока начитает-напишет 512 байт времени много уходит, до минут.

Изменено пользователем mnovikov2000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда возникают такие странные желания, то чаще всего это говорит о выборе неверного пути решения какой-то задачи. имхо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 19.10.2023 в 12:37, mnovikov2000 сказал:

Скорее до минут. Не отвечать пробовал, все плохо и по-разному. Тут скорее что-то вроде сигнала ожидания при чтении-записи напрашивается, но в командах scsi не нашел такого, там из всего несколько. Чтение-запись медленная, и пока начитает-напишет 512 байт времени много уходит, до минут.

 

Есть не отвечать совсем, а есть отвечать "NAK" для конечной точки. Вы как делали?

Какой у вас размер для BULK-IN конечной точки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно до 8 байт уменьшить. И перед передачей порции данных передавать NAK-ов на несколько миллисекунд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 минут назад, adnega сказал:

Можно до 8 байт уменьшить. И перед передачей порции данных передавать NAK-ов на несколько миллисекунд.

См. выше - ему нужно до нескольких минут растянуть. А значит миллисекунды не спасут. Придётся как минимум минуту NAK-и гнать. Сомневаюсь, что такое понравится USB-хосту(-ам). Или пользователю сего девайса вряд-ли понравится зависание при обращении к диску на неск. минут.  :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

100 кБ - это 12800 пакетов по 8 байт. Если "начить" по 5 мс для каждого пакета, то это превратится в 64 секунды. Думаю, до 50 мс можно безопасно выдавать NAKи, а это порядка 10 минут для 100 кБ. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

39 минут назад, adnega сказал:

100 кБ - это 12800 пакетов по 8 байт. Если "начить" по 5 мс для каждого пакета, то это превратится в 64 секунды. Думаю, до 50 мс можно безопасно выдавать NAKи, а это порядка 10 минут для 100 кБ. 

Какие 100КБ?? Автор же пишет:

3 часа назад, mnovikov2000 сказал:

Чтение-запись медленная, и пока начитает-напишет 512 байт времени много уходит, до минут.

Ему нужно чтение 512 байт растянуть до нескольких минут. А общий объём флешки тут не при чём. Видимо эти 512 байт идут с какого-то медленного источника, а автор хочет представить этот источник в виде диска для хоста.

 

PS: Тут идеологию менять нужно. Имхо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 minutes ago, jcxz said:

См. выше - ему нужно до нескольких минут растянуть. А значит миллисекунды не спасут. Придётся как минимум минуту NAK-и гнать. Сомневаюсь, что такое понравится USB-хосту(-ам). Или пользователю сего девайса вряд-ли понравится зависание при обращении к диску на неск. минут.  :wink:

Пользователи будут прыгать от восторга и даже дадут немножко грошей. А так да. До минут. NAK вроде штатно до бесконечности может быть, девайс данные неподтверждает и просит повторно послать. Продолжаю изучение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще как вариант выдать STALL. Затем хост запросит REQUEST SENSE (03h), на который можно в ответе в поле Sense Key вернуть код 2h = Not Ready.

Хотя, нужно быть аккуратным т.к. "Operator intervention may be required to correct this condition".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем  NAK работает. В проводнике копирование и 30 сек и 1 мин проходит, файл открывается, если подать постоянно NAK посередине, то в проводнике висит "осталось 5 сек" например, после отпускания продолжается. На этом пока остановлюсь, всем спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...