免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4660 | 回复: 2
打印 上一主题 下一主题

开发板模拟u盘与PC通讯出现的问题,请各位大侠帮忙分析下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-25 18:39 |只看该作者 |倒序浏览
5可用积分
各位大侠好,该问题已折腾了我好一阵子,连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

115.12 KB, 下载次数: 178

论坛徽章:
0
2 [报告]
发表于 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

论坛徽章:
0
3 [报告]
发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP