单板用的是am3352的芯片,cpu的usb0接了一个usb hub芯片,芯片是ALCOR的AU6254。芯片通过USB_DM和USB_DP连接到芯片的USB0。
menuconfig里配置如下:
→ Device Drivers → USB support
<*> Inventra Highspeed Dual Role Controller (TI, ADI, …)
<*> Platform Glue Layer —> (X) TI DSPS platforms
MUSB DMA mode —> TI CPPI 4.1 (AM335x)
dts中usb的配置如下:
&usb {
status = "okay";
};
&usb_ctrl_mod {
status = "okay";
};
&usb0_phy {
status = "okay";
};
&usb0 {
status = "okay";
dr_mode = "host";
};
&cppi41dma {
status = "okay";
};
kernel启动的时候有打印如下信息:
1.154909] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
[ 1.154987] 47401300.usb-phy supply vcc not found, using dummy regulator
[ 1.166291] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
[ 1.166313] musb-hdrc: MHDRC RTL version 2.0
[ 1.166322] musb-hdrc: setup fifo_mode 4
[ 1.166341] musb-hdrc: 28/31 max ep, 16384/16384 memory
[ 1.166455] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
[ 1.173014] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1
[ 1.181415] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.188540] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.196090] usb usb1: Product: MUSB HDRC host driver
[ 1.201269] usb usb1: Manufacturer: Linux 3.14.26-dirty musb-hcd
[ 1.207545] usb usb1: SerialNumber: musb-hdrc.0.auto
[ 1.213732] hub 1-0:1.0: USB hub found
[ 1.217716] hub 1-0:1.0: 1 port detected
从打印来看,感觉是识别到了usb hub,但是插入u盘就是没有反应。
也没有看到任何的错误信息。不知道改如何继续调试这个问题。
内核的版本是3.14
此外,我更换另外一个内核镜像,暂且称之为“镜像ok”(仅更换了镜像,没有更换设备树、uboot、文件系统等等)。u盘就可以识别到。
附件是"镜像ok"的内核启动的dmesg和我自己编译的无法识别u盘的内核的dmesg(暂称之为“镜像ng”)。对比了两者,也没有看到相关的差异。请高手帮忙分析下。或者能给兄弟指条明路,看下一步改怎么去分析。
谢谢!
Steven Liu1:
一般来说,使用原始的正常配置,应该就可以正常的让HUB工作了。
你是修改了什么具体的配置吗?接在的USB端口上,是否有做host的模式设置呢?还有硬件上VBUS和USB_ID是否有做过相应的处理了?