Jump to content

    
_pv

USB mass storage, хочется странного

Recommended Posts

Мы долго боролись с подобным сценарием, победить удалось только отключением диска. Без этого  все идет из кэша, сбросить его не удалось. А чем Вам сериальник не угодил?

Share this post


Link to post
Share on other sites
7 hours ago, Alex11 said:

Мы долго боролись с подобным сценарием, победить удалось только отключением диска. Без этого  все идет из кэша, сбросить его не удалось. А чем Вам сериальник не угодил?

да всем угодил, работает, драйверов не просит, но просто с файлом работать немного проще чем с последовательным портом, особенно из всяких mathematica, mathlab,... 

32 minutes ago, Immortal_Buka said:

эмулировать не флэшку, а кардридер, или сд-ром?

Или как в CMSIS-DAP сделать.

они не кэшируются?

а что именно в cmsis-dap сделано?

Share this post


Link to post
Share on other sites
7 часов назад, _pv сказал:

они не кэшируются?

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

Share this post


Link to post
Share on other sites
2 hours ago, mantech said:

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

безопасное извлечение это про кэш на запись, а мне мешает чтение.

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

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

Share this post


Link to post
Share on other sites

Недавно практически такую-же тему создавал.

В результате пришел к тому, что написал обертку вокруг кейловских MDK USB и MDK FS.

Работает так: если нужен доступ к флешке, которая в данный момент используется как USB MSC - то ждем 5 сек с последнего обращения по MSC (на самом деле винда сбрасывает флаг "смонтировано" через полторы секунды после последней записи, т.ч. 5 - для пущей надежности), ставим MSC в паузу (переключаем владельца на FS), читаем/пишем на флешку. После этого если только читали - переключаем владельца назад на MSC. Если писали - делаем USB Disconnect/Connect.

 

 

Share this post


Link to post
Share on other sites
7 minutes ago, Immortal_Buka said:

SCSI_START_STOP_UNIT            0x1B

SCSI_MEDIA_REMOVAL              0x1E

Так это же команды хоста? А если винда не хочент осовободить флешку а надо писать? Тут скорее статус из sbc_sense_key    надо крутить, чтобы в ответ на IO команду уговорить винду подождать а потом перечитать кеши. Для TUR надо чтобы винда освободила флешку хотя бы на секунду, чтобы флешка симитировала что она заснула и ее надо будить.

Share this post


Link to post
Share on other sites
13 minutes ago, khach said:

А если винда не хочент осовободить флешку а надо писать? Тут скорее статус из sbc_sense_key    надо крутить, чтобы в ответ на IO команду уговорить винду подождать а потом перечитать кеши. Для TUR надо чтобы винда освободила флешку хотя бы на секунду, чтобы флешка симитировала что она заснула и ее надо будить.

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

пожалуй ещё может помочь FILE_FLAG_NO_BUFFERING для CreateFile, но вот остальные программы файл открывать копировать будут сами без этого флага.

может ещё есть какие-нибудь рабочие костыли вроде [генератор бредовых идей=on] с расшариванием диска по сети обратным подключением этой же флэшки \\\\localhost\\F$, обратно уже как сетевого диска, при этом вдруг кэширование там где-нибудь по пути отвалится.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.