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

Как корректно завершить работу с USB флешкой?

Вот возник вопрос.

 

Перед выдергиванием USB флешки, нужно ли посылатькакие-либокоманды в нее,чтобы она подготовилась к извлечению?

Например, что делает PC, когда пользователь нажимает "безопастное извлечение"?

убирается ли питание с порта?

 

Вопрос возник в связи с тем, что собственный девайс на LPC2388 работает с флешкой только на чтение. Иногда вазникают проблемы, что на флешках сваливается файловая система.

Может перед извлечением нужно каккие-либо команды послать, хотя ни в стандартных запросах USB, ни в наборе команд для работы с MSD ничего подобного не нашел.

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


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

Перед выдергиванием USB флешки, нужно ли посылатькакие-либокоманды в нее,чтобы она подготовилась к извлечению?

Никаких.

Например, что делает PC, когда пользователь нажимает "безопастное извлечение"?

убирается ли питание с порта?

Смотря от версии Windows. В 2000 сбрасывает содержимое кэша на флеш. В XP не делает ничего, потому что по умолчанию кэширование сменных дисков отключено.

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


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

Смотря от версии Windows. В 2000 сбрасывает содержимое кэша на флеш. В XP не делает ничего, потому что по умолчанию кэширование сменных дисков отключено.

 

Я тоже был в этом уверен, плюс посмотрел через USBTrace там тоже ничего.

Но есть флешки с индикаторами работы, некоторые из них после безопастного извлечения гаснут, будто отключено питание в порту.

Кроме того есть часть USB HDD которые после безопастного извлечения паркуют головки и останавливают вращение HDD, а некоторые этого не делают.

Как можно это обьяснить?

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


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

собственный девайс на LPC2388 работает с флешкой

 

О! Скажите, а стек вы готовый использовали?

 

Посмотрел, что есть готового... Грустно как-то - какой-то маловразумительный код, практически без комментариев...

 

Собственно, у меня задача попроще. Мне надо просто собрать USB-дескрипторы с внешних устройств, никакой поддержки mass storage и прочих HID'ов не требуется.

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


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

Собственно, у меня задача попроще. Мне надо просто собрать USB-дескрипторы с внешних устройств, никакой поддержки mass storage и прочих HID'ов не требуется.

Возьмите mass-storage пример от NXP. Запуск на любой платформе с OHCI до состояния чтения дескрипторов занимает минут 15-20.

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


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

О! Скажите, а стек вы готовый использовали?

 

Посмотрел, что есть готового... Грустно как-то - какой-то маловразумительный код, практически без комментариев...

 

Собственно, у меня задача попроще. Мне надо просто собрать USB-дескрипторы с внешних устройств, никакой поддержки mass storage и прочих HID'ов не требуется.

 

За основу брал стек от NXP. заработало практически сразу.

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


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

Вопрос возник в связи с тем, что собственный девайс на LPC2388 работает с флешкой только на чтение. Иногда вазникают проблемы, что на флешках сваливается файловая система.

 

Обычно во всех реализациях FAT, даже только при чтении/открытии/закрытии файла происходит запись на флеш - обновляется время последнего к нему обращения, оно хранится в каталоге. Это может стать потенциальным источником проблем.

Но если флешка физически не убилась - FAT востанавливается любым доктором.

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


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

Обычно во всех реализациях FAT, даже только при чтении/открытии/закрытии файла происходит запись на флеш - обновляется время последнего к нему обращения, оно хранится в каталоге. Это может стать потенциальным источником проблем.

Но если флешка физически не убилась - FAT востанавливается любым доктором.

 

Так как нам только чтение нужно, то руками из библиотеи ФАТ выкинули всю запись, а драйвер Mass Storage не имеет ни одной процедуры реализующии запись на флешку.

Доктором лечится, но клиентам это не нравится.

 

Да и вообще уже есть академический интерес, что делает Windows когда я делаю безопастное извлечение?

Почему после этого некоторые флешки гасят свои индикаторы, а USB HDD останавливают диски, будто снимается питание с порта, а некоторые этого не делают?

 

Может есть спецы по драйверам линукса, можно ли там глянуть что делается при размонтировании и как получается описанный выше эффект?

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


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

Да и вообще уже есть академический интерес, что делает Windows когда я делаю безопастное извлечение?

Почему после этого некоторые флешки гасят свои индикаторы, а USB HDD останавливают диски, будто снимается питание с порта, а некоторые этого не делают?

Флешек, которые гасят индикаторы не встречал, но могу предположить 2 варианта:

1. Даже если нет никакого обращения к диску, Win постоянно ведёт обмен с MassStorage. Читает какие-то сектора (кэширует?) опрашивает готовность (Test Unit Ready) и вроде что-то ещё. Это всё отлично снуппером видно. Возможно, если никакого обмена нет, то флешка (некоторые) гасит свой индикатор...

2. Возможно Win переводит USB порт в состояние Suspend. Это можно посмотреть осциллографом - пропадает SOF (и вообще тишина). Тогда по спецификации устройство, питающееся от этого порта, через 3 милисекунды должно снизить своё потребление до 500 микроампер. Но далеко не все так делают. Например, оптическая мышка продолжает светить (хоть и менее ярко) - неужели она при этом потребляет менее 0.5 ма? Некоторые флешки в своём дескрипторе даже нагло пишут, что являются устройствами с внешним питанием! Так вот. М.б. флешки, гасящие индикаторы, корректно поддерживают режим Suspend? Проведите эксперимент. Попробуйте в диспетчере устройств отключить соотв-й порт - он переведётся в Suspend. Погаснут ли индикаторы?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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