Mass storage device что это за программа и нужна ли она

Режим накопителя (Mass storage mode) – это настройка, позволяющая легко интегрировать настольный или портативный компьютер с мобильным устройством. Когда включен режим накопителя, мобильное устройство обрабатывается как съёмный диск, который позволяет компьютеру напрямую общаться с устройством. Пока мобильное устройство переходит в этот режим, компьютер фактически получает доступ к карте памяти устройства и его содержимому.
Основное преимущество этого режима заключается в том, что файлы можно быстро перемещать и добавлять без промежуточного программного обеспечения. Некоторые мобильные устройства заставляют пользователей вручную включать этот режим, в то время как другие автоматически активируют его.

Без режима накопителя мобильное устройство может быть подключено к компьютеру, и пользователь может перемещать и добавлять файлы. Разница заключалась в том, что мобильному устройству приходилось использовать промежуточный драйвер для связи с компьютером. Этот промежуточный драйвер замедлял процесс и требовал некоторого пространства на жестком диске компьютера. В режиме накопителя мобильное устройство обрабатывается как съёмный диск, когда он подключен к порту универсальной последовательной шины (USB) компьютера.

How To Fix A USB Mass Storage Device Problem [Tutorial]

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

Основным преимуществом использования режима накопителя является то, что для перемещения и взаимодействия с файлами на мобильном устройстве требуется гораздо меньше времени. Используя метод драйвера, компьютер должен пройти через драйвер и инициировать команду для перемещения или добавления файла, и драйвер должен передать эту команду на мобильное устройство. С режимом Mass storage mode компьютер непосредственно сообщает мобильному устройству, что он хочет переместить или добавить файл. Это также означает, что компьютер должен использовать меньше памяти для работы с мобильным устройством, что приводит к более быстрой передаче.

Мобильные устройства могут потребовать от пользователя вручную включить режим накопителя. Некоторые устройства могут автоматически инициировать этот режим всякий раз, когда производится соединение через USB. Уровни производительности примерно одинаковы, когда компьютер взаимодействует с устройством, независимо от того, инициируется ли это вручную или автоматически.

Источник: mega-obzor.ru

Не определяется внешний жесткий диск. Инициализация диска.

Монтирование внутренней памяти Android как Mass Storage и восстановление данных

Восстановление данных, удаленных фото и видео, документов и других элементов из внутренней памяти современных Android телефонов и планшетов стало сложной задачей, поскольку внутреннее хранилище подключается по протоколу MTP, а не Mass Storage (как флешка) и привычные программы для восстановления данных не могут найти и восстановить файлы в этом режиме.

Существующие популярные программы для восстановления данных на Android (см. Восстановление данных на Android) пробуют обойти это: в автоматическом режиме получить root-доступ (либо предоставляя сделать это пользователю), а затем — прямой доступ к хранилищу устройства, но это работает не для всех устройств.

Однако, существует способ вручную смонтировать (подключить) внутреннее хранилище Android как флешку (Mass Storage Device) с помощью команд ADB, а затем использовать любую программу восстановления данных, работающую с файловой системой ext4, использующуюся на этом хранилище, например, PhotoRec или R-Studio. О подключении внутреннего хранилища в режиме Mass Storage и последующем восстановлении данных из внутренней памяти Android, в том числе после сброса на заводские настройки (хард ресета) и пойдет речь в данной инструкции.

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

Читайте также:
Валет что за программа

Подготовка к подключению внутреннего хранилища

Все действия, описанные ниже можно выполнить в Windows, Mac OS и Linux. В моем случае использовалась Windows 10 с установленной в ней подсистемой Windows для Linux и Ubuntu Shell из магазина приложений. Установка компонентов Linux не обязательна, все действия можно провести и в командной строке (и отличаться они не будут), но я предпочел этот вариант, так как при использовании ADB Shell в командной строке возникли проблемы с отображением спецсимволов, не влияющие на работу способа, но представляющие неудобства.

Прежде чем начать подключение внутренней памяти Android как флешки в Windows выполните следующие шаги:

Монтирование внутренней памяти Android как Mass Storage и восстановление данных

  1. Скачайте и распакуйте Android SDK Platform Tools в папку на вашем компьютере. Загрузка доступна на официальном сайте https://developer.android.com/studio/releases/platform-tools.html
  2. Откройте параметры системных переменных среды (например, начав в поиске Windows вводить «переменных», а затем в открывшемся окне свойств системы нажав «Переменные среды». Второй способ: открыть Панель управления — Система — Дополнительные параметры системы — «Переменные среды» на вкладке «Дополнительно»).

Монтирование внутренней памяти Android как Mass Storage и восстановление данных

  • Выберите переменную PATH (не важно, системную или пользовательскую) и нажмите «Изменить».
  • В следующем окне нажмите «Создать» и укажите путь к папке с Platform Tools из 1-го шага и примените сделанные изменения.
  • Если вы проделываете указанные действия в Linux или MacOS, то поищите в Интернете, как в этих ОС добавить папку с Android Platform Tools в PATH.

    Подключение внутренней памяти Android как Mass Storage Device

    Теперь приступаем к основной части этого руководства — непосредственно подключение внутренней памяти Android как флешки к компьютеру.

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    1. Перезагрузите ваш телефон или планшет в режиме Recovery. Обычно для этого нужно выключить телефон, затем зажать и удерживать кнопку питания и «громкость вниз» в течение некоторого времени (5-6) секунд, а после появления экрана fastboot выбрать Recovery Mode с помощью кнопок громкости и загрузиться в него, подтвердив выбор коротким нажатием кнопки питания. Для некоторых устройств способ может отличаться, но легко находится в Интернете по запросу: «модель_устройства recovery mode»
    2. Подключите устройство к компьютеру по USB и подождите некоторое время, пока оно не будет настроено. Если по окончании настройки в диспетчере устройств Windows устройство будет отображаться с ошибкой, найдите и установите ADB Driver именно для вашей модели устройства.

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    Запустите Ubuntu Shell (в моем примере используется именно оболочка Ubuntu под Windows 10), командную строку или терминал Mac и введите adb.exe devices (Примечание: из-под Ubuntu в Windows 10 я использую adb для Windows. Можно было бы установить adb для Linux, но тогда бы он не «видел» подключенных устройств — ограничение функций подсистемы Windows для Linux).

    В ADB Shell по порядку выполняем следующие команды.

    mount | grep /data

    В результате получаем имя устройства block, которое будет использовать далее (не теряем его из виду, запоминаем).

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    Следующей командной размонтируем раздел data на телефоне, чтобы иметь возможность подключить его как Mass Storage.

    Далее находит индекс LUN нужного раздела, соответствующего Mass Storage Device

    find /sys -name lun*

    Будет отображено несколько строк, нас интересуют те, которые имеют в пути f_mass_storage, но пока мы не знаем, какая именно (обычно, заканчивающиеся на просто lun или lun0)

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    В следующей команде используем имя устройства из первого шага и один из путей с f_mass_storage (один из них соответствует внутренней памяти). Если будет введен неверный, вы получите сообщение об ошибке, тогда пробуем следующий.

    echo /dev/block/mmcblk0p42 > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    Следующий шаг — создаем скрипт, подключающий внутреннее хранилище к основной системе (всё, что ниже — одна длинная строка).

    echo «echo 0 > /sys/devices/virtual/android_usb/android0/enable echo «mass_storage,adb» > /sys/devices/virtual/android_usb/android0/functions echo 1 > /sys/devices/virtual/android_usb/android0/enable» > enable_mass_storage_android.sh

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    В этот момент сессия ADB Shell будет закрыта, а к системе будет подключен новый диск («флешка»), представляющий собой внутреннюю память Android.

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    При этом, в случае Windows вас могут попросить отформатировать накопитель — не делайте этого (просто Windows не умеет работать с файловой системой ext3/4, но многие программы для восстановления данных умеют).

    Восстановление данных из подключенного внутреннего хранилища Android

    Теперь, когда внутренняя память подключена как обычный накопитель, мы можем использовать любую программу для восстановления данных, которая умеет работать с разделами Linux, например, бесплатную PhotoRec (доступную для всех распространенных ОС) или платную R-Studio.

    Читайте также:
    Программа тсд что это

    Я пробую выполнить действия с PhotoRec:

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    1. Скачиваем и распаковываем PhotoRec с официального сайта https://www.cgsecurity.org/wiki/TestDisk_Download
    2. Запускаем программу, для Windows и запуска программы в графическом режиме запустите файл qphotorec_win.exe (подробнее: восстановление данных в PhotoRec).
    3. В главном окне программы вверху выбираем устройство Linux (тот новый диск, который мы подключили). Ниже указываем папку для восстановления данных, а также выбираем тип файловой системы ext2/ext3/ext Если вам требуются файлы лишь определенного типа, рекомендую указать их вручную (кнопка «Форматы файлов»), так процесс пойдет быстрее.

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

  • Еще раз убедитесь, что выбрана нужная файловая система (иногда переключается «сама»).
  • Запустите поиск файлов (находиться они начнут на втором проходе, первый — поиск заголовков файлов). При нахождении, они автоматически будут восстановлены в указанную вами папку.
  • В моем эксперименте из 30 удаленных из внутренней памяти фотографий в идеальном состоянии было восстановлено 10 (лучше, чем ничего), для остальных — только миниатюры, также были найдены скриншоты png, сделанные ещё до хард-ресета. R-Studio показала примерно тот же результат.

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

    Но, так или иначе, это не проблема способа, который работает, а проблема эффективности восстановления данных как таковой в некоторых сценариях. Так же отмечу, что DiskDigger Photo Recovery (в режиме глубокого сканирования с root) и Wondershare Dr. Fone for Android показали сильно худший результат на том же устройстве. Конечно, вы можете попробовать и любые другие средства, позволяющие восстанавливать файлы с разделов с файловой системой Linux.

    По окончании процесса восстановления, извлеките подключенное USB устройство (используя соответствующие способы вашей операционной системы).

    Монтирование внутренней памяти Android как Mass Storage и восстановление данных

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

    Источник: spravkapc.ru

    STM32 Mass Storage Device. Использование FLASH-памяти.

    Уже не раз обсуждались на нашем сайте темы, касающиеся связи микроконтроллеров STM32 и ПК по интерфейсу USB, вот они:

    • Основы интерфейса USB.
    • STM32 и USB.
    • Передача данных по USB.

    Так вот, сегодня в очередной раз вернемся к этой теме, и задачей сегодняшней статьи станет реализовать Mass Storage Device (MSD) на микроконтроллере STM32. В этой статье я буду использовать STM32F10x и среду разработки Keil, но как и всегда с STM32 (ну или почти всегда) особых проблем с портированием на микроконтроллеры других семейств возникнуть не должно.

    При работе с USB за базу возьмем готовые библиотеки от ST. Вообще у них на официальном сайте есть куча готовых проектов под разные отладочные платы с реализацией разных режимов работы USB (и MSD в том числе). Там, в частности, есть примеры Mass Storage Device для следующих случаев:

    • в качестве внешней памяти используется SD-карта
    • в качестве внешней памяти используется микросхема NAND-памяти

    Предлагаю добавить в нашу задачу немного оригинальности ) Поэтому давайте для хранения информации задействуем внутреннюю память микроконтроллера. То есть часть flash-памяти будет определяться как внешний накопитель. Это конечно не очень практично, все-таки объем памяти микроконтроллера измеряется сотнями килобайт, поэтому использовать контроллер для хранения каких-нибудь данных не получится. С другой стороны, решение этой задачи будет полезно для понимания основных принципов, которых нужно придерживаться при реализации драйвера Mass Storage Device на STM32. Кроме того, можно использовать этот пример как базу при написании USB-bootloader’а для перепрограммирования готовых устройств.

    В общем, давайте переходить к практической части!

    Время традиционной вставки: поскольку компания STMicroelectronics прекратила поддержку библиотеки SPL, которая использовалась в этом курсе, я создал новый, посвященный работе уже с новыми инструментами, так что буду рад видеть вас там — STM32CubeMx. Кроме того, вот глобальная рубрика по STM32, а также несколько статей на смежную тему из нового курса:

    • STM32 и USB. Реализация USB Virtual COM Port.
    • STM32 и USB. Реализация USB Mass Storage Device.

    В первую очередь, в библиотеках для работы с MSD нужно настроить USB Disconnect Pin, а точнее, задать тот порт ввода-вывода и тот номер пина, ко торый задействован на используемой плате для программного отключения/подключения USB. На моей плате для этого используется вывод микроконтроллера PA10, поэтому в файле platform_config.h я определил:

    Читайте также:
    Разработка программы и личного плана самовоспитания что это

    #define USB_DISCONNECT GPIOA #define USB_DISCONNECT_PIN GPIO_Pin_10 #define RCC_APB2Periph_GPIO_DISCONNECT RCC_APB2Periph_GPIOA

    Непосредственная настройка этого вывода производится в функции USB_Disconnect_Config():

    void USB_Disconnect_Config(void) < GPIO_InitTypeDef GPIO_InitStructure; /* Enable USB_DISCONNECT GPIO clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_DISCONNECT, ENABLE); /* USB_DISCONNECT_PIN used as USB pull-up */ GPIO_InitStructure.GPIO_Pin = USB_DISCONNECT_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(USB_DISCONNECT, >

    Здесь нам ничего менять и настраивать дополнительно не требуется.

    Переходим к функциям USB. И тут нас интересует файл mass_mal.c. В этом файле нам нужно реализовать функции записи/чтения и инициализации, в соответствии с тем типом памяти, который мы будем использовать. То есть, если бы мы хотели использовать внешнюю карту памяти, то нам нужно было использовать функции записи/чтения для SD-карты. Поскольку мы будем работать с внутренней flash-памятью контроллера, то и использовать мы будем соответствующие функции.

    Как вы помните из статьи, посвященной работе с flash (ссылка), для того, чтобы начать работать с памятью ее нужно разблокировать. Поэтому функция MAL_Init() будет выглядеть так:

    uint16_t MAL_Init(uint8_t lun) < switch (lun) < case 0: FLASH_Unlock(); break; case 1: return MAL_FAIL; default: return MAL_FAIL; >return MAL_OK; >

    При инициализации мы разблокируем память и после этого можем вызывать функции чтения/записи из SPL. Но для начала нам нужно определить сектора, которые будут использоваться в качестве внешнего накопителя (всю flash-память мы использовать не можем, поскольку часть памяти будет занята нашей программой). Итак, в файле mass_mal.h задаем:

    #define FLASH_DISK_START_ADDRESS 0x0800A000 /* Flash start address */ #define FLASH_DISK_SIZE 221184 #define FLASH_PAGE_SIZE 2048 /* 2K per page */

    Flash-память у нас начинается с адреса 0x08000000. Для основной прошивки мы выделили 40 кБ (адреса с 0x08000000 — по 0x0800A000). Общий объем памяти моего контроллера — 256 кБ. Тогда объем внешнего диска получаем равным 221184 байт (256 кБ — 40 кБ).

    А размер страницы памяти для данного контроллера составляет 2кБ или 2048 байт. Все эти данные мы и задали в файле mass_mal.h.

    В общем то, теперь нам осталось только написать функции чтения и записи — MAL_Write() и MAL_Read(). Тут нам надо учесть несколько факторов:

    • перед началом записи страницы, в которые будет произведена запись, необходимо предварительно очистить
    • запись и чтение производятся целыми секторами
    • перед вызовом функций работы с flash-памятью необходимо убедиться, что предыдущая операция завершена (тут нам нужна функция FLASH_WaitForLastOperation() ).

    Учтем все вышеперечисленное и в итоге получаем следующую реализацию функций:

    /**************************************************************************************** * Function Name : MAL_Write * Description : Write sectors * Input : None * Output : None * Return : None ****************************************************************************************/ uint16_t MAL_Write(uint8_t lun, uint32_t Memory_Offset, uint32_t *Writebuff, uint16_t Transfer_Length) < uint16_t i; switch (lun) < case 0: for(i = 0; i < Transfer_Length; i += FLASH_PAGE_SIZE) < if (FLASH_WaitForLastOperation(WAIT_TIMEOUT) != FLASH_TIMEOUT) < FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); >FLASH_ErasePage(FLASH_DISK_START_ADDRESS + Memory_Offset + i); > for(i = 0; i < Transfer_Length; i += 4) < if(FLASH_WaitForLastOperation(WAIT_TIMEOUT) != FLASH_TIMEOUT) < FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); >FLASH_ProgramWord(FLASH_DISK_START_ADDRESS + Memory_Offset + i , Writebuff[i >> 2]); > break; case 1: break; default: return MAL_FAIL; > return MAL_OK; > /**************************************************************************************** * Function Name : MAL_Read * Description : Read sectors * Input : None * Output : None * Return : Buffer pointer ****************************************************************************************/ uint16_t MAL_Read(uint8_t lun, uint32_t Memory_Offset, uint32_t *Readbuff, uint16_t Transfer_Length) < uint16_t i; switch (lun) < case 0: for(i = 0; i < Transfer_Length; i += 4) < Readbuff[i >> 2] = ((vu32*)(FLASH_DISK_START_ADDRESS + Memory_Offset))[i >> 2]; > break; case 1: break; default: return MAL_FAIL; > return MAL_OK; >

    У нас осталась еще одна важная функция, необходимая для работы с MSD, а именно функция MAL_GetStatus(). В этой функции мы должны передать в специальные переменные значения, соответствующие размеру памяти, размеру страницы, а также количеству блоков:

    uint16_t MAL_GetStatus (uint8_t lun) < if (lun == 0) < Mass_Block_Count[0] = FLASH_DISK_SIZE / FLASH_PAGE_SIZE; Mass_Block_Size[0] = FLASH_PAGE_SIZE; Mass_Memory_Size[0] = FLASH_DISK_SIZE; return MAL_OK; >return MAL_FAIL; >

    Собираем проект, прошиваем микроконтроллер и видим, что в диспетчере устройств у нас появилось новое запоминающее устройство. А кроме того, система обнаружила внешний накопитель, объем которого соответствует тому значению, которое мы определили в нашей программе. Таким образом, цель сегодняшней статьи можно считать достигнутой!

    Как и всегда, прилагаю готовый проект для среды разработки Keil: USB_MassStorage_Project.

    Источник: microtechnics.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru