реклама на сайте
подробности

 
 
> Как создать несколько разделов на NAND с JFFS2, Необходим пример корректной конфигурации для сборки U-boot
Dimmy
сообщение Jan 22 2010, 14:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503



Прошу прощения за повтор - промахнулся с форумом.
Вводные:
1. Плата Olimex SAM9-L9260 (по основной конфигурации - тот же AT91SAM9260-EK от Atmel, только без звукового ЦАП и меньшим размером dataflash).
2. u-boot-2009.11 (можно ли использовать его? если нет - то почему?)
3. Поскольку плата используется только для отладки, а "боевая" будет без dataflash (только NAND), то собирать U-boot предполагается, предварительно исполнив
make at91sam9260ek_nandflash_config
Но при этом создается только 1 раздел для filesystem. Нужно 2. В доках выяснил, что для этого необходимо определить макро CONFIG_SYS_JFFS_CUSTOM_PART
и функцию struct part_info* jffs2_part_info
только вот в разных примерах - разный список параметров ф-ции.

В файле README.JFFS2 она описана так:
struct part_info* jffs2_part_info(int part_num)

Здесь: common/cmd_jffs2.c (этот файл приводится как пример реализации) она выглядит так:
static struct part_info* jffs2_part_info(struct mtd_device *dev, unsigned int part_num)

Чему верить? Может есть конкретный пример для AT91SAM9260-EK?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sasamy
сообщение Jan 22 2010, 14:49
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(Dimmy @ Jan 22 2010, 17:40) *
Вводные:
3. Поскольку плата используется только для отладки, а "боевая" будет без dataflash (только NAND), то собирать U-boot предполагается,


Непонятен момент - вы на "боевой" плате будете играть с загрузчиком ? уверены что вам нужна поддержка jffs в загрузчике а не в ядре ? Я к тому что те разделы которые вы определите в u-boot ничего общего не имеют с ядром.

Сообщение отредактировал sasamy - Jan 22 2010, 15:37
Go to the top of the page
 
+Quote Post
Dimmy
сообщение Jan 25 2010, 08:00
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Dimmy
сообщение Jan 25 2010, 11:48
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 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!
Go to the top of the page
 
+Quote Post
dch
сообщение Jan 30 2010, 23:46
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 21:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01479 секунд с 7
ELECTRONIX ©2004-2016