FX2LPへファームの自前転送できました(と、思います)。
0xa0というベンダリクエストでひたすら書き込みをするだけみたいです。
書き込みはデータはusbsnoopyというソフトで一度ログをとって抜き出しました。
前半部に転送のオマジナイがあって、後半はHexファイルの中身そのものでした。
以上です。
Hirataさん、情報ありがとうございます。
こちらはまだ試していないのですが、やはり睨んだとおりのようでしたね。あと、usbsnoopyという便利なソフトの紹介ありがとうございます。是非解析の際には使ってみようと思います。
LP でも ezusb.sys が使えました。
4バイトをEZ-USBに転送して、EZ-USBの方で32ビットの
変数にするためのよい方法をご存じないですか?
s32 dummy;
dummy = EP1OUT[0] * 0x1000000 + EP1OUT[1] * 0x1000 + ...
ではうまくいかなくて、かなり無理したプログラムになってしまいました。
以上、よろしくお願いいたします。
>TeamKNOxさん
報告ありがとうございます。
すいません、少し懐疑的なのですが、LPでもezusb.sysが使えるのでしょうか? FX2 LPとFX2では、Cypressから付いてくるSDKの中のコンソールがそれぞれCyConsole(CyUSB.sysベース)とEZ-USB Contorol(ezusb.sysベース)で違うので、FX2 LPではezusb.sysでドライブできないものかと思っていました。特別な操作が必要なのでしょうか? 是非認識までの状況等を詳しく教えていただけると大変ありがたいです。
8bit4つを32bitにする件ですが、僕はビットシフト演算を利用しています。こんなコードでどうでしょうか。やはり強引さはかわらないと思いますが。
s32 dummy = EP1OUT[0];
dummy <<= 8; dummy |= EP1OUT[1];
dummy <<= 8; dummy |= EP1OUT[2];
dummy <<= 8; dummy |= EP1OUT[3];
もう少しいい方法を思いつきました。こちらの方が高速です。
typedef union{
s32 lw_access; //32ビットアクセス
struct{
u8 b0, b1, b2, b3;
} b_access; //8ビットアクセス
} lw_b4_t;
lw_b4_t dummy;
dummy.b_access.b0 = EP1OUT[0];
dummy.b_access.b1 = EP1OUT[1];
dummy.b_access.b2 = EP1OUT[2];
dummy.b_access.b3 = EP1OUT[3];
これでdummy.lw_accessでs32で取り出せます。
こんばんは
さっそく、ご回答いただきまして本当にありがとうございました。
当方の環境では
s32 dummy = EP1OUT[0];
dummy <<= 8; dummy |= EP1OUT[1];
dummy <<= 8; dummy |= EP1OUT[2];
dummy <<= 8; dummy |= EP1OUT[3];
のみ動作しました。
LP での ezusb.sys ドライバ下での動作ですが、
俺自身はCypressの開発環境(コンソール系)は
入れていません。
ezusb.sys を適当なフォルダ にコピーする
VBSスクリプトを走らせています。
オプチから miniFX2 が来たのですが、
上記の環境から何もすることなく、開発・実行が
出来ています。
CyUsb の環境も構築しましたが、ezusb.sys より
遅いので使っていません。
ファームのダウンロード&再スタート時にRenumで
こける不具合もありました。
64ビット化の暁には再度、挑戦しようと思います。
釈迦に説法だとは思いますが、当方のフレームワークもご笑覧ください。
http://www.teamknox.com/usb/USBj.html#sub2
ホストソフトからファームをダウンロード出来るようになっています。
以上、よろしくお願いいたします。