2012/05/13

[lpc2388]USBメモリを挿すとソフトが動かなくなる

Interface誌のLPC2388基板を使っている。
gccからUSB Hostを使うサンプルがあり、USBメモリにファイル書き込みができることは確認した。

では、と以前作成していたFeliCa Plugのソフトに混ぜ込んだ。
困ったことに、USBメモリを挿すと動かなくなる。


やっているのは、USB Host機能の初期化だけだ。
初期化の先で何をやっているかは把握していない・・・。

まず、初期化とUSBメモリの読み込みをすると、動かなくなった。
では初期化だけならいいだろう、と読み込みを外すと、動作した。
そこまではいい。
問題は、その動いた状態でUSBメモリを挿すと動作がどこかで固まってしまうということだ。

アプリ側では何もしていないので、USBの割り込みハンドラが何かやっているせいだろう、とハンドラの中身をまるまる消したが、それでもだめ。
USBの初期化も消すと、問題なく動くようになる。
だから、初期化することによってUSB挿抜を検知するようになったということだ。
FIQも使ってないのに・・・なんだろう・・・

 

デバッガがやはりほしくなってきた今日この頃である。


さて、続きだ。

いろいろ削った結果、HcInterruptEnableに設定をしなければ、USBメモリを挿しても抜いても影響がないことがわかった。
やはり割込関係か。

しかし、なぜ割り込みハンドラを空にしてもだめなんだろうか?
別の割り込みハンドラが動作しているのだろうか。

 

そう思って、HcInterruptEnableレジスタの仕様を調べようとしたのだが…載ってない。
なぜだ?と思ったら、これはOHCIの仕様[pdf]らしい。
やっぱりUSBは大変だなあ、と思った次第である。

なるべく既にあるものを使って、わからんとこだけ調べようかね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。