December 26, 2013

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

もうちょっとすごいロガーの亜種として、記録媒体を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$公式情報が参考になりました。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/899
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。