devf-generic
Основная файловая система
флэш-памяти
Примечание. Для запуска этого драйвера
необходимо войти в систему с учетной записью root.
Синтаксис:
devf-generic
[-a] [-b приоритет]
[-d метод_регистрации] [-E] [-e авто]
[-f уровень_проверки]
[-i индекс_массива[,индекс_раздела]]
[-l] [-m перемонтирование
[-p фоновый_процент[,сверхлимит]]
[-R] [-r]
[-sбазовый_адрес[,размер_окна[,смещение_массива[,размер_массива
[,размер_блока[,ширина_шины[,коэф_чередования]]]]]]]
[-t потоки]
[-u обновление] [-V] [-v]
[-w размер_буфера]
Поддерживаемые платформы:
Neutrino
Целевые платформы:
Большинство устройств
флэш-памяти
Опции:
-a
Не выполнять автоматическое монтирование разделов
файловой системы, имеющихся на носителе. Если указаны обе
опции - a и -R, опция -R драйвером игнорируется.
-b приоритет
Активация фонового
восстановления с указанным значением приоритет. По
умолчанию фоновое восстановление деактивировано.
-d метод_регистрации
Контролировать регистрацию
данных, получаемых от флэш-драйвера. Допустимые значения аргумента
метод_регистрации:
-
0 – регистрация в stdout
(по умолчанию).
-
1 – регистрация
в slogger.
-
2 – регистрация
в stdout и slogger.
-E
Не
переходить в режим сервиса. При обнаружении драйвером
поврежденной файловой системы статус завершения будет на 1
больше номера раздела файловой системы.
-e авто
Только перечислить флэш-разделы вместо полного
сканирования и выполнения утилиты mount. Флэш-драйвер выполняет
автоматическое монтирование всех разделов с номером раздела
меньше или равным значению аргумента авто.
Например, предположим, что
имеется следующая структура флэш-памяти:
-
/dev/fs0p0 – неформатированный
раздел
-
/dev/fs0p1 – форматированный раздел
-
/dev/fs0p2 – форматированный раздел
-
/dev/fs0p3 – форматированный раздел
При запуске драйвера с опцией -e 1 в каталоге /dev создаются все неформатированные
записи, но монтируется только /dev/fs0p1 (/dev/fs0p0 не отформатирован, поэтому
его монтирование не выполняется независимо от значения опции -e).
-f уровень_проверки
Активировать проверку
флэш-памяти. (по умолчанию – 0, 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 – обновление файлов и каталогов. Значением
аргумента обновление по умолчанию является 0.
-V
Вывести информацию о версии
файловой системы и MTD и завершить работу.
-v
Вывести расширенную
информацию.
-w размер_буфера
Размера
буфера записи (добавление) в байтах. Значением аргумента размер_буфера
по умолчанию является 512. Использование больших размеров буфера
при записи предотвращает создание слишком мелких экстентов, что
сокращает затраты. Если значение размер_буфера равно 0,
добавление деактивируется.
Описание:
Менеджер 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).
-
Время доступа на носителе не
обновляется. Эти значения устанавливаются в соответствии со
временем изменения.
В файловой системе флэш-памяти QNX Neutrino версии 3
встроенная распаковка больше не поддерживается. Функции
распаковки файловой системы флэш-памяти перенесены в менеджер
ресурсов inflator. Для сжатия
файлов используется утилита deflate.
Во время
записи из нескольких источников в произвольном порядке в
разделяемый файл или каталог (например, посредством unlink или rename) может наблюдаться снижение
производительности. В таких случаях необходимо отдельно
определять указатели смещения для каждого случая доступа. При
добавлении к файлу или создании файлов с помощью open(O_CREAT), mkdir, mknod или link отсутсвуют потери производительности.