DM368 usb控制器作为host,插入u盘出现如下打印:
## usb 1-1: new high speed USB device using musb_hdrc and address 15
usb 1-1: Product: OnlyDisk
usb 1-1: Manufacturer: Netac
usb 1-1: SerialNumber: 30E318184697386F2DDD63E6
usb 1-1: configuration #1 chosen from 1 choice
scsi6 : SCSI emulation for USB Mass Storage devices
Vendor: Netac Model: OnlyDisk Rev: PMAP
Type: Direct-Access ANSI SCSI revision: 06
usb 1-1: reset high speed USB device using musb_hdrc and address 15
usb 1-1: reset high speed USB device using musb_hdrc and address 15
usb 1-1: device descriptor read/64, error -71
SCSI device sdb: 15212672 512-byte hdwr sectors (7789 MB)
usb 1-1: reset high speed USB device using musb_hdrc and address 15
usb 1-1: device descriptor read/all, error -71
usb 1-1: reset high speed USB device using musb_hdrc and address 15
sdb: Write Protect is off
sdb: assuming drive cache: write through
usb 1-1: reset high speed USB device using musb_hdrc and address 15
SCSI device sdb: 15212672 512-byte hdwr sectors (7789 MB)
sdb: Write Protect is off
sdb: assuming drive cache: write through
sdb:<7>usb-storage: queuecommand called
sdb1
sd 6:0:0:0: Attached scsi removable disk sdb
sd 6:0:0:0: Attached scsi generic sg0 type 0
有错误打印,但U盘可以识别到,fdisk -l 可以看到scsi设备,如下:但不知道这个错误打印是什么造成的
# fdisk -l
Disk /dev/sdb: 7788 MB, 7788888064 bytes
241 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 14942 * 512 = 7650304 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 70 1019 7086272 b Win95 FAT32
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(64, 189, 62) logical=(69, 147, 17)
Partition 1 has different physical/logical endings:
phys=(946, 240, 62) logical=(1018, 27, 42)
但往U盘拷贝数据是会出现错误,无法写入,写入方式和错误打印如下:
mount -t vfat /dev/sdb1 /mnt/sdb
cp /mnt/flash/test_file /mnt/sdb
usb 1-1: reset high speed USB device using musb_hdrc and address 15
usb 1-1: device descriptor read/64, error -71
usb 1-1: device descriptor read/64, error -71
usb 1-1: reset high speed USB device using musb_hdrc and address 15
usb 1-1: device descriptor read/8, error -71
usb 1-1: device descriptor read/8, error -71
usb 1-1: reset high speed USB device using musb_hdrc and address 15
usb 1-1: device descriptor read/8, error -71
usb 1-1: device descriptor read/8, error -71
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1072912
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1073152
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1073392
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1073632
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1073872
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1074112
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1074352
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1074592
usb 1-1: USB disconnect, address 15
sd 6:0:0:0: SCSI error: return code = 0x00070000
end_request: I/O error, dev sdb, sector 1074832
sd 6:0:0:0: SCSI error: return code = 0x00010000
end_request: I/O error, dev sdb, sector 1072896
Buffer I/O error on device sdb1, logical block 32768
lost page write due to I/O error on sdb1
sd 6:0:0:0: SCSI error: return code = 0x00010000
end_request: I/O error, dev sdb, sector 1059087
Buffer I/O error on device sdb1, logical block 18959
lost page write due to I/O error on sdb1
Buffer I/O error on device sdb1, logical block 18960
lost page write due to I/O error on sdb1
sd 6:0:0:0: SCSI error: return code = 0x00010000
end_request: I/O error, dev sdb, sector 1045278
Buffer I/O error on device sdb1, logical block 5150
lost page write due to I/O error on sdb1
Buffer I/O error on device sdb1, logical block 5151
lost page write due to I/O error on sdb1
sd 6:0:0:0: SCSI error: return code = 0x00010000
end_request: I/O error, dev sdb, sector 1040129
Buffer I/O error on device sdb1, logical block 1
lost page write due to I/O error on sdb1
usb 1-1: new high speed USB device using musb_hdrc and address 16
usb 1-1: device descriptor read/64, error -71
usb 1-1: device descriptor read/64, error -71
usb 1-1: new high speed USB device using musb_hdrc and address 17
usb 1-1: device descriptor read/64, error -71
usb 1-1: device descriptor read/64, error -71
usb 1-1: new high speed USB device using musb_hdrc and address 18
usb 1-1: device descriptor read/8, error -71
usb 1-1: device descriptor read/8, error -71
usb 1-1: new high speed USB device using musb_hdrc and address 19
usb 1-1: device descriptor read/8, error -71
usb 1-1: device descriptor read/8, error -71
请问TI的工程师,上面的错误改怎么定位,DM368使用的内核是2.6.18版本的内核,应该没有关系吧,感觉硬件上的问题吗?
该怎么定位,在线等,急
timer zhou:
有一个疑问:usb驱动代码drivers/usb/musb/davinci.c
450 if (machine_is_davinci_dm365_evm()) {451 davinci_cfg_reg(DM365_GPIO33, PINMUX_RESV);452 gpio_direction_output(33, 1); 453 }
为什么将GIO33引脚配置为GPIO模式,不应该是USBDRVVBUS模式吗,控制vbus对外接usb设备的供电应该是usb控制器自身实现的,手册上也是这么写的,
但驱动中是通过软件代码去拉高拉低gpio33引脚去控制vbus的供电。
另外我选择的是CONFIG_MACH_DAVINCI_DM368_IPNC宏,不是CONFIG_MACH_DAVINCI_DM365_EVM,所已我修改代码让驱动进入上面这段逻辑,
可以依然是上面的错误,没有变化
另外我尝试将gpio33配置为USBDRVVBUS模式也没有效果。
Chris Meng:
回复 timer zhou:
timer,
IPNC默认支持的是USB device。请参考下面链接,看看你的usb 配置是否正确?
https://developer.ridgerun.com/wiki/index.php/How_to_configure_DM365_for_USB_host,_device_and_OTG_support
另,你们usb的走线是否也严格按照数据手册上的要求来布线的?
timer zhou:
回复 Chris Meng:
Chris ,谢谢回复
IPNC已经配置配置为Host模式,插上U盘后可以识别到U盘,
VBUS是通过1k电阻上拉到5v电源,
从另外一个帖子来看,usb报错很可能VBUS供电有问题,但我们量了VBUS也基本上在5v,没什么问题
不知道还有什么定位方式?
Chris Meng:
回复 timer zhou:
Timer,
我这里遇到比较多是U盘插入的时候VBUS电压会突然下降,导致问题。你们可以用示波器的触发功能,看看这读数据的时候,电压是否有下降到4.4V的波动。
通过include/asm-generic/errno.h,我了解到错误是
#define EPROTO 71 /* Protocol error */
timer zhou:
回复 Chris Meng:
已经把VBUS接到稳压源上了,还是会出现上面的错误,能识别到U盘,但会报错usb 1-1: device descriptor read/8, error -71
往U盘写数据就一直是上面的错误,这个U盘是7G的high speed
换了一个full speed的U盘,一切正常,这是怎么回事,TI的Usb 控制器对high speed支持不好吗?
Chris Meng:
回复 timer zhou:
Timer,
DM36x可以支持high speed的u盘。
由于你的硬件在较为低速的full speed下工作正常,我建议从硬件上再看看是否有地方会影响到usb信号的质量,导致高速设备工作不正常。