• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 求助,mini2440 gadget使用遇到困难!帮帮我! 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 3595
精华: 4
发帖: 53
金钱: 425 两
威望: 213 点
综合积分: 186 分
注册时间: 2009-01-20
最后登录: 2011-10-18
楼主  发表于: 2010-01-13 09:42

 求助,mini2440 gadget使用遇到困难!帮帮我!

管理提醒: 本帖被 qq2440 从 mini2440资料下载及使用技巧 移动到本区(2010-01-13)
我用mini2440成功使用了gadget功能。我主要是要实现模拟U盘的功能。目前,我已将g_file_storage.ko加载成功。PC端已能显示U盘插入,也能进行读取操作。但目前有个难题难住了我,就是在写入文件时,文件大于16K字节,就会写入失败?不知什么原因?我用的命令是insmod g_file_storage.ko stall=0 removable=1 file=/dev/mmcblk0p1,也就是把插入的SD卡作为U盘。另外,如果我用dd if=/dev/zero of=img bs=1k count=12k的命令在内存中划分一块区域,再用insmod g_file_storage.ko stall=0 removable=1 file=/tmp/img把这块区域作为U盘挂载,则可以写入大文件,但速度极慢。无论哪种方式,在写入文件时,从内核输出信息看,好象内核在不断的重启usb device配置,不知有没有人遇到相同情况,怎么解决的?帮帮我,谢谢了。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-01-13 11:48
在写入文件时,从内核输出信息看,好象内核在不断的重启usb device配置

内核的输出信息是什么?我曾经测试过通过USB写几M的文件到开发板的SD卡上没有问题,写入的速度也还算正常(以USB 1.1的标准来看)
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 3595
精华: 4
发帖: 53
金钱: 425 两
威望: 213 点
综合积分: 186 分
注册时间: 2009-01-20
最后登录: 2011-10-18
2楼  发表于: 2010-01-13 21:22
写入时,内核反复输出
g_file_storage gadget: full speed config #1

看了代码,这是表示在storage模块内新配置启动USB。

奇怪的是,读取文件正常,无论大小都能正常读取。百思不得其解了。
级别: 侠客
UID: 3595
精华: 4
发帖: 53
金钱: 425 两
威望: 213 点
综合积分: 186 分
注册时间: 2009-01-20
最后登录: 2011-10-18
3楼  发表于: 2010-01-14 00:57
晚上又用友善最新版的2.6.32.2试了一下。情况完全相同,真是完全没有方向了。唉。
级别: 侠客
UID: 3595
精华: 4
发帖: 53
金钱: 425 两
威望: 213 点
综合积分: 186 分
注册时间: 2009-01-20
最后登录: 2011-10-18
4楼  发表于: 2010-01-14 19:05
新版也不能解决问题。有解决问题的牛人吗,帮帮忙啊,指点一下。谢谢了。
级别: 侠客
UID: 3595
精华: 4
发帖: 53
金钱: 425 两
威望: 213 点
综合积分: 186 分
注册时间: 2009-01-20
最后登录: 2011-10-18
5楼  发表于: 2010-01-18 10:18
还是没人能解决吗?大侠们帮帮忙啊
级别: 侠客
UID: 3595
精华: 4
发帖: 53
金钱: 425 两
威望: 213 点
综合积分: 186 分
注册时间: 2009-01-20
最后登录: 2011-10-18
6楼  发表于: 2010-01-22 13:07
还是没解决,继续等待中。
级别: 侠客
UID: 6851
精华: 0
发帖: 65
金钱: 370 两
威望: 131 点
综合积分: 130 分
注册时间: 2009-06-19
最后登录: 2011-09-23
7楼  发表于: 2010-01-23 00:20
源文件有需要修改的地方
我现在测试已经通过了
你可以用我下面附件传的试试看行不行
附件: LinuxImage.rar (27 K) 下载次数:64
级别: 侠客
UID: 6851
精华: 0
发帖: 65
金钱: 370 两
威望: 131 点
综合积分: 130 分
注册时间: 2009-06-19
最后登录: 2011-09-23
8楼  发表于: 2010-01-23 00:21
参考在mini2440上使用USB Gadget功能,修改file_storage.c与s3c2410_udc.c:
1----------------------------------------------------------------------------------
--- a/drivers/usb/gadget/file_storage.c    2008-09-01 11:13:03.000000000 -0400
+++ b/drivers/usb/gadget/file_storage.c    2008-09-01 11:16:41.000000000 -0400
@@ -1463,7 +1463,8 @@
    if (rc >= 0 && rc != DELAYED_STATUS) {
        rc = min(rc, w_length);
        fsg->ep0req->length = rc;
-        fsg->ep0req->zero = rc < w_length;
+        fsg->ep0req->zero = rc < w_length
+            && (rc % gadget->ep0->maxpacket) == 0;
        fsg->ep0req_name = (ctrl->bRequestType & USB_DIR_IN ?
                "ep0-in" : "ep0-out");
        rc = ep0_queue(fsg);

2------------------------------------------------------------------------
Index: linux-2.6.28.8/drivers/usb/gadget/s3c2410_udc.c
===================================================================
--- linux-2.6.28.8.orig/drivers/usb/gadget/s3c2410_udc.c    2009-03-17 21:14:28.000000000 +0100
+++ linux-2.6.28.8/drivers/usb/gadget/s3c2410_udc.c    2009-03-17 21:14:46.000000000 +0100
@@ -843,6 +843,7 @@
     u32            ep_csr1;
     u32            idx;

+handle_ep_again:
     if (likely (!list_empty(&ep->queue)))
         req = list_entry(ep->queue.next,
                 struct s3c2410_request, queue);
@@ -882,6 +883,8 @@

         if ((ep_csr1 & S3C2410_UDC_OCSR1_PKTRDY) && req) {
             s3c2410_udc_read_fifo(ep,req);
+            if (s3c2410_udc_fifo_count_out())
+                goto handle_ep_again;
         }
     }
}
级别: 侠客
UID: 6851
精华: 0
发帖: 65
金钱: 370 两
威望: 131 点
综合积分: 130 分
注册时间: 2009-06-19
最后登录: 2011-09-23
9楼  发表于: 2010-01-23 00:22
我当初也是照着这个上面的修改的
具体在哪个网站上我记不清啦 可能就是在本论坛上吧
然后用dd建一个大小为12M的
拷贝一个8M的文件是没有问题的
你再看看吧
祝你好运啦
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go