SCSIとUSB

 この記事を読んで喜ぶのは、約一名かなぁ。
 以前やっていた画像認識ボートのソフト開発ですが、このボードにはなぜかSCSIインターフェースが載っかっていました。そのSCSIインターフェースにはMOをつないで、デバッグ用に画像情報を保存したり、システムの転送用に活用したりしていたのですが。
 今回、そのSCSIインターフェースにコンパクトフラッシュをつないでデータファイルのバックアップに使うようになったそうです。(以前一緒に仕事をしていた人から相談を受けました。)
 SCSIインターフェースは、指定したセクタのリードライトを行うコマンドのみを利用します。これは、USBインターフェースと全く同じなのですが。そして、アプリ側で、ディレクトリの管理やらファイルの読み書きやらを制御していました。
 これを、今回、コンパクトフラッシュに応用しようというわけです。問題となるのは、コンパクトフラッシュのメモリの仕様をいかに引き出すかですね。コンパクトフラッシュのメーカーに問い合わせて構成に関する聞き出すのが一番でしょうね。(この会社は大きいので聞き出すのは意外と簡単かな。)
 とにかく、ボードのアプリ側ですべてのファイルを管理をしています。ファイルを読むときは、ディレクトリのセクタを読んでファイルの先頭セクタを割り出し、そのセクタから指定した長さのデータを読み出していました。また書き込むときは空いているセクタを割り出してそのセクタにデータを書き込むとともに、FATのセクタを読み出して、管理データを書き込み、ディレクトリのセクタを読み出して、ファイル名などの情報を書き込む処理をしていました。
 この辺がそのまま流用できるかもしれませんね。
 それから、メディアの情報を取得するところが一番大変な気がしますね。
 メディアによって、ルートディレクトリの格納されているセクタが違ったりしますからね。とりあえず、MS-DOSのファイル管理システムであるFATを理解することが重要です。
 がんばって覚えていってほしいものですね。
 でも、彼も、結構コアな部分を担当することになったものです。大丈夫なのかな。私もメールでサポートしてあげるつもりですが、うまくいきますかねぇ。