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

 
 
> AT91SAM9260+Linux... как подключить jffs2 на DataFlash?
Pasa
сообщение Sep 2 2009, 13:00
Сообщение #1


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

Группа: Свой
Сообщений: 107
Регистрация: 4-03-09
Из: Беларусь, Минск
Пользователь №: 45 665



Прошу помощи, так как практически не знаком с линуксом а на других форумах народ молчит категорически.

Сгенерил ядро и rootfs для AT91SAM9260. Прошил в датафлэш Bootstrap и Uboot. С помощью Uboot гружу по сети ядро и rootfs. Все загружается и стартует. Вся эта кухня крутится в озу.Стоит задача хранить логи. Остановился на jffs2 для датафлэш. Сгенерил пробную jffs2 и упаковал в файл-имидж. На RedHat попробовал:

mkdir mnt
modprobe mtdram total_size=24576 erase_size=128
modprobe mtdblock
dd if=image.jffs2 of=/dev/mtdblock0
mount -t jffs2 /dev/mtdblock0 mnt

Все работает.

Вопрос такой: если я прошью файл-имидж(image.jffs2) в датафлэш по конкретному адресу, то как объяснить ядру, что мол там-то и там-то находится jffs2 и нужно ее подмонтировать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mdmitry
сообщение Sep 2 2009, 15:06
Сообщение #2


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Посмотрите примеры rootfs, идущие к evaluation kit AT91SAM9260-EK (Они есть на сайте atmel.). Там /tmp на RAMDISK. Скорость записи в память небольшая, проблем не будет?


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Pasa
сообщение Sep 2 2009, 16:27
Сообщение #3


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

Группа: Свой
Сообщений: 107
Регистрация: 4-03-09
Из: Беларусь, Минск
Пользователь №: 45 665



Спасибо за подсказку...
Цитата(mdmitry @ Sep 2 2009, 18:36) *
Посмотрите примеры rootfs, идущие к evaluation kit AT91SAM9260-EK (Они есть на сайте atmel.). Там /tmp на RAMDISK. Скорость записи в память небольшая, проблем не будет?


К скорости записи требований нет...


http://www.atmel.com/dyn/resources/prod_do...CDROM_image.zip - примеры rootfs тут искать...я правильно понял?

Цитата(sasamy @ Sep 2 2009, 19:05) *
Нужно указать геометрию разделов ядру и работать как с обычными дисками. Самое простое - через параметры загрузки ядру указать, у меня например так
mtdparts=spi0.0-AT45DB321x:0x1080(mbs),-(kernel). Это кстати давно обсуждалось на форуме где все молчат smile.gif и если использовать в качестве корневой фс раздел то нужно блочное устройство и указывать и тип фс, например
root=/dev/mtdblock1 rootfstype=jffs2
если для логов использовать - то можно просто подмонтировать нужный раздел в нужную директорию, еще сейчас многие используют различные варианты unionfs которая позволяет сделать прозрачной запись на две фс одна из которых в ro а друга в rw смонтирована.


Планируется использовать только для логов. А rootfs пусть остается в озу... Я просто не знаю как объяснить ядру все это. Где лежат эти параметры загрузки ядра, что каждый из них означает, как их можно видоизменить....ищу инфу и не могу найти описания всей этой кухни...Может плохо или не там ищу...если можно - киньте ссылку....буду очень благодарен...уж очень тяжко как-то идет освоение линукса... smile3046.gif
Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 2 2009, 20:36
Сообщение #4


Знающий
****

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



Цитата(Pasa @ Sep 2 2009, 20:27) *
Планируется использовать только для логов. А rootfs пусть остается в озу... Я просто не знаю как объяснить ядру все это.


Код
# pwd
/home/sasa/sam9work/linux-2.6.30.4

