Основная файловая система флэш-памяти
devf-generic [-a] [-b приоритет] [-d метод_регистрации] [-E] [-e авто] [-f уровень_проверки] [-i индекс_массива[,индекс_раздела]] [-l] [-m перемонтирование [-p фоновый_процент[,сверхлимит]] [-R] [-r] [-sбазовый_адрес[,размер_окна[,смещение_массива[,размер_массива [,размер_блока[,ширина_шины[,коэф_чередования]]]]]]]] [-t потоки] [-u обновление] [-V] [-v] [-w размер_буфера]
- -a
- Не выполнять автоматическое монтирование разделов файловой системы, имеющихся на носителе. Если указаны обе опции -a и -R, опция -R драйвером игнорируется.
- -b приоритет
- Активация фонового восстановления с указанным значением приоритет. По умолчанию фоновое восстановление деактивировано.
- -d метод_регистрации
- Контролировать регистрацию данных, получаемых от флэш-драйвера. Допустимые значения аргумента метод_регистрации:
- -E
- Не переходить в режим сервиса. При обнаружении драйвером поврежденной файловой системы статус завершения будет на 1 больше номера раздела файловой системы.
- -e авто
- Только перечислить флэш-разделы вместо полного сканирования и выполнения утилиты mount. Флэш-драйвер выполняет автоматическое монтирование всех разделов с номером раздела меньше или равным значению аргумента авто.
Например, предположим, что имеется следующая структура флэш-памяти: -
/dev/fs0p0
– неформатированный раздел -
/dev/fs0p1
– форматированный раздел -
/dev/fs0p2
– форматированный раздел -
/dev/fs0p3
– форматированный раздел
При запуске драйвера с опцией -e 1 в каталоге /dev
создаются все неформатированные записи, но монтируется только /dev/fs0p1
(/dev/fs0p0
не отформатирован, поэтому его монтирование не выполняется независимо от значения опции -e).
- -f уровень_проверки
- Активировать проверку флэш-памяти.
-
0
– без проверки (по умолчанию) -
1
– проверка записи -
2
– проверка удаления -
3
– все
- -i индекс_массива[,индекс_раздела]
- Индексы начального сокета и первого раздела; 0 ≥ индекс ≥ 15. Значением по умолчанию является 0,0. Используется для присвоения нескольким драйверам уникальных идентификаторов. Опция -i является просто указанием для менеджера ресурсной базы данных. Выбранные индексы могут иметь большие значения.
- -l
- Вывести список всех доступных баз данных флэш-памяти и завершить работу.
- -m перемонтирование
- Перезаписать точки монтирования, присвоенные файловой системе, отформатированной с пустой точкой монтирования (т.е. flashctl -p /dev/fs0p0 -f -n ""). Аргумент перемонтирование может включать два спецификатора формата %X (аналогичных спецификаторам для printf()), которые заменяются индексом сокета и индексом раздела.
| Опция -m не используется для перезаписи точки монтирования, указанной посредством утилиты mkefs. |
- -p фоновый_процент[,сверхлимит]
- Установка процентного триггера фонового восстановления (устаревшее пространство поверх свободного пространства) и, дополнительно, лимита перекрываемого экстента перед восстановлением. Значение по умолчанию – 100,16.
- -R
- Монтировать все файловые системы с автоматическим монтированием в режиме "только чтение". Эта опция не влияет на монтирование неформатированных разделов. Она имеет значение только при запуске и инициализации. При всех последующих операциях монтирования (с использованием flashctl или mount) опция -R игнорируется. Если указана опция -a, опция -R драйвером игнорируется.
- -r
- Активировать устранение неисправностей для экстентов без поддержки 8-разрядных символов, зависших экстентов и при частичном восстановлении.
| Значение опции -r не указывается только в случае выполнения попытки устранения проблемы, связанной с повреждением флэш-устройства. |
Если не указана опция -r, то при сбое питания возможны следующие ситуации: - Возможна потеря пространства памяти. Если при отключении питания выполнялся процесс стирания данных, возможно появление зависших экстентов (т.е. с пометкой для удаления, но фактически не удаленных). При указании опции -vv драйвер выводит dangle для каждого обнаруженного зависшего экстента. Эти экстенты будут занимать пространство вплоть до удаления. Восстановить такие экстенты можно с помощью опции -r.
- Система может быть помечена атрибутом "только для чтения". Если драйвер обнаружил ошибку в структуре файловой системы, и опция -r не была указана, то раздел помечается атрибутом "только для чтения" в целях предотвращения дополнительных повреждений.
- В случае прерывания операции восстановления по причине сбоя питания резервные блоки могут оказаться непригодными для использования. В этом случае, если указана опция -vv, драйвер выводит на консоль partial. Раздел остается доступен для чтения и записи, но функции восстановления деактивируются. В случае продолжения операции перезаписи файлов система окажется заполненной устаревшими данными.
- -s базовый_адрес[,размер_окна[,смещение_массиваt[,размер_массива[,размер_блока[,ширина_шины[,коэф_чередования]]]]]]
- Установить опции сокета: как правило, базовый физический адрес, размер окна, смещение массива, размер массива, ширина шины и коэффициент чередования. Для служб сокета со специализированными драйверами формат остается гибким. Эта опция является обязательной. Аргументы:
- базовый_адрес
- Физический базовый адрес раздела флэш-памяти. Значение зависит от используемой платы.
- размер_окна
- Размер физически непрерывного раздела флэш-памяти.
- смещение_массива
- Для памяти типа SRAM аргумент задает смещение относительно базового адреса к началу массива флэш-памяти.
- размер_массива
- Для памяти типа SRAM аргумент задает размер массива флэш-памяти. Значение по умолчанию соответствует значению размер_окна.
- размер_блока
- Размер физического сектора для стирания. Для памяти типа SRAM это число может являться любым числом в степени 2. По причинам производительности минимальное значение должно быть равно 64 Кб.
- ширина_шины
- Общая ширина шины данных с точки зрения микропроцессора. Это значение соответствует произведению размера шины для одной микросхемы флэш-памяти и коэффициента чередования. Значение должно представлять собой степень числа 2 (1, 2, 4 или 8).
- коэф_чередования
- Число микросхем флэш-памяти на шине данных. Две микросхемы с шириной шины 16 бит занимают верхнюю и нижнюю половину 32-битовой шины данных с коэффициентом чередования 2. Этот коэффициент должен представлять степень числа 2 (1, 2, 4 или 8).
Базовый физический адрес, размеры и смещение можно указать в восьмеричном (1000), шестнадцатеричном (0x200) или десятичном (512) формате. Размеры должны являться степенью числа 2. Эти значения устанавливаются с любым из следующих суффиксов: - (пусто) – байты
-
k
– килобайты -
m
– мегабайты
- -t потоки
- Число потоков. Минимальное значение равно 1, значение по умолчанию – 2, а максимальное значение – 100. Дополнительное число потоков увеличивает производительность при активации фонового восстановления (опция -b) и использовании нескольких микросхем и/или резервных блоков.
- -u обновление
- Уровень обновления для меток времени:
- 0 – без обновления (по умолчанию).
- 1 –только обновление файлов
- 2 – обновление файлов и каталогов.
- -V
- Вывести информацию о версии файловой системы и MTD и завершить работу.
- -v
- Вывести расширенную информацию.
- -w размер_буфера
- Размера буфера записи (добавление) в байтах. Значением аргумента размер_буфера по умолчанию является 512. Использование больших размеров буфера при записи предотвращает создание слишком мелких экстентов, что сокращает затраты. Если значение размер_буфера равно 0, добавление деактивируется.
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
| Для запуска этого драйвера необходимо войти в систему под учетной записью root. |
Менеджер devf-generic обеспечивает поддержку файловой системы флэш-памяти для любых стандартных флэш-устройств. Как правило, требуется только передать адрес и размер с помощью опции -s. Менеджер должен распознавать устройства автоматически.
Для получения информации о создании пользовательского варианта devf-generic для встраиваемой системы см. главу «Customizing the Flash Filesystem» ("Настройка файловых сиcтем флэш-памяти") книги Building Embedded Systems ("Создание встраиваемых систем").
По умолчанию используются следующие имена файлов (для изменения идентификатора n, добавляемого к /dev/fs
, используется опция -i):
- /dev/fsn
- Точка монтирования по умолчанию для сокета n.
- /dev/fsnp0
- Доступ к неформатированным данным для сокета n, раздел 0.
- точка_монтирования
- Точка монтирования файловой системы флэш-памяти для сокета n, раздел 0 с прозрачной распаковкой данных.
Значение описанного выше аргумента точка_монтирования можно определить с помощью атрибута mount команды mkefs и перезаписать его с использованием опции -n для flashctl. Значение по умолчанию – /fsnp0
.
| При удалении неформатированного раздела или массива (сокета) возможно стирание любого монитора начальной загрузки, BIOS или других данных, записанных производителем. Внимательно ознакомьтесь с документацией к плате. |
Драйвер тестирует оборудование для определения размера блока. Если требуется определить размер блока, возможны следующие варианты:
- Обратитесь к документации для аппаратных средств.
- Запустите драйвер в режиме вывода расширенной информации путем установки опции -v. В выводе
U:
указывает число блоков, а S:
– размер блока. Оба значения представлены в шестнадцатеричном формате. - Запустите драйвер, а затем утилиту flashctl с опцией -i.
Запуск devf-generic и автоматическое монтирование разделов файловой системы флэш-памяти по базовому адресу 0xFF000 с размером окна 16 Мб, процессом начального устранения неисправностей, активацией семантики POSIX и фоновым восстановлением с приоритетом 5:
devf-generic -s 0xFF000,16M -r -u2 -b5 &
Создание раздела флэш-памяти размером 32 Mб с блоком (сектором) 64 Kб:
devf-generic -s0,32m,,,64k -v -r
Создание раздела флэш-памяти размером 128 Mб и большими размерами блоков (для ускорения форматирования):
devf-generic -s0,128m,,,512k -v -r
Создание раздела размером 4 Mб:
devf-generic -s0,4m,,,64k -v -r
Создание раздела флэш-памяти размером 16 Mб от данного физического адреса с размером блока 128 Kб и шириной шины данных 16 бит:
devf-generic -s0xa4000000,16m,,,128k,2 -v -r
Создание раздела флэш-памяти размером 16 Мб от данного физического адреса с размером блока 256 Кб и шириной шины данных 32 бита с коэффициентом чередования 2:
devf-generic -s0,16m,,,256k,4,2 -v -r
При использовании этого драйвера необходимо указать опцию -s.
Несмотря на то, что файловая система флэш-памяти поддерживает большую часть семантики POSIX, некоторые функции не реализованы в целях сохранения простоты использования и эффективности работы драйвера. Не поддерживается следующая семантика POSIX:
- Жесткие ссылки и все, что к ним относится (каталоги
.
и ..
не существуют, элемент nlink структуры struct stat жестко запрограммирован, а команда unlink() для каталогов возвращает значение ENOTSUP
). - Время доступа на носителе не обновляется. Эти значения устанавливаются в соответствии со временем изменения.
В файловой системе флэш-памяти версии 3 ЗОСРВ «Нейтрино» встроенная распаковка больше не поддерживается. Функции распаковки файловой системы флэш-памяти перенесены в менеджер ресурсов inflator. Для сжатия файлов используется утилита deflate.
Во время записи из нескольких источников в произвольном порядке в разделяемый файл или каталог (например, посредством unlink или rename()) может наблюдаться снижение производительности. В таких случаях необходимо отдельно определять указатели смещения для каждого случая доступа. При добавлении к файлу или создании файлов с помощью open( O_CREAT ), mkdir, mknod или link отсутсвуют потери производительности.
Базовые подсистемы ЗОСРВ «Нейтрино», Драйверы
deflate, devf-ram, flashctl, inflator, mkefs
Предыдущий раздел: Драйверы