OMAP3530-mini调试笔记(3)——USB不能正常工作的根本原因找到了

不是硬件问题,果然还是内核的问题。当然,虽然是内核的缺陷,也完全不用改内核源码,只要配置一下内核选项就好了。

对比了瑞泰的DEMO内核和我自己的内核,发现了一个重要的区别。

这是他的版本:

Linux version 2.6.28-icetek (davinci@davinci-desktop) (gcc version 4.2.1 (CodeSourcery Sourcery G++ Lite 2007q3-51)) #2 Thu Jul 30 13:37:22 CST 2009

他的启动日志里面:

twl4030_usb twl4030_usb: Initialized TWL4030 USB module
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
musb_hdrc: version 6.0, musb-dma, host, debug=0
musb_hdrc: USB Host mode controller at d80ab000 using DMA, IRQ 92
musb_hdrc musb_hdrc: MUSB HDRC host driver
musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: MUSB HDRC host driver
usb usb1: Manufacturer: Linux 2.6.28-icetek musb-hcd
usb usb1: SerialNumber: musb_hdrc
regulator: VMMC1: 1850 <--> 3150 mV normal standby
regulator: VDAC: 1800 mV normal standby
regulator: VUSB1V5: 1500 mV normal standby
regulator: VUSB1V8: 1800 mV normal standby
regulator: VUSB3V1: 3100 mV normal standby
regulator: VSIM: 1800 <--> 3000 mV normal standby

而我的版本:

Linux version 2.6.28-icetek (root@dolphi-dev) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 Sat Feb 23 12:57:40 CST 2013

(终于找到了这个版本的源码)

启动日志里面:

twl4030_usb twl4030_usb: Initialized TWL4030 USB module
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
musb_hdrc: USB OTG mode controller at d80ab000 using DMA, IRQ 92
regulator: VMMC1: 1850 <--> 3150 mV normal standby
regulator: VDAC: 1800 mV normal standby
regulator: VUSB1V5: 1500 mV normal standby
regulator: VUSB1V8: 1800 mV normal standby
regulator: VUSB3V1: 3100 mV normal standby
regulator: VSIM: 1800 <--> 3000 mV normal standby

可以看出来,在USB控制器的模式上,demo用的是host,而我用的是otg模式。

而且在beagle的资料上面说过,内核对otg模式的支持并不是很好。所以我之前出现的各种USB时好时坏,归其根本原因就在这里。就是要在内核配置里面指定USB控制器工作在host模式,怎么配置呢。就是在USB驱动的Driver Mode中选择USB Host模式就好啦。

从此以后,就完全不存在什么时候插USB的问题,就是什么时候插都好的。

 

posted @ 2013-02-23 15:43  欢乐小飞  阅读(2592)  评论(0编辑  收藏  举报