# grep "*" -m 14 drivers/mtd/cmdlinepart.c
/*
* Read flash partition table from command line
*
* Copyright 2002 SYSGO Real-Time Solutions GmbH
*
* The format for the command line is as follows:
*
* mtdparts=<mtddef>[;<mtddef]
* <mtddef>  := <mtd-id>:<partdef>[,<partdef>]
*              where <mtd-id> is the name from the "cat /proc/mtd" command
* <partdef> := <size>[@offset][<name>][ro][lk]
* <mtd-id>  := unique name used in mapping driver/device (mtd->name)
* <size>    := standard linux memsize OR "-" to denote all remaining space
* <name>    := '(' NAME ')'


что касается параметров ядра в конфиге

Код
# grep  "MTD" .config | grep -v "is not set"
CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# Self-contained MTD device drivers
CONFIG_MTD_DATAFLASH=y
CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y

# grep  "JFFS2" .config | grep -v "is not set"
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y


Для примера

Код
# grep  "CONFIG_CMDLINE" .config
CONFIG_CMDLINE="mem=32M rootwait root=/dev/mmcblk0p1 mtdparts=spi0.0-AT45DB321x:0x10800@0x40f800(log)"


это означает что я хочу увидеть раздел в 64 кб (0х10800 / 0x420 = 0x40 = 64 - обращаю внимание - блоки в dataflash 1056 = 0x420 байт) в самом конце моей dataflash 0x420000 - 0x10800 = 0x40f800, все что до этого адреса меня не интересует - там например uboot и ядро. Корневая фс у меня на sd карте - мне так удобней smile.gif Грузимся

Код
U-Boot> tftpboot 21000000 zlinux
macb0: link up, 100Mbps full-duplex (lpa: 0xffff)
Using macb0 device
TFTP from server 192.168.0.2; our IP address is 192.168.0.136
Filename 'zlinux'.
Load address: 0x21000000
Loading: #################################################################
         ##############################
done
Bytes transferred = 1382892 (1519ec hex)
U-Boot> bootm 21000000
## Booting kernel from Legacy Image at 21000000 ...
   Image Name:   linux-2.6
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1382828 Bytes =  1.3 MB
   Load Address: 20008000
   Entry Point:  20008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

.... дальше не все интересно - буду писать только то на что обратить внимание

Код
Kernel command line: mem=32M rootwait root=/dev/mmcblk0p1 mtdparts=spi0.0-AT45DB321x:0x10800@0x40f800(log)


отлично - командная строка на месте - никто ее не поменял (например uboot)

Код
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12)
mtd_dataflash spi0.0: AT45DB321x (4224 KBytes) pagesize 528 bytes (OTP)
1 cmdlinepart partitions found on MTD device spi0.0-AT45DB321x
Creating 1 MTD partitions on "spi0.0-AT45DB321x":
0x00000040f800-0x000000420000 : "log"


вот и наш раздел. Логинимся, смотрим где наш раздел в устройсвах
Код
# ls -l /dev | grep mtd
crw-rw----    1 root     root      90,   0 Dec 31 17:00 mtd0
crw-rw----    1 root     root      90,   1 Dec 31 17:00 mtd0ro
brw-rw----    1 root     root      31,   0 Dec 31 17:00 mtdblock0


На месте, у меня файлы устройств создаются автоматом потому что использую mdev из состава busybox. Создались два char device - один rw другой ro и блочное устройство. Создаем пустую фс

Код
# ls -l /tmp
#
# echo "sasa" > /tmp/sasa
# ls -l /tmp
-rw-r--r--    1 root     root            5 Dec 31 17:01 sasa
# mkfs.jffs2 -d /tmp -l -p -e 0x2100 -v -n -o /root/img.jffs2
/
        f 0644         5 (       73)     0:0   sasa


Compression mode: priority
Compressors:
      none             compr: 1 blocks (5)  decompr: 0 blocks
       lzo (prio:80) - compr: 0 blocks (0/0)  decompr: 0 blocks
      zlib (prio:60) + compr: 0 blocks (0/0)  decompr: 0 blocks
     rtime (prio:50) + compr: 0 blocks (0/0)  decompr: 0 blocks
Compression errors: 0
# cp /root/img.jffs2 /dev/mtd0
#
# ls -l /mnt
# mount -t jffs2 /dev/mtdblock0 /mnt
JFFS2 write-buffering enabled buffer (528) erasesize (8448)
# ls -l /mnt
-rw-r--r--    1 root     root            5 Dec 31 17:04 sasa
# cat /mnt/sasa
sasa
# echo "pasa" > /mnt/pasa
# ls -l /mnt
-rw-r--r--    1 root     root            5 Dec 31 17:07 pasa
-rw-r--r--    1 root     root            5 Dec 31 17:04 sasa
# umount /mnt
# mount -t jffs2 /dev/mtdblock0 /mnt
JFFS2 write-buffering enabled buffer (528) erasesize (8448)
Empty flash at 0x00000078 ends at 0x00000210
# ls -l /mnt
-rw-r--r--    1 root     root            5 Dec 31 17:07 pasa
-rw-r--r--    1 root     root            5 Dec 31 17:04 sasa
#
# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.7G    311.4M      3.2G   9% /
mdev                     14.5M         0     14.5M   0% /dev
/dev/mtdblock0           64.0K     24.0K     40.0K  38% /mnt


В какой из загрузочных скриптов добавить mount -t jffs2 /dev/mtdblock0 /mnt думаю сами разберетесь smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Pasa   AT91SAM9260+Linux... как подключить jffs2 на DataFlash?   Sep 2 2009, 13:00
|- - Pasa   Спасибо огромное! Утром начну штудировать...   Sep 3 2009, 01:22
|- - Pasa   Попробовал....ничего не получилось...не создается ...   Sep 28 2009, 20:23
|- - mdmitry   Цитата(Pasa @ Sep 29 2009, 00:23) Попробо...   Sep 29 2009, 07:41
|- - Pasa   Пробовал два варианта: В ядре: CONFIG_CMDLINE=...   Sep 29 2009, 15:48
|- - sasamy   Цитата(Pasa @ Sep 29 2009, 19:48) Что дел...   Sep 29 2009, 19:31
|- - Pasa   to sasamy !!!!!! ВСЕ...   Sep 30 2009, 02:25
|- - Pasa   Некоторые итоги.... Все работает если делаю вот т...   Oct 7 2009, 01:40
|- - sasamy   Цитата(Pasa @ Oct 7 2009, 05:40) Некоторы...   Oct 10 2009, 08:37
- - sasamy   Цитата(Pasa @ Sep 2 2009, 16:00) Вопрос т...   Sep 2 2009, 15:35
- - AVR   Уважаемый господин Pasa! Нельзя ли длинные лог...   Oct 11 2009, 17:39
- - sasamy   Цитата(AVR @ Oct 11 2009, 20:39) Можно ли...   Oct 11 2009, 21:11
- - Pasa   Цитата(AVR @ Oct 11 2009, 21:09) Уважаемы...   Nov 4 2009, 15:29
- - MTh   Позволю себе внести небольшую лепту по поводу mtd ...   Nov 5 2009, 12:08


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 08:34
Рейтинг@Mail.ru


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