免费注册 查看新帖 |

Chinaunix

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

g_file_storage写大文件问题的解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-24 11:03 |只看该作者 |倒序浏览

先前一直被g_file_storage写大文件时比较慢的问题困扰,终于在网上找到了解决方法。现整理如下:
1.修改arch/arm/plat-s3c24xx/common-smdk.c
/*USB device上拉电阻处理 */
static void smdk2410_udc_pullup(enum s3c2410_udc_cmd_e cmd)
{
   u8 *s3c2410_pullup_info[] = {
        " ",
        "Pull-up enable",
        "Pull-up disable",
        "UDC reset, in case of"
   };
  printk("smdk2410_udc: %s\n",s3c2410_pullup_info[cmd]);   s3c2410_gpio_cfgpin(S3C2410_GPG(9), S3C2410_GPIO_OUTPUT);
switch (cmd)
{
case S3C2410_UDC_P_ENABLE :
s3c2410_gpio_setpin(S3C2410_GPG(9), 1); //set gpg9 output HIGH break; case S3C2410_UDC_P_DISABLE :
s3c2410_gpio_setpin(S3C2410_GPG(9), 0); //set gpg9 output LOW break; case S3C2410_UDC_P_RESET :
//FIXME!!!
break;
default:
break;
}
}
static struct s3c2410_udc_mach_info smdk2410_udc_cfg __initdata = {
.udc_command = smdk2410_udc_pullup,
};
static struct platform_device *smdk2410_devices[] __initdata = {
…,
&s3c_device_usbgadget, /*USB gadget device设备登记*/
};
在void __init smdk_machine_init(void)函数中添加
s3c24xx_udc_set_platdata(&smdk2410_udc_cfg); /* 初始化*/
2.修改drivers/usb/gadget/file_storage.c
在static int fsg_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)函数中
- fsg->ep0req->zero = rc ep0req->zero = rc ep0->maxpacket) == 0;
3.修改drivers/usb/gadget/s3c2410_udc.c
在static void s3c2410_udc_handle_ep(struct s3c2410_ep *ep)函数中
struct s3c2410_request *req;
int is_in = ep->bEndpointAddress & USB_DIR_IN;
u32 ep_csr1;
u32 idx;
+ handle_ep_again:
……
if ((ep_csr1 & S3C2410_UDC_OCSR1_PKTRDY) && req) {
s3c2410_udc_read_fifo(ep,req);
+ if (s3c2410_udc_fifo_count_out())
+   goto handle_ep_again;
}
4.修改内核配置
  USB Gadget Support --->
  USB Peripheral Controller (S3C2410 USB Device Controller) -->       S3C2410 USB Device Controller
[] S3C2410 udc debug messages
USB Gadget Drivers
File-backed Storage Gadget
5.编译及加载
#make zImage
#make modules
# insmod g_file_storage.ko file=/dev/mmcblk0p1 stall=0 removable=1
经过在2.6.32.5内核上的测试拷贝5MB大小的文件很快完成


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104386/showart_2185738.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP