生データをファイルとして読み込む

もうちょっとすごいロガーの亜種として、記録媒体をMicroSD以外の、例えばSPI Flashなどに換える計画があるのですが、その記録媒体をどのようにハンドリングすれば効果的に使えるか、ということを考えてみました。その一つのアイデアとして、記録媒体には生データしか保存せず、読みだすときにPC等からファイルシステム上のファイルとして見える方法を考えてみました。この方法なら、保存データの最大化、かつ、データの効率的な取得の両立が可能になると思われます。

そこで読みだす時にファイルとして見えるための情報を仮想的に生成するテストコードを書いてみました。FAT16ファイルシステムで、約128MBの保存領域が単一のファイルlog.datとして見えるようにしてあります。検証はimage_generator.cによって生成した128MBディスクイメージを仮想ディスク(vhd)としてWindowsでマウントできることで確認しました。

fat_file_system.png

図でいうとオレンジの部分にあたる、Master boot record (MBR)の1セクタ、および FAT16ファイルシステムに関わる BIOS parameter block (BPB)、File allocation table (FAT)、Directory Entriesの3種複数セクタを、diskio.cのdevice_read_special関数が自動生成しています。それ以外の部分はdevice_read()関数にオフセット部分を引いて問い合わせるようにしました。

本検討をするにあたり下記の情報が大変参考になりました。ありがとうございます。

また検証にあたっては、VirtualBoxのディスクツールをイメージからvhd形式に変換するのに使いました(VBoxManage.exe convertdd in.raw out.vhd --format VHD)。WindowsでのマウントはM$公式情報が参考になりました。

December 26, 2013 23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

コメントする