/dev/mtd?と/dev/mtdblock?と微妙に似て非なる2つのものがでてきたので、ちょっと調べた内容についてメモ。
参考リンクは以下
デバイスドライバー以下http://www.ibm.com/developerworks/jp/linux/library/l-embdev.html
MTDドライバーは、Linuxで、とくに組み込み環境用として開発されてきている新しいクラスのドライバーです。従来のブロック・デバイス・ドライバーと比較してMTDドライバーを利用することの主な利点は、MTDドライバーがとくにフラッシュ・ベースのデバイス用として設計されている点です。したがって、セクター単位の消去や読み書きに関して、サポートや管理やインターフェースが従来よりも良くなっています。どうも、デバイスにはセクター単位で データにアクセスするデバイス(HDDとか)(=ブロックデバイス)に対して、もっと細かい単位でデータにアクセスするデバイス(フラッシュメモリとか)(=キャラクタデバイスというらしい)がある。
で、フラッシュメモリが対象になる場合に、/dev/mtd?の方はアクセスする単位を細かいデータ単位(=キャラクタ?)で取り扱えるのに対して、/dev/mtdblock?の方は既存のブロックデバイスであるかのように取り扱えるというような違いかな?MTD_CHAR
には、フラッシュのキャラクタを直接アクセスする機能があるのに対して、MTD_BLOCK
は、フラッシュを通常の (IDEディスクのような) ブロック・デバイスとして取り扱い、その上にファイルシステムを作成できるようにしています。MTD_CHAR
に関係付けられるデバイスは /dev/mtd0、mtd1、mtd2 (など) で、MTD_BLOCK
に関係付けられるデバイスは /dev/mtdblock0、mtdblock1 (など) です。MTD_BLOCK
デバイスは、ブロック・デバイスに似せたエミュレーションを行いますので、多くの場合、このエミュレーションの上にFTLやJFFS2のようなファイルシステムを作成すればよいでしょう。
というのを踏まえて参考にしたサイトを見ると、
NANDに直アクセスする場合
#/usr/sbin/flash_eraseall -j /dev/mtd2
#/usr/sbin/nandwrite -p /dev/mtd2 /ubuntu-9.0.5.Release.jffs2
となっていて、マウントする場合は
#mount -t jffs2 /dev/mtdblock2 /mnt1
と使い分けられているわけか。
なんとなく、わかったような気になったよーな気がする。
0 件のコメント:
コメントを投稿