Я работаю над обновлением прошивки на устаревшей плате с модифицированной версией 2.6.12.1 с процессором at91rm9200 и at45db642D для использования at45db641E флэш-память. Характеристики 641E:
- 32768 страниц
- размер страницы 264 байта
- гибкие параметры стирания для стирания страницы (264 байта), блока (2 КБ), сектора (256 КБ) или всего чипа (64 Мбит).
Я полагаю, что размер страницы диспетчера памяти ядра составляет стандартные 4096 байт.
Я хочу поместить на устройство соответствующий образ jffs2. Варианты mkfs.jffs2 я интересно о (со страницы руководства):
- --pagesize: использовать размер страницы SIZE. По умолчанию 4 КиБ. Этот размер является максимальным размером узла данных. Установите в соответствии с размером страницы управления памятью целевой системы (ПРИМЕЧАНИЕ: это НЕ связано с размером страницы NAND).
- --eraseblock: использовать размер блока стирания SIZE. По умолчанию 64 КиБ. Если вы используете размер блока стирания, отличный от размера блока стирания целевого устройства MTD, JFFS2 может работать неоптимально. Если указанный SIZE меньше 4096, предполагается, что единицы измерения составляют КиБ.
Человек говорит, что размер страницы связан с размером страницы управления памятью ядра (в моем случае 4096, то же, что и по умолчанию), а НЕ со страницей устройства размером 264 байта. Поэтому мне нужно указать --pagesize=4096, а НЕ --pagesize=264, правильно ли это?
Мужчина также говорит, что --eraseblock должен быть того же размера, что и блок стирания устройства MTD. Я смущен несколькими вещами.
- 641E имеет несколько различных вариантов стирания. Что нужно выбрать для параметра mkfs.jffs2 --eraseblock?
- Если правильным вариантом является либо размер страницы 641E, либо размер блока, как я могу указать это в mkfs.jffs2, учитывая тот факт, что значения ниже 4096 предполагаются в КБ, а не в байтах?
- Этот ссылка (на которую ссылается этот связанный, но недостаточный SO question) говорит, что узлы jffs2 должны полностью помещаться в блоке стирания. Поскольку их размер составляет 4+ КБ, что больше, чем размер «блока стирания» устройства, ссылка говорит: «Вы должны объединить несколько блоков стирания в один виртуальный блок стирания размером 64 или 128 КБ и использовать его - это будет более оптимально», а затем «Вам нужно, чтобы ваш драйвер сообщал о размере блока стирания 128 КБ и эмулировал его, тогда он будет работать. Он не будет работать из коробки». Как настроить такой «виртуальный блок стирания»?
- В драйвере at91 dataflash
device->erasesize=pagesize
. Таким образом, похоже, что есть несколько похожих, но разных концепций: размер стираемого драйвера, размер стираемого блока устройства и размер стираемого блока jffs2. Каковы отношения и различия между ними? Как размер блока стирания, указанный в jffs2, в конечном итоге влияет на операции, выполняемые драйверами?
Спасибо за любую помощь.