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

 
 
 
Reply to this topicStart new topic
> Как корректно завершить работу с USB флешкой?, что нужно сделатьперед выдергиванием?
zuy
сообщение Jul 7 2009, 06:28
Сообщение #1


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



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

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

Вопрос возник в связи с тем, что собственный девайс на LPC2388 работает с флешкой только на чтение. Иногда вазникают проблемы, что на флешках сваливается файловая система.
Может перед извлечением нужно каккие-либо команды послать, хотя ни в стандартных запросах USB, ни в наборе команд для работы с MSD ничего подобного не нашел.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Jul 7 2009, 07:12
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(zuy @ Jul 7 2009, 09:28) *
Перед выдергиванием USB флешки, нужно ли посылатькакие-либокоманды в нее,чтобы она подготовилась к извлечению?

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

Смотря от версии Windows. В 2000 сбрасывает содержимое кэша на флеш. В XP не делает ничего, потому что по умолчанию кэширование сменных дисков отключено.
Go to the top of the page
 
+Quote Post
zuy
сообщение Jul 7 2009, 08:10
Сообщение #3


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(HARMHARM @ Jul 7 2009, 10:12) *
Смотря от версии Windows. В 2000 сбрасывает содержимое кэша на флеш. В XP не делает ничего, потому что по умолчанию кэширование сменных дисков отключено.


Я тоже был в этом уверен, плюс посмотрел через USBTrace там тоже ничего.
Но есть флешки с индикаторами работы, некоторые из них после безопастного извлечения гаснут, будто отключено питание в порту.
Кроме того есть часть USB HDD которые после безопастного извлечения паркуют головки и останавливают вращение HDD, а некоторые этого не делают.
Как можно это обьяснить?
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Jul 7 2009, 13:03
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(zuy @ Jul 7 2009, 10:28) *
собственный девайс на LPC2388 работает с флешкой


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

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

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


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 7 2009, 13:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(esaulenka @ Jul 7 2009, 17:03) *
Собственно, у меня задача попроще. Мне надо просто собрать USB-дескрипторы с внешних устройств, никакой поддержки mass storage и прочих HID'ов не требуется.

Возьмите mass-storage пример от NXP. Запуск на любой платформе с OHCI до состояния чтения дескрипторов занимает минут 15-20.
Go to the top of the page
 
+Quote Post
zuy
сообщение Jul 7 2009, 13:48
Сообщение #6


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(esaulenka @ Jul 7 2009, 16:03) *
О! Скажите, а стек вы готовый использовали?

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

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


За основу брал стек от NXP. заработало практически сразу.
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Jul 8 2009, 09:29
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(zuy @ Jul 7 2009, 10:28) *
Вопрос возник в связи с тем, что собственный девайс на LPC2388 работает с флешкой только на чтение. Иногда вазникают проблемы, что на флешках сваливается файловая система.


Обычно во всех реализациях FAT, даже только при чтении/открытии/закрытии файла происходит запись на флеш - обновляется время последнего к нему обращения, оно хранится в каталоге. Это может стать потенциальным источником проблем.
Но если флешка физически не убилась - FAT востанавливается любым доктором.
Go to the top of the page
 
+Quote Post
zuy
сообщение Jul 9 2009, 12:27
Сообщение #8


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(_4afc_ @ Jul 8 2009, 12:29) *
Обычно во всех реализациях FAT, даже только при чтении/открытии/закрытии файла происходит запись на флеш - обновляется время последнего к нему обращения, оно хранится в каталоге. Это может стать потенциальным источником проблем.
Но если флешка физически не убилась - FAT востанавливается любым доктором.


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

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

Может есть спецы по драйверам линукса, можно ли там глянуть что делается при размонтировании и как получается описанный выше эффект?
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jul 17 2009, 08:56
Сообщение #9


Знающий
****

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



Цитата(zuy @ Jul 9 2009, 16:27) *
Да и вообще уже есть академический интерес, что делает Windows когда я делаю безопастное извлечение?
Почему после этого некоторые флешки гасят свои индикаторы, а USB HDD останавливают диски, будто снимается питание с порта, а некоторые этого не делают?

Флешек, которые гасят индикаторы не встречал, но могу предположить 2 варианта:
1. Даже если нет никакого обращения к диску, Win постоянно ведёт обмен с MassStorage. Читает какие-то сектора (кэширует?) опрашивает готовность (Test Unit Ready) и вроде что-то ещё. Это всё отлично снуппером видно. Возможно, если никакого обмена нет, то флешка (некоторые) гасит свой индикатор...
2. Возможно Win переводит USB порт в состояние Suspend. Это можно посмотреть осциллографом - пропадает SOF (и вообще тишина). Тогда по спецификации устройство, питающееся от этого порта, через 3 милисекунды должно снизить своё потребление до 500 микроампер. Но далеко не все так делают. Например, оптическая мышка продолжает светить (хоть и менее ярко) - неужели она при этом потребляет менее 0.5 ма? Некоторые флешки в своём дескрипторе даже нагло пишут, что являются устройствами с внешним питанием! Так вот. М.б. флешки, гасящие индикаторы, корректно поддерживают режим Suspend? Проведите эксперимент. Попробуйте в диспетчере устройств отключить соотв-й порт - он переведётся в Suspend. Погаснут ли индикаторы?
Go to the top of the page
 
+Quote Post

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

 


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


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