« MITOUJTAG BASICでAVNETのSpartan-6 LX9 Microboardを試してみた | トップページ | SATAの実効転送速度の測定 »

2011.09.07

Serial ATAのIPコアをUSBでコントロールできるようにした

SATAのIPコアを2週間ほど前から開発しているのですが、ようやく、実用的な何かの形になってきました。

次の写真のように、EXPARTAN-6TにSATAのHDDとUSBをつなぎますと、
Satahddexpartan

パソコン上の制御ソフトから、SATAのコマンドを自由に発行することができるようになって、SATAのハードディスクをいろいろ操作できます。

 「パソコン →USB2.0 →EZ-USB FX2 → FPGA(XC6SLX45T) → SATA HDD」
という経路でつながっています。
現在、XC6SLX45TのSLICEの8%ほどを使用しています。

SATAのロジックやステートマシンだけならそれほどSLICEを食わなかった(せいぜいFPGA全体の5%くらい)のですが、セクタ番号やシリンダ番号などを格納するレジスタで、ものすごく消費したようです。


さて、専用のソフト(開発中)をつなげて、この怪しげな装置でHDDのDevice IDコードを読み出してみます。
Dump_idcode_2

何かが読めているではないですか!!

物の本によると、Device IDは512バイトあって、シリアル番号とディスクのタイプがそれぞれ20バイト目と54バイト目から書かれています。次のように解読できました。
 Disk S/N =" JP1572JE03PPKK"
 Disk Type="Hitachi HDS721050CLA362
上の写真で、ラベルに印刷されているものと見比べて見ると一致しています。
他にも論理シリンダ数とか、○○をサポート、などといった情報がDevice IDには格納されているようです。

セクタ1を読み出してみると、これはMBRだったようです。
Dump_mbr

ブートコードらしきものと、パーティションテーブルが書かれているのがわかります。
このように、USBから好き勝手なSATAコマンドを発行して、返ってくるデータを見ることができるようになりました。セクタライトは怖いのでまだやっていませんが、きっとできるでしょう。

SATAのCD-ROMは何故かアクセスできないようです。プロトコル上何か足りないものがあるのかもしれません。
このサンプルアプリは、近いうちにダウンロードできるようにしようと思います。

|

« MITOUJTAG BASICでAVNETのSpartan-6 LX9 Microboardを試してみた | トップページ | SATAの実効転送速度の測定 »

コメント

>SATAのCD-ROMは何故かアクセスできないようです。
ATAPIデバイスは、ATAデバイスとはコマンドが違います。
Identify Deviceコマンドも、ATA用とATAPI用があります。
セクタリードも、ATAPI用のプロトコルが決まってます。

投稿: 名無しさん | 2011.09.13 00:15

コメントを書く



(ウェブ上には掲載しません)




« MITOUJTAG BASICでAVNETのSpartan-6 LX9 Microboardを試してみた | トップページ | SATAの実効転送速度の測定 »