Chinaunix
标题:
开发板模拟u盘与PC通讯出现的问题,请各位大侠帮忙分析下
[打印本页]
作者:
sikinzen
时间:
2009-02-25 18:39
标题:
开发板模拟u盘与PC通讯出现的问题,请各位大侠帮忙分析下
各位大侠好,该问题已折腾了我好一阵子,连usb协议等资料我都看了,但还是搞不定。请指教
操作系统:linux2.6.26
硬件:s3c2440为cpu的开发板
目的:将开发板上的nandflash或内存模拟成u盘, 与PC进行通讯
问题:从开发板拷到PC没有问题,但从PC写到开发板时,只要文件比较大(一般大于100k)就会失败。
过程:
1. 移植2.6.26内核下的file_storage.c 和 s3c2410_udc.c,编译成模块并下载到开发板
2. mount -t tmpfs none /var
cd /var
dd if=/dev/zero of=img bs=1k count=4k
mkdosfs -v -F 16 -n fatdisk img
insmod /mnt/yaffs/uba/s3c2410_udc.ko
insmod /mnt/yaffs/uba/g_file_storage.ko file=img stall=1 removable=1
3. 用usb线连接PC与开发板后, PC端出现u盘符号,也可以把u盘的东西拷贝到PC,速度也满快的。但是拷数据到u盘就会出现。附件是用BUS HOUND抓到的包。请帮忙看看
个人想法:
经过对bus hound抓到的包的分析,之所以拷到开发板时出问题是因为:超时!!!
log.rar
2009-02-25 18:39 上传
点击文件名下载附件
115.12 KB, 下载次数: 178
作者:
sikinzen
时间:
2009-02-25 20:30
摘取bus hound 部分信息如下:
Device - Device ID (followed by the endpoint for USB devices)
(22) USB Mass Storage Device
(23) Linux File-Stor Gadget [ROM=0312]
.......
22.2 LEN 1f 00 00 00 31 29.3.0 2us 2009-02-25 08:36:38.501
22.2 DO 55 53 42 43 08 90 69 84 00 10 00 00 00 00 0a 2a USBC..i........* 29.4.0 1us 2009-02-25 08:36:38.501
00 00 00 00 11 00 00 08 00 00 00 00 00 00 00 ............... 29.4.16
22.2 URB 48 00 09 00 00 00 00 00 18 eb 3d 86 22 00 00 00 BULK/INT XFER 29.5.0 2us 2009-02-25 08:36:38.501
3c fa 92 86 00 00 00 00 1f 00 00 00 60 06 fd 85 29.5.16
22 IRP 06 00 24 01 a4 b4 54 a9 00 00 00 00 00 00 00 00 30.1.0 6.0ms 2009-02-25 08:36:38.507
18 90 69 84 18 90 69 84 00 00 00 00 00 00 00 00 30.1.16
22 STAK 0f 00 00 e0 fc 05 fd 85 00 00 00 00 03 00 22 00 INTERNAL IOCTL 30.2.0 3us 2009-02-25 08:36:38.507
00 00 00 00 e8 bd b1 83 00 00 00 00 aa 10 97 f7 30.2.16
22.2 LEN 00 10 00 00 4096 30.3.0 2us 2009-02-25 08:36:38.507
22.2 DO 66 61 74 64 69 73 6b 20 20 20 20 08 00 00 cd 2b fatdisk ....+ 30.4.0 1us 2009-02-25 08:36:38.507
21 ec 21 ec 00 00 cd 2b 21 ec 00 00 00 00 00 00 !.!....+!....... 30.4.16
22.2 URB 48 00 09 00 00 00 00 00 18 eb 3d 86 20 00 00 00 BULK/INT XFER 30.5.0 1us 2009-02-25 08:36:38.507
3c fa 92 86 00 00 00 00 00 10 00 00 00 00 00 00 30.5.16
23 CDB 00 00 00 00 00 00 TEST UNIT READY 31.1.0 514ms 2009-02-25 08:36:39.021
22 IRP 06 00 24 01 a4 b4 54 a9 00 00 00 00 00 00 00 00 32.1.0 9.0sc 2009-02-25 08:36:48.024
18 90 69 84 18 90 69 84 20 01 00 c0 00 00 00 00 32.1.16
22 STAK 0f 00 00 e0 fc 05 fd 85 00 00 00 00 03 00 22 00 INTERNAL IOCTL 32.2.0 5us 2009-02-25 08:36:48.024
00 00 00 00 e8 bd b1 83 00 00 00 00 74 18 97 f7 32.2.16
22.1 USTS 00 00 01 c0 canceled 32.3.0 3us 2009-02-25 08:36:48.024
22.1 URB 48 00 09 00 00 00 01 c0 18 eb 3d 86 22 00 00 00 BULK/INT XFER 32.4.0 1us 2009-02-25 08:36:48.024
1c fa 92 86 01 00 00 00 00 00 00 00 60 06 fd 85 32.4.16
23 IRP 06 00 24 01 a4 b4 54 a9 00 00 00 00 00 00 00 00 28.2.0 9us 2009-02-25 08:36:48.024
18 90 69 84 18 90 69 84 b5 00 00 c0 00 00 00 00 28.2.16
23 STAK 0f 00 04 e0 ac 84 3d 84 00 00 00 00 00 00 00 00 INTERNAL IOCTL 28.3.0 3us 2009-02-25 08:36:48.024
00 00 00 00 a0 6e 3c 86 00 00 00 00 91 8e 64 f7 28.3.16
23 SSTS 49 timeout 28.4.0 1us 2009-02-25 08:36:48.024
23 SRB 40 00 00 49 00 00 00 00 00 20 0a 12 80 00 20 40 EXEC SCSI 28.5.0 1us 2009-02-25 08:36:48.024
00 10 00 00 0a 00 00 00 00 00 00 00 98 84 3d 84 28.5.16
23 IRP 06 00 b4 01 00 00 00 00 00 00 00 00 00 00 00 00 31.2.0 25us 2009-02-25 08:36:48.024
d8 9b e2 83 d8 9b e2 83 01 00 00 c0 00 00 00 00 31.2.16
23 STAK 0f 00 00 e0 f8 fd fa 85 00 00 00 00 13 00 1b 00 INTERNAL IOCTL 31.3.0 1us 2009-02-25 08:36:48.024
00 00 00 00 a0 6e 3c 86 00 00 00 00 35 86 64 f7 31.3.16
23 SSTS 16 request flushed 31.4.0 1us 2009-02-25 08:36:48.024
23 SRB 40 00 00 16 00 00 00 00 ff 20 06 12 08 01 30 10 EXEC SCSI 31.5.0 1us 2009-02-25 08:36:48.024
00 00 00 00 14 00 00 00 00 00 00 00 08 f0 b0 86 31.5.16
23 IRP 06 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 33.1.0 2us 2009-02-25 08:36:48.024
60 e2 fc 85 60 e2 fc 85 00 00 00 00 00 00 00 00 33.1.16
23 STAK 0f 00 00 e0 10 39 06 86 00 00 00 00 00 00 00 00 INTERNAL IOCTL 33.2.0 1us 2009-02-25 08:36:48.024
00 00 00 00 a0 6e 3c 86 00 00 00 00 29 a6 64 f7 33.2.16
23 SRB 40 00 15 01 00 00 00 00 00 00 00 00 00 00 00 00 FLUSH QUEUE 33.3.0 0us 2009-02-25 08:36:48.024
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33.3.16
23 IRP 06 00 b4 01 00 00 00 00 00 00 00 00 08 3b 06 86 34.1.0 7us 2009-02-25 08:36:48.024
00 64 f2 85 00 64 f2 85 bb 00 00 c0 00 00 00 00 34.1.16
23 STAK 0e 00 00 e0 18 00 00 00 00 00 00 00 00 00 07 00 IOCTL 34.2.0 2us 2009-02-25 08:36:48.024
00 00 00 00 a0 6e 3c 86 00 00 00 00 d6 a2 63 f7 34.2.16
23 CDB 25 00 00 00 00 00 00 00 00 00 READ CAPACITY 35.1.0 18us 2009-02-25 08:36:48.024
22 IRP 06 00 b4 01 00 00 00 00 00 00 00 00 00 00 00 00 36.1.0 26us 2009-02-25 08:36:48.024
80 2d 52 84 80 2d 52 84 00 00 00 00 00 00 00 00 36.1.16
22 STAK 0f 00 00 e0 44 3d a4 f7 00 00 00 00 13 00 22 00 INTERNAL IOCTL 36.2.0 1us 2009-02-25 08:36:48.024
00 00 00 00 e8 bd b1 83 00 00 00 00 16 17 4f 80 36.2.16
22 RSET 37.1.0 3us 2009-02-25 08:36:48.024
22 IRP 06 00 b4 01 00 00 00 00 00 00 00 00 00 00 00 00 37.2.0 187ms 2009-02-25 08:36:48.212
80 2d 52 84 80 2d 52 84 00 00 00 00 00 00 00 00 37.2.16
22 STAK 0f 00 00 e0 00 00 00 00 00 00 00 00 07 00 22 00 INTERNAL IOCTL 37.3.0 4us 2009-02-25 08:36:48.212
00 00 00 00 e8 bd b1 83 00 00 00 00 16 17 4f 80 37.3.16
22 NSTS 00 00 00 00 success 37.4.0 1us 2009-02-25 08:36:48.212
22 IRP 06 00 24 01 20 66 f8 85 00 00 00 00 00 00 00 00 38.1.0 960us 2009-02-25 08:36:48.213
00 64 f2 85 00 64 f2 85 00 00 00 00 00 00 00 00 38.1.16
22 STAK 0f 00 00 e0 fc 05 fd 85 00 00 00 00 03 00 22 00 INTERNAL IOCTL 38.2.0 3us 2009-02-25 08:36:48.213
00 00 00 00 e8 bd b1 83 00 00 00 00 40 14 97 f7 38.2.16
22.2 LEN 1f 00 00 00 31 38.3.0 4us 2009-02-25 08:36:48.213
22.2 DO 55 53 42 43 f0 63 f2 85 08 00 00 00 80 00 0a 25 USBC.c.........% 38.4.0 1us 2009-02-25 08:36:48.213
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 38.4.16
22.2 URB 48 00 09 00 00 00 00 00 08 b0 33 84 22 00 00 00 BULK/INT XFER 38.5.0 3us 2009-02-25 08:36:48.213
3c fa 92 86 00 00 00 00 1f 00 00 00 60 06 fd 85 38.5.16
22 IRP 06 00 24 01 20 66 f8 85 00 00 00 00 00 00 00 00 39.1.0 992us 2009-02-25 08:36:48.214
00 64 f2 85 00 64 f2 85 01 00 00 c0 00 00 00 00 39.1.16
22 STAK 0f 00 00 e0 fc 05 fd 85 00 00 00 00 03 00 22 00 INTERNAL IOCTL 39.2.0 3us 2009-02-25 08:36:48.214
00 00 00 00 e8 bd b1 83 00 00 00 00 aa 10 97 f7 39.2.16
22.1 USTS 04 00 00 c0 stall pid 39.3.0 2us 2009-02-25 08:36:48.214
22.1 URB 48 00 09 00 04 00 00 c0 08 b0 33 84 20 00 00 00 BULK/INT XFER 39.4.0 1us 2009-02-25 08:36:48.214
1c fa 92 86 03 00 00 00 00 00 00 00 00 00 00 00 39.4.16
22.1 RSET 40.1.0 10us 2009-02-25 08:36:48.214
22 IRP 06 00 b4 01 00 00 00 00 00 00 00 00 00 00 00 00
作者:
xudaren
时间:
2009-04-10 09:07
本人已经解决此问题,QQ: 22538063
很多人问,直接写在这里吧.
修改文件 /drivers/usb/gadget/s3c2410_udc.c
845 845 u32 ep_csr1;
846 846 u32 idx;
847 847
848 handle_ep_again: \\add this line
848 849 if (likely (!list_empty(&ep->queue)))
849 850 req = list_entry(ep->queue.next,
850 851 struct s3c2410_request, queue);
… …
884 885
885 886 if ((ep_csr1 & S3C2410_UDC_OCSR1_PKTRDY) && req) {
886 887 s3c2410_udc_read_fifo(ep,req);
888 if (s3c2410_udc_fifo_count_out()) \\ add this line
889 goto handle_ep_again; \\add this line
887 890 }
888 891 }
889 892 }
[
本帖最后由 xudaren 于 2009-7-6 09:33 编辑
]
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2