はじめに

 フラッシュメモリカードを使ったMP3プレーヤやディジタルスチルカメラをはじめ,最近ではコンパクトフラッシュやスマートメディアのスロットをもったプリンタも存在しています.これらの組み込み機器には,間違いなくファイルシステムが搭載されています.  ここでは組み込み機器とファイルシステムについて,いくつかの方面から考察してみます.

Prologue 1.組み込み機器でファイルシステムが必要な場面

● メディアを介してデータのやり取りを行う

 たんにパラメータテーブルとして必要というのであれば,テーブルサイズが小さい場合ならプログラムソース中に一緒に入れてしまうのが簡単です.しかし,パラメータテーブルを変更した場合は,コンパイルからやり直さなければならず,手間がかかります.

 ある程度サイズが大きい場合なら,プログラムとは別個にデータファイルを作成し,プログラムをROM化するときにROMの特定のアドレスに配置されるようプログラムのROM化ファイルと連結して,ROMを焼けばよいでしょう.プログラム中ではそのアドレスをポインタとして保持し,ROM内のデータテーブルをアクセスできます.しかし,リンカが自動的に配置アドレスを計算してくれるというわけではないので,データテーブルのアドレスがずれたりするとたいへんです(スクリプトなどを駆使すれば可能なコンパイラもある?).

 いずれにせよ,これらの問題は開発時に気をつければよい話なので,たんなるパラメータテーブルであれば,ターゲットにファイルシステムを載せる必要はあまりないでしょう.

 では,どんなときにファイルシステムが必要なのでしょうか? やはり一番の目的は,自分とは別のシステムと,記録媒体(メディア)を介してデータのやり取りを行う場合でしょう.

 メディアに記録されたファイルにアクセスするには,ファイルフォーマットを正しく理解する必要があります.人間同士の会話や,ネットワークにおける通信プロトコルと同様で,ある規格や約束事を理解し,それを守らなければ,他のシステムと情報をやり取りすることはできません(図1).

〔図1〕お互いのファイルフォーマットが一致しないとやり取りできない

● 物理フォーマットと論理フォーマット

 ファイルをやり取りする場合,根本的に記録メディアが異なるのでは話になりません.同じ12cmの光ディスクとはいえ,CD-ROMとDVD-ROMでは物理フォーマットがまったく異なります(ただし,現実的には一般的にDVD-ROMドライブはCD-ROMを読めるので,CD-ROM→DVD-ROMドライブの方向では情報伝達は可能).

 では,物理フォーマットが合っていればそれだけでよいのでしょうか? たとえば,「このフロッピーディスクの一番頭のセクタから順番にデータを書き込んであるから……」と言われてディスクを渡されたら,あなたはどうしますか?

 たしかに,渡されたメディアは3.5インチ1.44Mバイトの2HDフォーマットですし,PCにはフロッピーディスクドライブが接続されているので,物理的にはメディアを読み込むことは可能です.しかし,一番頭のセクタからデータがベタ書きされているといわれても,普通にWindowsが起動しているだけのPCでは,そのままではデータを取り出すことはできません.この場合,フロッピーディスク用のBIOSに直接アクセスして,セクタ単位で読み出しを行わなければなりません.そのための専用プログラムを作成する必要があります.

 ちなみに筆者は,x86系(要はPC/AT互換機)のBIOSやファームウェア開発を生業としているので,「めんどくせぇ〜ことしてくれるなぁ……」とぶつぶつ文句をいいながらでも,おもむろにSYMDEB.EXE(!)を立ち上げてさっさとセクタを読み出し,HDD上にファイルとして保存し直せますが,一般の人がこのようなベタ書きフロッピーディスクを手渡されても,途方に暮れてしまうだけでしょう.

 このように,物理フォーマットは合っていて,論理フォーマットのレベルで合っていない場合には,アクセスするための専用プログラムやドライバを開発することで対処することが可能です.しかし,このような専用プログラムやドライバが必要なのでは,汎用性が欠けてしまいます.

 専用プログラムやドライバをインストールしなくても,標準の状態で読み書きできる論理フォーマットとなると,やはりFAT系フォーマットが一番有力となるでしょう.

● あえてフォーマットを変える場合も

 しかし,世の中にはセキュリティやプロテクトの関係から,あえてフォーマットを変えている場合もあります.たとえば,MP3プレーヤの中には,メディアとしてスマートメディアなどの標準的に普及しているメディアを使うものの,論理フォーマットに独自のファイルフォーマットを採用することで,そのメディアに記録したMP3データを,PCなどから読み出せないようにしているものも存在します.MP3ファイルの著作権問題に対処するための処置です.

 このあたりは,そのシステムの使用環境なども考慮しながら,十分に考える必要があります.

● 内蔵するなら独自フォーマットも

 フロッピーディスクやフラッシュメモリカードなどは,取り外し可能なリムーバブル媒体です.しかし,HDDは一般的に機器に組み込んで使用します.最近では,HDDを内蔵したハードディスクビデオレコーダなどが発売されていますが,組み込み機器でHDDを使う場合には,HDDを独自のフォーマットで使う場合もあるでしょう.

 例で説明したハードディスクビデオレコーダなどは,音と映像をできるだけ途切らせずにデータ転送できるのが大前提なので,ヘッドのシークが多発するようなファイルシステムはいただけません.内部でキャリブレーションが発生しても転送が中断することが少ないHDDといったような,ハードウェア的な工夫のほかに,少しでも途切れなくデータ転送が行えるようなファイルシステムレベルの工夫も組み込まれているはずです.

● 仕様をフル実装する必要はあるか

 第3章では,CD-ROMのファイルフォーマットについて解説しています.読み出し専用のメディアであるがゆえに,ファイルは連続して格納されていることがわかっているので,たんに特定のファイルをメモリ上に読み込むだけなら,CD-ROMのISO9960の仕様をすべて理解する必要はありません.

 ボリュームディスクリプタからルートディレクトリを探し,ディレクトリリンクをたどって目的のファイルを見つけたら,ファイルが格納されているセクタからファイルサイズ分だけセクタを読み出せばよいのです.セクタの読み出しルーチンと,ボリュームディスクリプタやディレクトリレコードの解析ルーチン程度を用意するだけで,比較的容易に作成できるでしょう.

 さらにCD-Rにファイルを書き込む際,「ルートディレクトリに格納すること」という条件を付けてもよいのであれば,さらにプログラムは簡単になるでしょう.

 このように組み込み機器は,用途や利用者が限定される,または限定できる場合が多いので,苦労して汎用性の高いファイルシステムの仕様をフルに実装する必要はなく,ある程度機能を限定/制限しても使える場合があるのです.


Prologue

1.組み込み機器でファイルシステムが必要な場面
2.組み込み機器におけるファイルシステム実装のいろいろ
コラム 仮想的にストレージを実現する方法

第1章  ディスクの構造とパーティション情報の基礎知識

1.ディスク装置の基礎知識
2.PCのパーティションテーブル


7月号特集トップページへ戻る


Copyright 2001 菅原尚伸