注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

蒙奇D小豌豆的博客

蒙奇D小豌豆的学习记录

 
 
 

日志

 
 

华恒HHs3c6410内核USB DEVICE(gadget)移植  

2010-05-08 22:02:55|  分类: others |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

(1)usb devic而需要otg设备驱动(s3c-?-otg-hs.c)以及功能文(file_storage实现模拟U盘功能。我直接将24源码里drivers\usb\gadget覆盖到29的源码里面。

内核编译 kconfig有问题,我将原来29的kconfig 拿过来 修改添加

config USB_GADGET_S3C_OTGD_HS

        boolean "S3C USB OTG controller"

        depends on PLAT_S3C64XX

        select USB_GADGET_SELECTED

    select USB_GADGET_D LSPEED

        help

       Samsung's S3C64XX processors have high speed USB OTG controller.

       To link the driver eables

   the 'S3C high speed(2.0, d l-speed) USB OTG device' below

因为29源码里面是没有otg设备驱动(s3c-?-otg-hs.c)文件的

以及

endchoice

 

comment "NOTE: S3C OTG device role enables the controller driver below"

    depends on USB_GADGET_S3C_OTGD_HS

 

 

config USB_S3C_OTGD_HS

    tristate "S3C high speed(2.0, d l-speed) USB OTG device"

        depends on USB_GADGET && USB_GADGET_S3C_OTGD_HS

    default y

        help

           Say "y" to link the driver statically, or "m" to build a

           dynamically linked module called "s3c-?-otg-hs" and force all

           gadget drivers to also be dynamically linked.

 

choice

    prompt "S3C OTGD transfer mode"

    depends on USB_S3C_OTGD_HS

    default USB_GADGET_S3C_OTGD_HS_DMA_MODE

    help

       S3C USB OTG conteroller supports DMA mode and Slave mode

       for the dat transfer. You must slect one for the core

       operation mode.

 

config USB_GADGET_S3C_OTGD_HS_DMA_MODE

    bool "enabled DMA MODE"

    depends on USB_GADGET_S3C_OTGD_HS

    default y

    help

       S3C USB OTG core operates in DMA mode.

 

config USB_GADGET_S3C_OTGD_HS_SLAVE_MODE

    bool "enabled Slave MODE"

    depends on USB_GADGET_S3C_OTGD_HS

    help

       S3C USB OTG core operates in Slave mode.

endchoice

 

config USB_GADGET_D LSPEED

    bool

    depends on USB_GADGET

    default n

    help

      Means that gadget drivers should incl? extra descriptors

      and code to handle d l-speed controllers.

(2)编译内核 出错 d_path参数有错

   对比29的文件 修改

//p = d_path(curlun->filp->f_path.dentry,

                curlun->filp->f_path.mnt, b, PAGE_SIZE - 1);

为p = d_path(&curlun->filp->f_path, b, PAGE_SIZE - 1);

Ok编译成功 不过我发找到otg设备s3c2410-usbgadget。

(3)需要在arch\arm\mach-s3c6410 的mach-smdk6410.c中添加设备

static str t resource s3c_usbgadget_resource[] = {

#if defined(CONFIG_PLAT_S3C64XX)

    [0] = {

        .start = S3C24XX_PA_OTG,

        .end   = S3C24XX_PA_OTG+S3C24XX_SZ_OTG-1,

        .flags = IORESOURCE_MEM,

    },

    [1] = {

        .start = IRQ_OTG,

        .end   = IRQ_OTG,

        .flags = IORESOURCE_IRQ,

    }

#endif

/*#elif defined(CONFIG_PLAT_S3C24XX)

    [0] = {

        .start = S3C24XX_PA_USBDEV,

        .end   = S3C24XX_PA_USBDEV + S3C24XX_SZ_USBDEV - 1,

        .flags = IORESOURCE_MEM,

    },

    [1] = {

        .start = IRQ_USBD,

        .end   = IRQ_USBD,

        .flags = IORESOURCE_IRQ,

    }

#endif*/

};

 

str t platform_device s3c_device_usbgadget = {

    .name         = "s3c2410-usbgadget",

    .id       = -1,

    .num_resources    = ARRAY_SIZE(s3c_usbgadget_resource),

    .resource     = s3c_usbgadget_resource,

};

 

EXPORT_SYMBOL(s3c_device_usbgadget);

 

static str t platform_device *smdk6410_devices[] __initdata = {

&s3c_device_usbgadget, //登记设备

}

编译选项

<*> S3C high speed(2.0, d l-speed) USB OTG device

<M> USB Gadget Drivers 

<M>   File-backed Storage Gadget                                

   [*]     File-backed Storage Gadget testing version 

编译后在启动界面里面 会发现s3c2410-usbgadget设备。

 

讲生成的g_file_storage.ko 拷贝到系统的/home/里

#

#cd  /home

#dd if=/dev/zero of=one bs=2M count=10

#insmod g_file_storage.ko file=/home/one  stall=1 removable=1

g_file_storage gadget: File-backed Storage Gadget, version: 7 August  2007

g_file_storage gadget: Number of LUNs=1

g_file_storage gadget-lun0: ro=0, file: /home/one

Registered gadget driver 'g_file_storage'

可以看到驱动成功加载,然后用usb 线连接核心板上的usb device 口和PC 机的usb 口(最好在windows 下测试,Linux 下的支持不是很好),可以看到windows 提示找到磁盘,把盘格为fat 格式,就可以读写这个磁盘了。可以往磁盘中拷贝一些文件,卸载磁盘后在开发板上执行:

#mount -o loop one /mnt/gadget

(有可能说没有loop device 文件,我们应该编译

Device driver

Block device

<*>   Loopback device support)

# ls /mnt

  评论这张
 
阅读(1850)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018