• 締切済み

ソースの内容を理解したいのですが・・・

今、「わかるマイコン電子工作USB機器の製作」という本の中にある、USBカーというものを作っています。 USBカーには、ストロベリー・リナックス社のEZUSB-FX2 USB ver.2 マイコンボードを使用しています。 USBカーを動かすための、サンプルプログラムがあり、今理解をしている所なのですが、ソース内でどんな動きをしているのかがよくつかめません。 以下の所に行くとどんなものか分かっていただけると思います。 http://nicotak.com/usb/index.html スクロールしていくと、 ◆7-3 USBカーの製作(DC モータの制御)という所があると思います。そこでソースファイルのダウンロードも可能です。 どなたか、このソースファイルの内容が分かる方がいましたら 教えていただけないでしょうか? もしくは、プログラムの内容を理解すためにはどのような事をしたらよいのか、理解するための方法などアドバイスしていただけると嬉しいです。

みんなの回答

  • Interest
  • ベストアンサー率31% (207/659)
回答No.3

どのCPUなのかな、と思って探してみました。 サイプレス社の、ftp://ftp.efo.ru/pub/cypress/cy7c68013a.pdf ですね。 CY7C68013A/CY7C68015A EZ-USB FX2LP™ USB Microcontroller High-Speed USB Peripheral Controller まずは、CPUというかマイコンがどういう仕組みで動くものなのか知らないとデータシートを読んでも(日本語で書いてあったとしても)意味が分からないものと思います。こればっかりは、やりながら慣れてくれとしか言えません。 > ソースの中にbulkloop.cというファイルがあったと思います。 > そのファイルの中に、たくさんの関数がありますよね? > その関数はそれぞれどんな役割があるのかが、分からないのです・・。 コメント文によると、DR_***** という名前の関数は end point 0 device request parser から呼び出される。私はUSBに関して全く知識がありませんが、ちょっとググってみたらこんなのでてきました。 http://www.necel.com/usb/ja/about_usb/USB5.html endpoint 0 というのはUSBの制御用の転送っぽいですね。で、ホストから制御用の転送があった時は、"end point 0 device request parser"が(リンク先の表にある)どのリクエストなのか見分けて、相当するDR_***** という関数(hookと表現している)を呼び出す。 続いて、ISR_**** という関数は、コメント文によると「USB割り込みのジャンプテーブルから呼び出される。」そのままですね。ジャンプテーブルは、fx2.hかfx2reg.hあたりで定義しているんじゃないかと予想します。 さらに、そのテーブルは ftp://ftp.efo.ru/pub/cypress/cy7c68013a.pdf のpage 10にある、table 3-3 にしたがって作られているんじゃないかと。あくまで推測ですが。 ちなみに、上記の推測はまったく英語を読まずにやりました。ということは、問題は英語ではなくて、USBやCPUがどのように動くのか仕組みを知らないということにあるのではないかと思います。私はUSBやこのキットのCPUについてはまったく知りませんが、他のデバイスやCPUを扱った経験から推測で「これかな?」というのを引っ張り出してきました。 習うより慣れろの世界ですから多少時間はかかりますが、「USBも英語も覚えられて俺最強!」というくらいの気持ちで取り組まれてはいかがでしょうか。

noname#29494
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。 やはり、USBやCPUの知識がまだ足りないんですかね・・。

回答No.2

ちゃんと理解するためには、最低でも回路図とマイコンのデータシートは理解してないとだめでしょうね。

noname#29494
質問者

補足

回答ありがとうございます。 >ちゃんと理解するためには、最低でも回路図とマイコンのデータシートは理解してないとだめでしょうね。 マイコンのマニュアルを読んではいるのですが、英語で・・。 なかなか理解できません・・。

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

ソース見たけど、コメントのとおりの内容しか書いてないけど? 何がどうわからないのか自体がわからないので、回答しようがないかと。 >もしくは、プログラムの内容を理解すためにはどのような事をしたらよいのか、理解するための方法などアドバイスしていただけると嬉しいです。 USBとキット自体(回路の構成、レジスタやポートの内容)を理解しないと、こういったものについては厳しいよ。

noname#29494
質問者

補足

回答ありがとうございます。 コメントは訳していたのですが、英語力が低いのか、専門知識が低いのか、コメントだけではいまいち内容がつかめませんでした・・。 >何がどうわからないのか自体がわからないので、回答しようがないかと。 ソースの中にbulkloop.cというファイルがあったと思います。 そのファイルの中に、たくさんの関数がありますよね? その関数はそれぞれどんな役割があるのかが、分からないのです・・。 あとfw.cにはmain関数があると思うんですが、何をしようとしているのかがわかりません。 2つのファイルのコメントも訳しては見ましたが、やはり分かりませんでした。 >USBとキット自体(回路の構成、レジスタやポートの内容)を理解しないと、こういったものについては厳しいよ。 マイコン自体のマニュアルみたいのも、見たりしていますがマニュアル自体も英語で・・。難しいです・・。

関連するQ&A