SVI化【2011/11/20】
開発環境の構築は終わったと思うので、これからは実際にSVI-06として動作するよう改造をしていきます。

まずは、USBのスタンダードデバイスリクエストをSVI化します。
今回のSVI-06では、USBのスタンダードデバイスリクエストはFX3のARMマイコンで行い、ベンダーデバイスリクエストをSH-2マイコンで行います。
FX3SDKにはいくつかのサンプルファームがありますが、今回はSlaveFIFOサンプルをベースにSVI化します。

SlaveFIFOサンプルは、FX3をFIFOとして使用できるようにするサンプルで接続される外部コントローラからはFIFOのように見えます。
ホストPCからUSBパケットが来たら、このFIFOがNotEmptyになり、ホストPCへUSBパケットを送信したい場合は、このFIFOがEmptyであればFIFOにパケットを書き込んであげるという感じで行います。
SlaveFIFOのサンプルは、slfifosyncというフォルダに入っており、先日すでにビルド済みなので、slfifosync.imgをダウンロードして、サンプルを動かしてみたいと思います。

ControlCenterを立ち上げて、評価ボードの電源を入れ、BootLoaderが表示されているのを確認して、slfifosync.imgをダウンロードします。
が、またほかのデバイスにFX3がびっくり付きで表示されてしまいました。
デバイスマネージャーを見ると、プロダクトIDが00F2になっています。
また、cyusb3.infを変更しなければなりません。
プロダクトID変更後ドライバー再インストールでFX3がユニバーサルシリアルバスコントローラーに移動し、びっくりも消えました。

では、ControlCenterでslfifosync版FX3デバイスに何か書いてみます。
その前にこのslfifosync版FX3デバイスがどのようなInterfaceを持っているか見てみます。
ControlCenterでConfigディスクリプタを見ることができます。
エンドポイントはIN用、OUT用でひとつずつ持っています。

まずはOUT(ホストPCー>FX3)から。
DataTransferタブに移動して、Bulk out endpoint(0x01)を選択してTransferボタンをクリックします。
NULLデータが1024バイト送信(OUT)されたみたいです。
これがちゃんとFX3に行っているのかはFX3のデバッガなどで見るしかありません。

FX3の評価ボードでは、FX3の先に外部コントローラーがいないので、外部に対してデータが出ているかはわかりません。
SVI-06では外部コントローラーにFPGAを接続しますので、実機でやるまでデバッガで確認します。
IN転送は、Bulk in endpoint(0x81)を選択してTransferボタンをクリックします。
エラーになってしまいました。
これは外部コントローラーがいないので、FX3の中でホストに送るべきデータがいないのでエラーになったのではないかと推測します。
エラーコード997の意味はわかりません。
これもデバッガですね。

ということで次回はデバッガ導入で行きたいと思います。
お楽しみに。

» 記事一覧へ戻る