mend0za: (kotik)
[personal profile] mend0za
Файловая система 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).

И мёртвые с косами вдоль дорог стоят.

Date: 2010-05-27 04:30 pm (UTC)
From: [identity profile] kiryl.livejournal.com
JFFS2 дерьмо редкостное. Попробуй UBIFS. Хотя я не уверен, как оно себя на таких маленьких объёмах поведёт.

Date: 2010-05-27 05:15 pm (UTC)
From: [identity profile] mend0za.livejournal.com
Все эти UBIFS, Yaffs2 и прочие LogFS - как раз ориентированы на большие флешки, в отличие от. О чём честно заявляют в design documents.

Плюс с апстримом кернела у них пока не складывается. В реальном продакшене я видел только JFFS2 (n770, наши blackfin на промваде и т.п.). Плюс ядро мое старое, шансов его обновлять нету.


Date: 2010-05-27 06:06 pm (UTC)
From: [identity profile] kiryl.livejournal.com
UBIFS в n900. Его дизайнили два парня из Нокии ибо JFFS2 задолбал. n900 тоже на .28

Date: 2010-05-27 06:08 pm (UTC)
From: [identity profile] mend0za.livejournal.com
про UBIFS в 900 - слышал. По моему - это единственное сейчас продакшен применение UBIFS :)

Date: 2010-05-28 10:32 am (UTC)
From: [identity profile] mend0za.livejournal.com
под UBIFS не хватает места.

UBI Volume я создал успешно, но количества свободных LEB недостаточно (есть 12, надо 17).

Вычёркиваем.

Date: 2010-05-27 05:38 pm (UTC)
From: [identity profile] jek-hor.livejournal.com
Там JFFS2 надо для нормальной работы несколько блоков свободных. Т.е., если на флешке места совсем не осталось --- то чёрта с два что поменяешь. Но она обычно сама следит за этим, такое можно поймать, если создать образ, забитый под завязку.

Date: 2010-05-27 05:40 pm (UTC)
From: [identity profile] mend0za.livejournal.com
есть свободные, есть

Date: 2010-05-27 05:41 pm (UTC)
From: [identity profile] e11en-k.livejournal.com
м-да... много думала...

Date: 2010-05-27 05:57 pm (UTC)
From: [identity profile] mend0za.livejournal.com
весь вечер читал пейджер
много думал

Date: 2010-05-27 08:36 pm (UTC)
From: [identity profile] max-posedon.livejournal.com
(ответ на все комменты где упоминается ubifs)
jffs2 лучше ubifs если размер флешки меньше 10Mb
http://free-electrons.com/doc/flash-filesystems.pdf

Что касается 1Mb то тут вообще ух, возможности использовать tmpfs + скидывание в squashfs нет? (а sqlashfs прямо в mtd).

Основную ОС хорошо бы унести в squashfs сразу, уже может полегче было бы. (В плане количества файлов)

1 Mb fs... любопытно, как задача в конце решится

Date: 2010-05-27 09:39 pm (UTC)
From: [identity profile] max-posedon.livejournal.com
для тех, кто не вкурсе
nand(mtd) не является block devices-ом

Date: 2010-05-27 09:46 pm (UTC)
From: [identity profile] theiced.livejournal.com
ах ебать меня ананасом. ссылко гони на описание, а то я за говном этим не слежу.

Date: 2010-05-27 09:52 pm (UTC)
From: [identity profile] max-posedon.livejournal.com
http://en.wikipedia.org/wiki/Flash_memory

Date: 2010-05-27 10:14 pm (UTC)
From: [identity profile] theiced.livejournal.com
а почему не блок?

Date: 2010-05-27 10:23 pm (UTC)
From: [identity profile] max-posedon.livejournal.com
Подключается напрямую к проуессору по шине, физическое представление у её такое. Например у ssd винчестера или обычно usb-флешки есть специальный контроллер и процессор, который делает из её block device. В embedded часто подключается напрямую к CPU, безо всяких контроллеров.

Date: 2010-05-27 10:27 pm (UTC)
From: [identity profile] theiced.livejournal.com
ну вот это и стоило сразу сказать.

теперь вопрос - почему нельзя тупо сэмулировать блок и поверху ляпнуть нормальную фс?

