Linux Kernelバージョン 2.4.16-rmk2-armadillo-2 から、Linux上からのオンボードFlash読み書きをサポートしました。
バイナリ提供イメージは、以下の組み合わせで使用することができます。
カーネル: (→ダウンロード)
-
Image_flash-1.1.2.gz
- drivers/mtd/map/mtd-armadilloにflashサポートを追加した2.4.16-rmk2-armadillo-2を使用
ユーザランド: (→ダウンロード)
-
initrd-1.1.2.img.gz (オンボードFlash起動の場合)
rootimage-1.1.2.tgz (コンパクトフラッシュ起動の場合)
- /dev/mtd2~5、及び/dev/mtdblock2~5の各ノードを追加
今まで使用していたカーネル/ユーザランドを上記に置き換えてください。
※オンボードFlash上のカーネル/ユーザランドの書き換え方などは、ソフトウェアマニュアルを参照してください。
LinuxからのオンボードFlash使用
オンボードFlashは、4つのパーティションに分割して扱われます。
|
|||||||||||||||
オンボードFlashのパーティション |
それぞれのパーティションは、対応するデバイスノード(例えば2つめのFreeパーティションをブロックデバイスとして扱うなら/dev/mtdblock3)を使用して、ユーザ空間上から使用することができます。
※各パーティションの対応は、/proc/mtdから参照することができます。
[armadillo ~]# <span class="input">cat /proc/mtd</span> dev: size erasesize name mtd0: 0000c000 00001000 "SRAM" mtd1: 00000080 00000080 "BootROM" mtd2: 00008000 00002000 "Flash/Bootloader" mtd3: 00008000 00002000 "Flash/Free" mtd4: 00170000 00010000 "Flash/KernelImage" mtd5: 00280000 00010000 "Flash/Initrd"
Examaple: Freeパーティションをファイルシステムとして使用する
読み書き可能なFreeパーティションをMINIXファイルシステムでフォーマットし、使用してみます。
※Freeパーティションは32KBしかないため、Ext2などのファイルシステムでは最小サイズ未満となり使用できません。
まず、FreeパーティションをMINIXファイルシステムとしてフォーマットします。
[armadillo ~]# <span class="input">mkfs.minix /dev/mtdblock3</span> 32 inodes 32 blocks Firstdatazone=5 (5) Zonesize=1024 Maxsize=268966912
次に、Freeパーティションを/mntにマウントします。
[armadillo ~]# <span class="input">mount -t minix /dev/mtdblock3 /mnt</span>
これで、Freeパーティションをファイルシステムとして読み書きすることができます。
/mnt下に任意のファイルをコピーするなどしてください。
書き込みが完了したら、アンマウントします。
[armadillo ~]# <span class="input">umount /mnt</span>
この後、リブートして再度マウントを行なってみてください。
書き込んだデータがFlash上に保存されていることが確認できます。
オンボードFlashサポートを有効にしたカーネルの作成について
カーネルソースlinux-2.4.16-rmk2-armadillo-2は、デフォルトではFlashをサポートしない設定となっています。
Flashサポートを有効とした設定を使用する場合、arch/arm/defconfigのシンボリックリンク先を変更してください。
[PC ~]$ cd linux-2.4.16-rmk2-armadillo-2 [PC ~]$ <span class="input">ln -sf `pwd`/arch/arm/def-configs/armadillo-flash `pwd`/arch/arm/defconfig</span>
以降は、通常のmakeと同様に、make menuconfig → make r など行なってください。
なお、デフォルトで読み込み専用となっているBootloader/KernelImage/Initrdの各パーティションを読み書き可能とするためのオプションを、Configに用意しています。
これを有効とするためには、make menuconfig から下記の項目をチェックしてください。
Memory Technology Devices (MTD) ---> Mapping drivers for chip access ---> <*> Armadillo mapping [*] Support for on-board flash [<span class="input">*</span>] Enable write operation on all flash partitions