ソフトウェアの説明

(CQ社,インタフェース誌7月号に書いた特集の抜粋です.)

Software Stack

ソフトウェア・スタックを以降に示します.簡易版と言う考えもあって,Serial Bus Managerは最小限の機能しか持っていません.HAL(Hardware Abstraction Layer)は内部的には,BALと,CALに分離してあります.BAL(Board Abstraction Layer)はボード特有な部分を抽象化します.例えば,レジスタをメモリ空間の,どの部分に割り当てるかとか,リセット信号の発生方法などが,それに当たります.CAL(Chip set Abstraction Layer)は,チップ特有な部分を抽象化します.例えば,Bus Resetをどの様に生成するかとか,割り込みの処理などが,それに当たります.
CALを変える事によって,どのベンダのチップを使う事もできます.もっともIEEE1394では,レジスタの規定もありますし,OHCIもあり,チップに依存する部分は最低限に押さえられます.BALを変える事によって,どのようなボードデザインにも対応可能となります.


Read request for Quadlet data


DVカメラから,コンフィグレーションROMを読み込んだ様子を示します.IEEE1212の0xFFFFF0000400と0xFFFFF0000404の2個所のQuadletデータを読み込んだ様子を示します.
0xFFFFF0000404の内容が,"1394"になっているのが分かります.ブロック単位の読み込み要求も送信できますが,IEEE1394機器のすべてが,IEEE1394の定めるTransactionをすべてサポートしているとは限りません.相手の,IEEE1394機器が,当該Transactionをサポートしていない場合,Transactionは無視される場合が多いです.筆者もいくつかの機器や,いくつかのPCIボードを試してみましたが,IEEE1394が発展途中であることや,ピア・ツー・ピアを前提に開発されていて,正常な応答を得られない場合がありました.また,Bus Managerなどのインプリメント,かなり省略されているものがあります.


AV/Cコマンド

AV/CコマンドのUNITINFOコマンドをDVカメラへ送ってみました.応答を観察すると,0x300738008045が返ってきています.Opecode=0x30は正常,operand[0]の0x07も正常です.次のoperand[1]は,unit_typeの5ビットと,unitの3ビットに分割されます.opcode[1]の値は,0x38ですので,unit_typeは7となります.unit_type=7は,IEEE1394の"AV/C Digital Interface Command Set General Specification"(1394 TAのホームページからダウンロード)によると,Video Cameraと規定されています.正常に動作しているようです.operand[2]- operand[4]にはCompanyIDが入ります.


File Transfer over IEEE1394

応用として,Windows9xで,ファイル転送を,IEEE1394を使って行ってみましょう.


各社の製品との接続のテスト

手元に,いくつかのIEEE1394機器があります.これらを接続して,最終テストを行います.まず,株式会社ピクセラのPixeDVを接続してみます.PixeDVには,Adaptec社のIEEE1394ホストアダプタである,AHA-8920が添付されています.図に,接続の様子を示します.


IEEE1394ボードとCQ RISC評価Kit/Vr4300

今度は,Windowsを離れて,Embeddedで動作させてみます.EmbeddedボードにはCQ出版社の「CQ RISC評価Kit/Vr4300」を使いました.
CPUがVr4300ですが,ここで開発したプログラムを他のCPUへ変更するのは簡単です.事実,今回作成したプログラムを「CQ RISC評価Kit/SH-3」でリコンパイルしてみましたが,問題なくコンパイルできました.CPUより,メモリマップ等,ボードに対する依存の方が大きいです.インタフェース部が,FPGAになっていますので,自分でで作り直せば,CPUを変えるのは簡単です.
 図に環境を示します.パソコンにディバッガなどをインストールし,シリアルケーブルでVr4300ボードに接続します.Vr4300に,2階建てで簡易ML-Iボードを接続してあります.インタフェースはPC104を使います.その簡易ML-IボードからIEEE1394ケーブルで松下電器のDVカメラ,NV-DS7を接続します.


プログラムリスト例

IEEE 1394 TOP