linux下USB驱动移植

来源:本站
导读:目前正在解读《linux下USB驱动移植》的相关信息,《linux下USB驱动移植》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《linux下USB驱动移植》的详细说明。
简介:本文对USB驱动移植做了详细介绍,并和大家一起分享一下我的心得。

一、代码修改

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

/*addbylfc*/

#include<asm/arch/regs-clock.h>

#include<asm/arch/usb-control.h>

#include<linux/device.h>

#include<linux/delay.h>

/*endadd*/

/**********************addbylfc*************************************/

staticstructs3c2410_hcd_infousb_sbc2410_info={

.port[0]={

.flags=S3C_HCDFLG_USED

}

};

intusb_sbc2410_init(void)

{

unsignedlongupllvalue=(0x78<<12)|(0x02<<4)|(0x03);

printk("USBControl,(c)2006sbc2410");

s3c_device_usb.dev.platform_data=&usb_sbc2410_info;

while(upllvalue!=__raw_readl(S3C2410_UPLLCON))

{

__raw_writel(upllvalue,S3C2410_UPLLCON);

mdelay(1);

}

return0;

}

/***************************endadd**********************/

staticvoid__initsmdk2410_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);

/*************************addbylfc****************************/

usb_sbc2410_init();

/*************************endadd*******************************/

}

二、内核配置

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

1、让内核支持热插拔

│Generalsetup--->

││[*]Supportforhot-pluggabledevices

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

││DeviceDrivers--->

││GenericDriverOptions--->

│<*>Hotplugfirmwareloadingsupport

││Blockdevices--->

││<*>LowPerformanceUSBBlockdriver

││SCSIdevicesupport--->

││<*>SCSIgenericsupport

││[*]ProbeallLUNsoneachSCSIdevice

││USBsupport--->

││<*>SupportforHost-sideUSB

││[*]USBdevicefilesystem

││<*>OHCIHCDsupport

││<*>USBMassStoragesupport

││[*]USBMonitor

3、加入了MSDOSfs和VFATfs的支持。

││Filesystems--->

││DOS/FAT/NTFilesystems--->

│┌─────────────────────────────────────────────────────────────────────┐│

││<*>MSDOSfssupport││

││<*>VFAT(Windows-95)fssupport││

││(936)DefaultcodepageforFAT││

││(cp936)DefaultiocharsetforFAT││

││<>NTFSfilesystemsupport

做完这些后,插入u盘后,内核应该可以识别到u盘,出现:

usb1-1:newfullspeedUSBdeviceusings3c2410-ohciandaddress3

ub(1.3):GetMaxLUNreturned0,using1LUNs

但是,还有下面一句出错提示:

/dev/ub/a:unknownpartitiontable

再次查看了贴子上大虾们的讨论,提到:“使能CONFIG_MSDOS_PARTITION选项”,再仔细查找,发现配置选项如下:

││Filesystems--->

││PartitionTypes--->

││[*]PCBIOS(MSDOSpartitiontables)support

加上这个后应该就可以挂载usb上的MSDOS分区了

以下是我的内核插入u盘后的提示信息:

usb1-1:newfullspeedUSBdeviceusings3c2410-ohciand2

ub(1.2):GetMaxLUNreturned0,using1LUNs

/dev/ub/a:p1

表示usb设备已经挂载到/dev/ub/a/part1目录下

4.加入中文字体库

││NativeLanguageSupport--->

││<*>SimplifiedChinesecharset(CP936,GB2312)

││<*>NLSUTF8

以下是挂载usb设备后的显示:

[root@luofuchong/]#mount-tvfat-oiocharset=cp936/dev/ub/a/part1/mnt

[root@luofuchong/]#ls/mnt

cramfs-1.1.tar.gznetkit-base-0.17.tar.gzthttpd-2.25b.tar.gz

lfcsettings.dat..I.....txt

三、一点心得

如果想知道内核有没有识别出u盘的话可以执行命令:cat/proc/partitions,看看插入USB前后分区信息有什么不同就知道了。另外,如果想让内核把它当成SCSI设备来处理的话,只要把上面:

││DeviceDrivers--->

││Blockdevices--->

││<*>LowPerformanceUSBBlockdriver

的LowPerformanceUSBBlockdriver这个选项去掉,然后把:

││DeviceDrivers--->

││SCSIdevicesupport--->

││<*>SCSIdisksupport

的SCSIdisksupport这个选项选上,重新编译内核就行。

注:

个人觉得使用usb设备的话LowPerformanceUSBBlockdriver比SCSIdisk要好,自己看着办吧^_^最后,一般都会新建一个/dev/sda1的链接指向usb设备的挂载点的,可以在启动文件中使用命令ln-sxxxxxx来建立这个链接。

提醒:《linux下USB驱动移植》最后刷新时间 2024-03-14 01:03:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《linux下USB驱动移植》该内容的真实性请自行鉴别。