![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Файловая система JFFS2 на SPI EEPROM ST Micro m45p80 на 1 MB.
Ядро 2.6.28.10, armv5tejl, самопальный порт BSP c 2.6.16.4 (кстати, я ещё не писал что портировал SPI драйвера в дополнение к своим старым изыскам и добавил возможность отключения MTD_CONCAT в оригинальный вендорский код :) ).
Форматирую устройство, заливаю файловую систему.
192KB занято файловой системой (из 1024KB - уже круто).
Начинаю создавать мелкие файлы, дохрена мелких (14b) файлов. На счётчике 4337 заканчивается место. Это 59КB реальных данных. "df -B 1 ." показывает бред (осталось 72KB), du утверждает что записано 2.1MB.
Отключаю компрессию - результат идентичный.
Считаем payload - порядка 164 байта на файл. Это алилуйя.
Напрягаю мозг - и отключаю JFFS2_SUMMARIZE. Теперь влазит 6030 файлов (82KB данных)
Но начинается неведомое - эти файлы теперь невозможно поменять. Удалить - можно , поменять - нельзя (no free space on device).
И мёртвые с косами вдоль дорог стоят.
Ядро 2.6.28.10, armv5tejl, самопальный порт BSP c 2.6.16.4 (кстати, я ещё не писал что портировал SPI драйвера в дополнение к своим старым изыскам и добавил возможность отключения MTD_CONCAT в оригинальный вендорский код :) ).
Форматирую устройство, заливаю файловую систему.
192KB занято файловой системой (из 1024KB - уже круто).
Начинаю создавать мелкие файлы, дохрена мелких (14b) файлов. На счётчике 4337 заканчивается место. Это 59КB реальных данных. "df -B 1 ." показывает бред (осталось 72KB), du утверждает что записано 2.1MB.
Отключаю компрессию - результат идентичный.
Считаем payload - порядка 164 байта на файл. Это алилуйя.
Напрягаю мозг - и отключаю JFFS2_SUMMARIZE. Теперь влазит 6030 файлов (82KB данных)
Но начинается неведомое - эти файлы теперь невозможно поменять. Удалить - можно , поменять - нельзя (no free space on device).
И мёртвые с косами вдоль дорог стоят.
no subject
Date: 2010-05-27 04:30 pm (UTC)no subject
Date: 2010-05-27 05:15 pm (UTC)Плюс с апстримом кернела у них пока не складывается. В реальном продакшене я видел только JFFS2 (n770, наши blackfin на промваде и т.п.). Плюс ядро мое старое, шансов его обновлять нету.
no subject
Date: 2010-05-27 06:06 pm (UTC)no subject
Date: 2010-05-27 06:08 pm (UTC)no subject
Date: 2010-05-28 10:32 am (UTC)UBI Volume я создал успешно, но количества свободных LEB недостаточно (есть 12, надо 17).
Вычёркиваем.
no subject
Date: 2010-05-27 05:38 pm (UTC)no subject
Date: 2010-05-27 05:40 pm (UTC)no subject
Date: 2010-05-27 05:41 pm (UTC)no subject
Date: 2010-05-27 05:57 pm (UTC)много думал
no subject
Date: 2010-05-27 08:36 pm (UTC)jffs2 лучше ubifs если размер флешки меньше 10Mb
http://free-electrons.com/doc/flash-filesystems.pdf
Что касается 1Mb то тут вообще ух, возможности использовать tmpfs + скидывание в squashfs нет? (а sqlashfs прямо в mtd).
Основную ОС хорошо бы унести в squashfs сразу, уже может полегче было бы. (В плане количества файлов)
1 Mb fs... любопытно, как задача в конце решится
no subject
Date: 2010-05-27 09:34 pm (UTC)no subject
Date: 2010-05-27 09:39 pm (UTC)nand(mtd) не является block devices-ом
no subject
Date: 2010-05-27 09:46 pm (UTC)no subject
Date: 2010-05-27 09:52 pm (UTC)no subject
Date: 2010-05-27 10:14 pm (UTC)no subject
Date: 2010-05-27 10:23 pm (UTC)no subject
Date: 2010-05-27 10:27 pm (UTC)теперь вопрос - почему нельзя тупо сэмулировать блок и поверху ляпнуть нормальную фс?
no subject
Date: 2010-05-27 10:33 pm (UTC)В типичном ssd или flash-ке до 16 процессоров стоит на работу с nand-ом, управляемым firmware кодом на 1-2Mb.
no subject
Date: 2010-05-28 01:09 am (UTC)no subject
Date: 2010-05-28 08:25 am (UTC)но есть нюансы
1) запись на MTD состоит из цикла ERASE + WRITE, причём минимальные блоки весьма не маленькие. На моей EEPROM erase block size - 64K (и это стандартно)
2) малое количество циклов записи. На моём устройстве производитель гарантирует 10 000 циклов записи блока. Из этого следуют экзотические файловые системы, которые считают наличие бэдов на NAND - штатной ситуацией.
3) эти файловые системы (исходя из сложности задачи) - имеют большую внутреннюю сложность и значительный payload на файло
no subject
Date: 2010-05-28 11:33 am (UTC)терь понятно - быстроизнашивоемое говножелезо со штатными (и постоянно растущими) бэдами. нахера оно такое надо - нипаняяяятна.
no subject
Date: 2010-05-28 12:38 pm (UTC)no subject
Date: 2010-05-28 03:43 pm (UTC)в эмбеде сейчас за каждый доллар на устройстве душатся, соревнуются кто себестоимость железа удешевит ещё на 50 центов. Для партий на сотни тысяч и миллионов штук (а вся масса бытовой электроники такова) - это очень серьёзная разница.
no subject
Date: 2010-05-28 08:44 am (UTC)no subject
Date: 2010-05-27 09:47 pm (UTC)А нужна ли тебе вообще файловая система? Может писать прямо на mtd?
Если писать нужно часто, то можно посмотреть на UBI. UBI -- это такой volume менеджер. Он лежит под UBIFS и заботиться, что б не появлялись bad-сектора слишком быстро. Его можно использовать отдельно от UBI. Правда, опять же, нужно смотреть какой у него overhead по объёму. Я не в курсе.
no subject
Date: 2010-05-28 08:40 am (UTC)Я сейчас мучительно собирают mtd-tools свежий на своём убитом арме, и буду тестить UBIFS.
no subject
Date: 2010-05-28 12:41 pm (UTC)no subject
Date: 2010-05-28 02:30 pm (UTC)переменных немного, гораздо меньше тысячи, и размер их небольшой (uint8, uint16, uint32, их массивов, некоторое количество небольших строк и массивов строк)
Просто я планирую зашить расстановку так, чтобы значения читались по имени переменной (т.е. файла), а не по мистическим цифрам или смещениям. Это изрядно облегчит отладку (cat и od -x) .