Date: 2010-05-27 10:33 pm (UTC)
From: [identity profile] max-posedon.livejournal.com
Высокая нагрузка на CPU + падение скорости записи ориентировочно в 10 раз.

В типичном ssd или flash-ке до 16 процессоров стоит на работу с nand-ом, управляемым firmware кодом на 1-2Mb.

Date: 2010-05-28 01:09 am (UTC)
From: [identity profile] theiced.livejournal.com
кошмары какие.

Date: 2010-05-28 08:25 am (UTC)
From: [identity profile] mend0za.livejournal.com
блок эмулируется и так (/dev/mtdblock* поверх /dev/mtd*), что позволяет монтировать файловые системы с этих устройств.

но есть нюансы

1) запись на MTD состоит из цикла ERASE + WRITE, причём минимальные блоки весьма не маленькие. На моей EEPROM erase block size - 64K (и это стандартно)
2) малое количество циклов записи. На моём устройстве производитель гарантирует 10 000 циклов записи блока. Из этого следуют экзотические файловые системы, которые считают наличие бэдов на NAND - штатной ситуацией.
3) эти файловые системы (исходя из сложности задачи) - имеют большую внутреннюю сложность и значительный payload на файло




Date: 2010-05-28 11:33 am (UTC)
From: [identity profile] theiced.livejournal.com
так и знал что нефиг мельникова слушать :)

терь понятно - быстроизнашивоемое говножелезо со штатными (и постоянно растущими) бэдами. нахера оно такое надо - нипаняяяятна.

Date: 2010-05-28 12:38 pm (UTC)
From: [identity profile] ex-biespart.livejournal.com
Хоць бы таму, што цана меншая.

Date: 2010-05-28 03:43 pm (UTC)
From: [identity profile] mend0za.livejournal.com
дёшево, сердито и простая схема электронного подключения

в эмбеде сейчас за каждый доллар на устройстве душатся, соревнуются кто себестоимость железа удешевит ещё на 50 центов. Для партий на сотни тысяч и миллионов штук (а вся масса бытовой электроники такова) - это очень серьёзная разница.




Date: 2010-05-28 08:44 am (UTC)
From: [identity profile] mend0za.livejournal.com
Основная FS вообще не рассматривается, см ниже мой ответ Кириллу. 1 MB - это служебная область на чтение/запись.

Date: 2010-05-27 09:47 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Вова, а что у тебя должно храниться на этой флешке? Какие паттерны чтения/записи?

А нужна ли тебе вообще файловая система? Может писать прямо на mtd?

Если писать нужно часто, то можно посмотреть на UBI. UBI -- это такой volume менеджер. Он лежит под UBIFS и заботиться, что б не появлялись bad-сектора слишком быстро. Его можно использовать отдельно от UBI. Правда, опять же, нужно смотреть какой у него overhead по объёму. Я не в курсе.

Date: 2010-05-28 08:40 am (UTC)
From: [identity profile] mend0za.livejournal.com
На еепроме хранятся настройки. Сейчас рассматривается возможность миграции со старого формата (бинарный, по фиксированным смещениям, с упаковкой байтов и битов) на новый (используя файловую систему).

Я сейчас мучительно собирают mtd-tools свежий на своём убитом арме, и буду тестить UBIFS.

Date: 2010-05-28 12:41 pm (UTC)
From: [identity profile] gmax-lj.livejournal.com
звучит бредово, понимаю, но можно ли сделать не N тысяч файлов по 160 байт, а один большой, где хранить ключ (например, хеш пути в фс) и данные? доступ можно в юзерспейсе редиректить. но это если jffs2 с одним файлом лучше справится..

Date: 2010-05-28 02:30 pm (UTC)
From: [identity profile] mend0za.livejournal.com
я планирую разбить всё таки по файлам на каждую переменную

переменных немного, гораздо меньше тысячи, и размер их небольшой (uint8, uint16, uint32, их массивов, некоторое количество небольших строк и массивов строк)

Просто я планирую зашить расстановку так, чтобы значения читались по имени переменной (т.е. файла), а не по мистическим цифрам или смещениям. Это изрядно облегчит отладку (cat и od -x) .

Profile

mend0za: (Default)
mend0za

June 2023

S M T W T F S
    123
45678910
11 121314151617
18192021222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 16th, 2025 12:59 pm
Powered by Dreamwidth Studios