前回、AndroidのADKを試しに動かして見るべく、ADKコンパチボードを作ったりしていたが、コンパチとかちょっと違う実装をするとなると、やはりUSBホストコントローラの事がよく分かっていないといけない。これまでUSBって仕様が複雑でどうも分からんとずっと思っていた(今もそれは変わらないのだが。。)
少し調べると、USBホスト側のチップ仕様として、compaqやMS,NSが決めたOHCI(Open Host Controller Interface)仕様と、Interlが決めたUHCI(Universal Host Controller Interface)、EHCI(Enhanced Host Controller Interface)があるらしい。SHやNXP(ARM)に搭載されているUSBホストコントローラはOHCIに準拠しているそうで、OHCIのドライバをどこかから手に入れればUSBホストを実装することが可能。
というわけで、、勉強の順番として、まずは、OHCIの仕様を理解して、次に、OHCIのドライバを入手して、ドライバのAPIを叩きながら、USBデバイスとどう通信できるか?を理解することになる。。
OHCIの仕様書のDLと、OHCIの仕様をかなり解説してくれている、「CQ出版の組み込み機器へのUSBホスト実装技法」を入手したので、ボチボチとOHCIの理解を進める予定。
"USBホスト実装技法"によると、、OHCIのドライバとして、WASABIやmini-USBHostSTR等があるようだ。NXPでも汎用ドライバがあるような。。
■参考URL
USB仕様書DLページ(OHCI)
http://h18000.www1.hp.com/productinfo/development/openhci.html
ARM用の汎用ライブラリ? CMSIS
http://www.onarm.com/