我在DM368 Uboot中使用了U盘升级功能, 但发现Uboot对部分U盘的支持不太好, 会出现READ_CAP ERROR, 打印的信息如下:
i=0
i=1
USB Mass Storage device detected
Transport: Bulk/Bulk/Bulk
Endpoints In 1 Out 2 Int 0
Get Max LUN -> len = 1, result = 0
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
address 2
COMMAND phase
DATA phase
STATUS phase
inquiry returns 0
ISO Vers 6, Response Data 2
COMMAND phase
STATUS phase
FAILED
COMMAND phase
DATA phase
STATUS phase
!CSWSIGNATURE
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
Request Sense returned 42 01 95
COMMAND phase
STATUS phase
!Tag
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
COMMAND phase
DATA phase
STATUS phase
Request Sense returned 42 00 6B
COMMAND phase
STATUS phase
COMMAND phase
DATA phase
STATUS phase
!CSWSIGNATURE
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
COMMAND phase
DATA phase
STATUS phase
!CSWSIGNATURE
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
COMMAND phase
DATA phase
STATUS phase
!CSWSIGNATURE
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
COMMAND phase
DATA phase
STATUS phase
!CSWSIGNATURE
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
READ_CAP ERROR
Read Capacity returns: 0xb40, 0x200
Capacity = 0x400b0001, blocksz = 0x20000
address 2
partype: 0
usb_read: dev 0
COMMAND phase
STATUS phase
usb_read: dev 0 startblk 0, blccnt 1 buffer 87e43b90
read10: start 0 blocks 1
COMMAND phase
DATA phase
DATA:stall
STATUS phase
STATUS:stall
STATUS phase
!CSWSIGNATURE
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
Read ERROR
COMMAND phase
DATA phase
STATUS phase
!CSWSIGNATURE
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
Request Sense returned 42 00 0C
read10: start 0 blocks 1
COMMAND phase
DATA phase
对于支持的U盘, 打印信息如下:
i=0
i=1
USB Mass Storage device detected
Transport: Bulk/Bulk/Bulk
Endpoints In 2 Out 1 Int 0
Get Max LUN -> len = 1, result = 0
BBB_reset
BBB_reset result 0: status 0 reset
BBB_reset result 0: status 0 clearing IN endpoint
BBB_reset result 0: status 0 clearing OUT endpoint
BBB_reset done
address 2
COMMAND phase
DATA phase
STATUS phase
inquiry returns 0
ISO Vers 2, Response Data 2
COMMAND phase
STATUS phase
FAILED
COMMAND phase
DATA phase
STATUS phase
Request Sense returned 06 28 00
COMMAND phase
STATUS phase
COMMAND phase
DATA phase
STATUS phase
Read Capacity returns: 0xffbff300, 0x20000
Capacity = 0xf3c000, blocksz = 0x200
address 2
partype: 0
usb_read: dev 0
COMMAND phase
STATUS phase
usb_read: dev 0 startblk 0, blccnt 1 buffer 87e43b90
read10: start 0 blocks 1
COMMAND phase
DATA phase
STATUS phase
usb_read: end startblk 1, blccnt 1 buffer 87e43d90
partype: 2
i=2
1 Storage Device(s) found
到网上查了一下, 但没有找到解决办法, 目前已对Uboot中的musb_hcd.c的MUSB_CSR0_H_DIS_PING进行了屏蔽, 因为DM368没有用到该位, 但U盘识别不到的问题依然存在, 请问一下是什么原因导致READ_CAP ERROR(进入内核后识别同样的U盘是可以的)? 谢谢.