|
Как создать несколько разделов на NAND с JFFS2, Необходим пример корректной конфигурации для сборки U-boot |
|
|
|
 |
Ответов
(1 - 10)
|
Jan 22 2010, 15:42
|
Частый гость
 
Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503

|
Цитата(sasamy @ Jan 22 2010, 17:49)  Непонятен момент - вы на "боевой" плате будете играть с загрузчиком ? уверены что вам нужна поддержка jffs в загрузчике а не в ядре ? Зачем обязательно играть? Один раз собрать с необходимыми параметрами разделов - и все... А поддержка JFFS2 ессно нужна в загрузчике, т.к. и он, и bootstrap и ядро и файловая система будут на NAND-flash
Сообщение отредактировал Dimmy - Jan 22 2010, 15:44
|
|
|
|
|
Jan 22 2010, 18:46
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Эк вы замахнулись. Цитата(Dimmy @ Jan 22 2010, 16:40)  Здесь: common/cmd_jffs2.c (этот файл приводится как пример реализации) она выглядит так: static struct part_info* jffs2_part_info(struct mtd_device *dev, unsigned int part_num) JFFS2 существует только с интерфейсом под файловую систему Линукс и насколько известно никогда не имела интерфейса типа ANSI C. Т.е. просто нет оболочек для JFFS2 позволяющих работать с ней без Линукса. И уж не будет поскольку это сверхтормозная морально устаревшая файловая система которая должна быть заменена либо на UBIFS либо на YAFFS2 Если уж позарез в загрузчике нужна файловая система на NAND, то есть куча компактных файловых систем идущих с коммерческими компиляторами IAR, Keil и т.д. Но тогда уж и весь u-boot фтопку и писать свой загрузчик. Однозначно это легче подъема любой файловой системы на NAND.
|
|
|
|
|
Jan 25 2010, 08:00
|
Частый гость
 
Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503

|
Цитата Я так и подумал что вы ошибаетесь smile.gif поддержка фс в загрузчика вообще не нужна, он посекторно копирует содержимое образа ядра в ram. Разделы в u-boot - это его личное дело как он себе их представляет и к ядру отношения не имеет, в ядре свое собственное представление разделов которое описывается отдельно, либо через командную строку или в board-файле. Пока писал ответ - добавилось несколько постов. Но все равно, оставлю как-есть... Цитата(sasamy @ Jan 22 2010, 17:49)  Я к тому что те разделы которые вы определите в u-boot ничего общего не имеют с ядром. Дело в том, что ранее пытался создать разделы на уровне ядра. При этом конфигурация была следующей: Dataflash: Bootstrap U-boot var's U-boot Kernel Temp NAND-flash (512Mb): Root FS (хотелось бы 256Мб) Secondary FS (тоже хотелось бы 256Мб) Остался непонятен вопрос: где указывать размер раздела при создании файловой системы? Например, утилитка mkfs.jffs2 имеет параметр более-менее подходящий под это описание: -p=[SIZE] Pad output to SIZE bytes with 0xFF. If SIZE is not specified, the output is padded to the end of the final erase block. делал -p=256*1024*1024 Но все равно, после монтирования раздела его размер оказывается равным полному размеру NAND-flash (512M) (об этом говорит df -h) Возможно, есть какие-то дополнительные параметры, указываемые загрузчиком kernel-у, которые говорят о размере раздела?
Сообщение отредактировал Dimmy - Jan 25 2010, 08:07
|
|
|
|
|
Jan 25 2010, 11:48
|
Частый гость
 
Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503

|
Попытался добавить раздел в ядре в блоке описания железа (/arch/arm/mach-at91/board-sam9-l9260.c) /* * NAND flash */ static struct mtd_partition __initdata ek_nand_partition[] = { <------>{ <------><------>.name<->= "Bootloader Area", <------><------>.offset>= 0, <------><------>.size<->= 4 * 1024 * 1024, <------>}, <------>{ <------><------>.name<->= "User Area", <------><------>.offset>= 4 * 1024 * 1024, <------><------>.size<->= 256 * 1024 * 1024, <------>}, <------>{ <------><------>.name<->= "Secondary Partition", <------><------>.offset>= (4 * 1024 * 1024) + (256 * 1024 *1024), <------><------>.size<->= MTDPART_SIZ_FULL, <------>}, }; После компиляции ядра с добавленным разделом и заливки на этапе монтирования ФС контроллер вываливается с ошибкой:
VFS: Mounting root (jffs2 filesystem). Freeng init memory: 120K Kernel panic - not syncing: Attempted to kill init!
|
|
|
|
|
Jan 29 2010, 21:47
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Dimmy @ Jan 25 2010, 13:48)  Попытался добавить раздел в ядре в блоке описания железа (/arch/arm/mach-at91/board-sam9-l9260.c) ... Я бы взял за пример любой из файлов в drivers/mtd/maps написал свой partition map. В конфиге ядра должна быть включена поддержка MTD Partitions. А приведенный лог - непонятный. Разделы создались? И похоже что JFFS2 таки примонтировалась. А собственно на ней есть init? А как заливался образ? Из u-boot? А если BAD-Block попался?
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Jan 30 2010, 23:46
|

Профессионал
    
Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661

|
Цитата(Dimmy @ Jan 25 2010, 14:48)  static struct mtd_partition __initdata ek_nand_partition[] = { <------>}, }; часто так делают, разделение на партиции задается отдельным файлом, структуркой. До сообщения которое Вы привели у Вас ядро должно выдать собщения что обнаружена такаято нанд flash, а на ней должны быть найдены, размещены эти партиции. В командной строке u-boot а, которую u-boot передает ядру должна присутствовать строчка где искать root файловую систему на какой партиции типа root=/dev/..., ядро обычно названия партиций выводит, вместо трех точек подставте что она Вам выдало. u-boot может запускать ядро лежащее в JFFS2 сответсвенно партиций может быть две одна на u-boot и одна на ядро с файловой системой, в зависимости как u-boot сделан, часто делается с отдельным загрузчиком, тогда до трех партиций это как сделаете.
Сообщение отредактировал dch - Jan 30 2010, 23:51
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|