UBIFS это новая файловая система для NAND и NOR носителей.
Подробней она описана здесь.
Что бы протестировать возможности сей прекрасной ФС нужно:
Что бы протестировать возможности сей прекрасной ФС нужно:
- включить поддержку оной в ядре (Device Drivers ->
Memory Technology Device (MTD) Supportas -> Enable UBI - Unsorted block images )
( File Systems -> Miscellaneous filesystemsas -> UBIFS file system support)
- скачать снимок mtd-utils с git (здесь) и собрать из исходников
Для компиляции mtd-utils потребуются пакеты: libacl-devel и zlib-devel,
а так же библиотеки zlib, lzo и uuid.
Для Ubuntu: sudo apt-get install libacl1-dev zlib1g-dev liblzo2-dev uuid-dev
Для Ubuntu: sudo apt-get install libacl1-dev zlib1g-dev liblzo2-dev uuid-dev
Но прежде чем мы сможем воспользоватся всеми преимуществами данной файловой
системы, нужно внести некоторые изменения в исходники ядра. На плате которую я использую для экспериментов (BeagleBone Rev.A3) нет распаяной NAND flash, потому мы ее подключим. Рассказ о подключение не столь интересен, но нам нужно поправить загрузочную конфигурацию ядра, вся нужна информация расположенна в файле
/linux-3.2.0-patched/arch/arm/mach-omap2/board-am335xevm.c:
/* Make some additions to configs */ /* Beaglebone Rev A3 and after */ static struct evm_dev_cfg beaglebone_dev_cfg[] = { {tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {ehrpwm_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {uart1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {gpio_led_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {evm_nand_init, DEV_ON_BASEBOARD, PROFILE_NONE}, {NULL, 0, 0}, };
как видно тут в список инициализации добавлена nand(а так же UART1, ehrpwm), причем сменился ее тип.
Кстати nand flash в отличии от блочных устройств имеет софтварное разбиение на разделы и эти разделы захардкорженны в этом же файле:
/* NAND partition information */ static struct mtd_partition am335x_nand_partitions[] = { /* All the partition sizes are listed in terms of NAND block size */ { .name = "SPL", .offset = 0, /* Offset = 0x0 */ .size = SZ_128K, }, { .name = "SPL.backup1", .offset = MTDPART_OFS_APPEND, /* Offset = 0x20000 */ .size = SZ_128K, }, { .name = "SPL.backup2", .offset = MTDPART_OFS_APPEND, /* Offset = 0x40000 */ .size = SZ_128K, }, { .name = "SPL.backup3", .offset = MTDPART_OFS_APPEND, /* Offset = 0x60000 */ .size = SZ_128K, }, { .name = "U-Boot", .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ .size = 15 * SZ_128K, }, { .name = "U-Boot Env", .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */ .size = 1 * SZ_128K, }, { .name = "Kernel", .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */ .size = 40 * SZ_128K, }, { .name = "File System", .offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */ .size = MTDPART_SIZ_FULL, }, };
Ну и на закуску, два различных способа "залить" информацию во флеш описанны здесь.
Комментариев нет:
Отправить комментарий