[問題] USB mass storage driver
各位好,
小弟我最近在弄 android 的 mass storage driver,遇到點問題想請教一下。
狀況就是當我的 device 透過 usb 接上 PC 後(windows xp),
裝置管理員那邊雖然有認到我的 device 是 usb mass storage。
但總是伴隨著一個討人厭的黃色驚嘆號,點兩下進去看一下"裝置狀態"會顯示
這個裝置無法啟動。(代碼10)
請按【疑難排解】啟動疑難排解功能。
我看 driver 狀態都是卡在等待 CBW,就是 get_next_command 函式裡的
while(bh->state != BUF_STATE_FULL) {
rc = sleep_thread(fsg);
...略
}
到這邊我以為是 PC 這邊沒先發 CBW 給 Device 所以才卡住,
接著我到網路上抓了一套叫 snoopypro-0.22 的 usb sniffer 裝在 PC 這邊
目的是看 PC 端 usb packets 的狀況。
結果我都只聽得到26個 packets,前20個都很正常,就是在抓 configuration 還有
設定 interface 之類的,但在第21個開始有問題,我接到的是這樣的:
URB Header (length: 72)
SequnceNumber: 11
Function: 0009 (BULK_OR_INTERRUPT_TRANSFER)
TransferFlags: 0x00000000
TransferBuffer: 0x0000001f (31) length
0000: 55 53 42 43 38 21 aa 84 24 00 00 00 80 00 06 12
0010: 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00
第22個長這樣:
URB Header (length: 72)
SequenceNumber: 11
Function: 0009 (BULK_OR_INTERRUPT_TRANSFER)
TransferFlags: 0x00000000
No TransferBuffer
接下來的第23,25個封包和第21個一樣,24,26和22一樣。然後就沒反應了。
在 snoopypro 裡的 Result 欄位裡,第22,24,26個封包都顯示0xc0000011。
看起來應該是顯示傳輸錯誤,是嗎?
最後我請問各位對於這個狀況有什麼想法可以建議的嗎?
就是看起來 Host 有送 CBW,但 device 這邊又遲遲等不到…
另外在 snoopypro 裡有 out up 和 out down…up 和 down 是什麼意思?
21,23,25 的 Dir 欄位顯示的是 out down。
22,24,26 的 Dir 欄位顯示的是 out up。
================================================================
另外我要補充的是我的 adb function 是 work 的。
可以透過 usb 使用 adb 下指令,push 或是 pull 檔案。
================================================================
任何資訊都好~或是有什麼幫助我 debug 的資訊都行~
感謝各位~~
================================================================
以下是我用 USB View 抓到的資訊:
Device Descriptor:
bcdUSB: 0x0200
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 (64)
idVendor: 0x18D1
idProduct: 0x0001
bcdDevice: 0x0226
iManufacturer: 0x01
0x0409: "MyDevice"
iProduct: 0x02
0x0409: "UMS"
iSerialNumber: 0x03
0x0409: "0123456789ABCDEF"
bNumConfigurations: 0x01
ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Full
Device Address: 0x03
Open Pipes: 2
Endpoint Descriptor:
bEndpointAddress: 0x81
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x00
Endpoint Descriptor:
bEndpointAddress: 0x02
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x01
Configuration Descriptor:
wTotalLength: 0x0020
bNumInterfaces: 0x01
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0xE0 (Bus Powered Self Powered Remote Wakeup)
MaxPower: 0xFA (500 Ma)
Interface Descriptor:
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x08
bInterfaceSubClass: 0x06
bInterfaceProtocol: 0x50
iInterface: 0x00
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.136.127
推
01/07 23:38, , 1F
01/07 23:38, 1F
推
01/07 23:45, , 2F
01/07 23:45, 2F
→
01/07 23:46, , 3F
01/07 23:46, 3F
→
01/08 00:16, , 4F
01/08 00:16, 4F
→
01/08 00:16, , 5F
01/08 00:16, 5F
→
01/08 19:12, , 6F
01/08 19:12, 6F
→
01/08 19:13, , 7F
01/08 19:13, 7F
→
01/08 19:14, , 8F
01/08 19:14, 8F
→
01/08 19:15, , 9F
01/08 19:15, 9F
→
01/08 19:16, , 10F
01/08 19:16, 10F
→
01/08 19:16, , 11F
01/08 19:16, 11F
推
01/08 21:09, , 12F
01/08 21:09, 12F
推
01/09 08:19, , 13F
01/09 08:19, 13F
→
01/09 08:21, , 14F
01/09 08:21, 14F
→
01/09 08:23, , 15F
01/09 08:23, 15F
推
01/09 08:26, , 16F
01/09 08:26, 16F
→
01/09 08:29, , 17F
01/09 08:29, 17F
→
01/10 08:01, , 18F
01/10 08:01, 18F
→
01/10 08:01, , 19F
01/10 08:01, 19F
→
01/10 08:04, , 20F
01/10 08:04, 20F
→
01/10 08:06, , 21F
01/10 08:06, 21F
※ 編輯: bombilla 來自: 60.251.136.127 (01/10 08:18)
→
01/10 08:18, , 22F
01/10 08:18, 22F
→
01/10 08:19, , 23F
01/10 08:19, 23F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):