TI中文支持网
TI专业的中文技术问题搜集分享网站

DM368 usb host插入U盘时出现错误,但能识别到设备,写入会出错,无法写入U盘

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信号的质量,导致高速设备工作不正常。

赞(0)
未经允许不得转载:TI中文支持网 » DM368 usb host插入U盘时出现错误,但能识别到设备,写入会出错,无法写入U盘
分享到: 更多 (0)