jcxz 231 5 апреля, 2023 Опубликовано 5 апреля, 2023 · Жалоба 23 минуты назад, xvr сказал: После окончания записи - безусловно, но он может это делать и в процессе записи. Имхо - запись обновляется после закрытия файла. Либо после принудительного сброса (flush). А самопроизвольно, для открытого на запись файла - нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 6 апреля, 2023 Опубликовано 6 апреля, 2023 · Жалоба Коллеги, благодарю за помощь! Пришёл к выводу, что после записи файла на диск пользователь должен будет отключить шланг USB от устройства. Это и будет ялвяться для загрузчика сигналом к проверке наличия файла, его целостности и т.д. и т.п. О том, чтобы кеши были сброшены на диск должна заботится ОС, либо, пользователь должен будет делать безопасное извлечение диска. Вроде это на старых ОС Windows точно требовалось. На новых версия, насколько мне известно, кэширование отключено по умолчанию, и флешку можно просто выдернуть из разъёма. Но в любом случае это уже не загрузчика забота. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба Добрый день, коллеги! Подниму тему. Начальство озадачило вопросом извлечения USB MSC. Другими словами можно ли как-то USB стеком в микроконтроллере задетектировать событие извлечения? Типа, чтобы не нужно было отключать кабель USB от хоста. Зачем это нужно, честно говоря не знаю. Но ответ хотят получить быстро. В иаровском стеке я поставил ради интереса две команды с точками останова. Сделал в Win извлечение диска. И ни на одной строке не произошло останова. При этом отладчик работал корректно. Я остановил его кнопкой "пауза" и программа прекратила выполнение. Т.е. глюков отладки не было. В Win10 при этом съёмный диск пропал. Я перечитал описание команд SCSI, и так и не понял, к какой команде можно "прикрутить" свой код, который должен выполниться однозначно в случае извлечения диска со стороны ОС? Прошу помощи более опытных коллег в данном вопросе. Т.к. я не могу изучить все ОС (веток того же линукса довольно много), да и физически проверить те же Win98 (мало ли), Win XP довольно сложно, вообще спрошу, как правильно сделать всё же так, чтобы загрузчик получил целый файл? Сейчас сделано так: при подключении устройства по USB, на ОС видент диск. На диск я копирую файл. После окончания копирования, отключаю кабель USB от компа. Программа на микроконтроллере видит пропадание напряжения +5 В на ножке VBUS, и далее начинает работать с массивом памяти как с диском через FatFS. Всё работает корректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба С оптимизацией для быстрого извлечения по-моему так сделать не получится, т.к. винда всегда после записи сбрасывает кеши и не вызывает остановку устройства в явном виде, поскольку это попросту не нужно (устройство и так всегда готово к извлечению). Можно попробовать ориентироваться на косвенные признаки: после "извлечения" должны перестать приходить запросы TEST_UNIT_READY, которые в обычном режиме должны приходить где-то раз в секунду или около того. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба @makc, вот и я о том же))) Но руководитель мой говорит, что в линукс происходит отмонтирование. Да я и сам об этом знаю. Может что-то по этому поводу сказать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба Сказать можно только одно: нет общего механизма и Linux != Windows. Ну это он, наверное, и так знает, но стоит напомнить. 😉 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 22 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба Интересно, а после безопасного извлечения диска из винды/линукса она случаем не переводит его в спящий режим некими командами? не очень шарю в этом вопросе, но проверить не долго - бряк на точку, где по стеку происходит вход в спячку просто знаю по внешним usb-ssd дискам, если его безопасно извлечь и не вынимать, то постепенно он перестает быть "тепленьким", даже если до этого о просто торчал в компе и никакой софт с ним не работал т.е. видать входит в "спячку" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 6 minutes ago, makc said: Сказать можно только одно: нет общего механизма и Linux != Windows. Ну это он, наверное, и так знает, но стоит напомнить. 😉 Простите, что Вы хотите этим сказать? Я немного плохо соображаю после нескольких часов чтения документации... Мой алгоритм: вытащили кабель из хоста, задетектировали пропадание напряжения +5 В, начали искать файл с помощью FatFS - рабочий? Или всё же нужно добавлять события в стек? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба Я хочу сказать, что обеспечение целостности данных на носителе (обеспечение реализации процедуры безопасного извлечения) лежит на приложении (операционной системе), поэтому каждый делает что хочет и нет общего механизма, закреплённого где-то в тексте стандарта. Поэтому потеря данных при некорректном извлечении - это проблема не железа (носителя), а пользователя и его ОС. 2 минуты назад, haker_fox сказал: Мой алгоритм: вытащили кабель из хоста, задетектировали пропадание напряжения +5 В, начали искать файл с помощью FatFS - рабочий? Или всё же нужно добавлять события в стек? Нет, нужно ориентироваться на состояние физического уровня USB (событие disconnect в контроллере). Устройство вполне может работать через USB и без этих +5В, если у него есть своё питание. Это вполне нормальная ситуация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 1 minute ago, makc said: Поэтому потеря данных при некорректном извлечении - это проблема не железа (носителя), а пользователя и его ОС. Понял, спасибо! 1 minute ago, makc said: Устройство вполне может работать через USB и без этих +5В В нашем случае VBUS всегда заведён на разъём, поэтому, как я понимаю, проблемы нет?!))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба Только что, haker_fox сказал: В нашем случае VBUS всегда заведён на разъём, поэтому, как я понимаю, проблемы нет?!))) Не понял, какой именно разъём вы имеете в виду, т.к. не представляю всю структуру вашей системы в комплексе. Но наверное вы правы и проблемы нет. 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 1 minute ago, makc said: Не понял, какой именно разъём вы имеете USB B, USB type C, micro/mini USB. Во всех случаях у нас на эти разъёмы подаётся +5 В от хоста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба Мне кажется, тут надо плясать от печки от компа. Натравить на USB Wireshark и смотреть лог работы устройства в момент извлечения в виндовсе и линухе без всяких точек останова в устройстве. Если в логе найдется что-то интересное - тогда уже пытаться поддерживать внутри устройства. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 214 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 1 минуту назад, Сергей Борщ сказал: Мне кажется, тут надо плясать от печки от компа. Натравить на USB Wireshark и смотреть лог работы устройства в момент извлечения в виндовсе и линухе без всяких точек останова в устройстве. Если в логе найдется что-то интересное - тогда уже пытаться поддерживать внутри устройства. Гарантий это не даёт, т.к. при других настройках ОС или при другом патче драйвера в ОС поведение может быть другим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 16 minutes ago, makc said: Гарантий это не даёт, т.к. при других настройках ОС или при другом патче драйвера в ОС поведение может быть другим. Возможно, что я чего-то не понимаю. Но руководитель настаивает на том, что событие извлечения нужно ловить, чтобы не потерять данные. Я уже не знаю, что говорить ему. Дал ссылку на форум. И всё равно... бесполезную работу я делать не хочу. Но и своих знаний в этой области почти ноль. А получить их за пару дней нереально. Вот что может произойти, если пользовать выбрал "извлечть", затем отключил кабель USB? Ну как там могут потеряться данные? Ума не приложу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться