您的位置首页>企业动态>

linux下USB驱动移植

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解linux下USB驱动移植问题。一、代码修改在这里把包括前面的 给删了,希望有帮助 * L

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解linux下USB驱动移植问题。

一、代码修改

在这里把包括前面的#给删了,希望有帮助

#包括ASM/arch/regs-时钟. h

#包括asm/arch/usb-control.h

#包括linux/device.h

#包括Linux/延迟. h

/******************由负载频率控制(Load Frequency Control)添加* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

静态结构s3c 2410 _ HCD _信息USB _ SBC 2410 _信息={ 0。端口[0]={ 0。标志=S3C_HCDFLG_USED

}

};

int usb_sbc2410_init(无效)

{

无符号长upl value=(0x 7812)|(0x 024)|(0x 03);

printk('USB Control,(c)2006 SBC 2410 ');

s3c _ device _ USB。戴夫。platform _ data=USB _ SBC 2410 _ info;

while(uplvalue!=_ _ raw _ readl(s3c 2410 _ UPLCON))

{

_ _ raw _ writel(uplvalue,s3c 2410 _ upl con);

mde层(1);

}

返回0;

}

/*************************结尾添加********************

staTIc void _ _ init smdk 2410 _ map _ io(void)

{

s3c 24xx _ init _ io(smdk 2410 _ iodesc,ARRAY _ SIZE(smdk 2410 _ iodesc));

s3c 24xx _ init _ clocks(0);

s3c 24xx _ init _ uarts(smdk 2410 _ UART CFG,ARRAY _ SIZE(smdk 2410 _ UART CFG));

s3c 24xx _ set _ board(smdk 2410 _ board);

/**********************由负载频率控制(Load Frequency Control)添加* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

USB _ SBC 2410 _ init();

/**********************末尾添加* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

}

其实到了这里,要修改的代码已经修改完了,比添加资料储存型闪存的支持修改的地方还要少^_^,不过我一直以为还没修改好,最后发现原来是没配置好~_~

二、内核配置

下面说一下郁闷了我好一阵子的内核配置(支持USB)问题,这个就比资料储存型闪存的配置要复杂多了。

1、让内核支持热插拔

常规设置-

[*]支持热插拔设备

2、USB驱动设置,可能有些不选也行,不过没时间去试,至于为什么要选这些选项的话可以看一下这个贴(Linux下的硬件驱动——USB设备):

设备驱动程序-

基因

ric Driver OpTIons --->│<*> Hotplug firmware loading support│ │ Block devices --->│ │ <*> Low Performance USB Block driver│ │ SCSI device support --->│ │ <*> SCSI generic support│ │ [*] Probe all LUNs on each SCSI device│ │ USB support --->│ │<*> Support for Host-side USB│ │[*] USB device filesystem│ │<*> OHCI HCD support│ │<*> USB Mass Storage support│ │[*] USB Monitor

一、代码修改在这里把include前面的#给删了,希望有帮助#include <asm/arch/regs-clock.h>#include <asm/arch/usb-control.h>#include <linux/device.h>#include <linux/delay.h>/**********************add by lfc*************************************/staTIc struct s3c2410_hcd_info usb_sbc2410_info = { .port[0] = { .flags = S3C_HCDFLG_USED }};int usb_sbc2410_init(void){unsigned long upllvalue = (0x78<<12)|(0x02<<4)|(0x03);printk("USB Control, (c) 2006 sbc2410 ");s3c_device_usb.dev.platform_data = &usb_sbc2410_info;while(upllvalue!=__raw_readl(S3C2410_UPLLCON)){__raw_writel(upllvalue,S3C2410_UPLLCON);mdelay(1);}return 0;}/***************************end add**********************/staTIc void __init smdk2410_map_io(void){s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));s3c24xx_init_clocks(0);s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));s3c24xx_set_board(&smdk2410_board);/*************************add by lfc****************************/ usb_sbc2410_init();/*************************end add*******************************/}其实到了这里,要修改的代码已经修改完了,比添加Nand flash的支持修改的地方还要少^_^,不过我一直以为还没修改好,最后发现原来是没配置好~_~

二、内核配置下面说一下郁闷了我好一阵子的内核配置(支持USB)问题,这个就比Nand flash的配置要复杂多了。1、让内核支持热插拔│ General setup --->│ │[*] Support for hot-pluggable devices

2、USB驱动设置,可能有些不选也行,不过没时间去试,至于为什么要选这些选项的话可以看一下这个贴(Linux下的硬件驱动——USB设备):│ │ Device Drivers --->│ │ Generic Driver OpTIons --->│<*> Hotplug firmware loading support│ │ Block devices --->│ │ <*> Low Performance USB Block driver│ │ SCSI device support --->│ │ <*> SCSI generic support│ │ [*] Probe all LUNs on each SCSI device│ │ USB support --->│ │<*> Support for Host-side USB│ │[*] USB device filesystem│ │<*> OHCI HCD support│ │<*> USB Mass Storage support│ │[*] USB Monitor 技术专区 睿赛德科技喜迁新址 ,RT-Thread进入新的加速发展阶段可靠性高、控制灵活、低功耗可调速风扇散热系统安防监控摄像头LED驱动解决方案如何定制嵌入式Linux发行版基于SoC实现的数据采集系统详解

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。