[Armadillo:04052] Re: Armadillo-300 MTD

Takenoshita Koyo email@hidden
2009年 2月 17日 (火) 15:26:27 JST


> jffs2は、以下の指定にて設定しているのですが
>   Linux Kernel Configuration
>   File systems  --->
>    Miscellaneous filesystems  --->
>     <*> Journalling Flash File System v2 (JFFS2) support
>     (0)   JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
>     [ ]   JFFS2 support for NAND flash
>     [ ]   JFFS2 support for ECC'd NOR flash (EXPERIMENTAL)
>     [ ]   Advanced compression options for JFFS2
> 問題ないでしょうか? 
はい。

> [email@hidden (ttyAM0) ~]# flash_eraseall -j /dev/mtd5
> Erasing 64 Kibyte @ 0 --  0 % complete. Cleanmarker written at 0.
> [email@hidden (ttyAM0) ~]#
> [email@hidden (ttyAM0) ~]# mount -t jffs2 /dev/mtdblock5 /mnt/
> jffs2: Too few erase blocks (1)
> mount: Mounting /dev/mtdblock5 on /mnt failed: Invalid argument 
jffs2を構築するには、イレーズブロックが5ブロック以上必要です。

吉田さんの方法では、ドライバを修正して以下のような構成になっているとのことでした。
> [email@hidden (ttyAM0) ~]# cat /proc/mtd
> dev:    size   erasesize  name
> mtd0: 00002000 00002000 "ipl"
> mtd1: 0000e000 00002000 "bootloader"
> mtd2: 00200000 00010000 "kernel"
> mtd3: 005d0000 00010000 "userland"
> mtd4: 00010000 00002000 "config"
> mtd5: 00010000 00010000 "storage" 
storageに割り当てられている領域がイレーズサイズ1ブロック分しかないので、
> jffs2: Too few erase blocks (1)
といわれているようです。

hermit> b console=ttyAM0 mtdparts=armadillo3x0-nor:0x2000(ipl)ro,0xe000(bootloader)ro,0x200000(kernel),0x5d0000(userland),0x10000(config),-(storage)
と、カーネルパラメータを指定すると、パーティションは以下のようになります。
[email@hidden (ttyAM0) ~]# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00002000 00002000 "ipl"
mtd1: 0000e000 00002000 "bootloader"
mtd2: 00200000 00010000 "kernel"
mtd3: 005d0000 00010000 "userland"
mtd4: 00010000 00010000 "config"
mtd5: 00010000 00002000 "storage"

同じ64kB分の領域ですが、イレーズサイズ8kB × 8ブロックとなっています。

カーネルの起動ログは以下のようになります。
6 cmdlinepart partitions found on MTD device armadillo3x0-nor
armadillo3x0-nor: use cmdline partitions(6)
Creating 6 MTD partitions on "armadillo3x0-nor":
0x00000000-0x00002000 : "ipl"
0x00002000-0x00010000 : "bootloader"
0x00010000-0x00210000 : "kernel"
0x00210000-0x007e0000 : "userland"
0x007e0000-0x007f0000 : "config"
0x007f0000-0x00800000 : "storage"

以前のメールにも書きましたが、最初と最後の64kBの領域がイレーズサイズ8kB
になっています。

追記:
実は、config領域をイレーズサイズ1ブロック分にするのにも弊害があります。
flatfsdは、2ブロック以上ある場合は内容を圧縮し二重化してデータを保存します。
一方、1ブロックしかないときは、圧縮せずに保存します。
二重化した方が安心という場合は、config領域に2ブロック分確保してください。

-- 
Koyo Takenoshita



armadillo メーリングリストの案内