收藏 分销(赏)

USB挂载及内核配置.doc

上传人:pc****0 文档编号:8990221 上传时间:2025-03-10 格式:DOC 页数:13 大小:53.50KB 下载积分:10 金币
下载 相关 举报
USB挂载及内核配置.doc_第1页
第1页 / 共13页
USB挂载及内核配置.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
想查看usb设备的信息,输入:     cat /proc/bus/usb/devices     但我的ubuntu系统显示:没有这个文件或目录。      在网上搜了很久,发现没人进行该问题的讨论,郁闷了很久。无意间看到了解决方法,哈哈,大喜......    解决办法:     $ sudo mount -t usbfs usbfs /proc/bus/usb/     保证usbfs是挂载在/proc/bus/usb上的 此外,还可以用lsusb命令查看,如果你喜欢看大量的输出信息,运行lsusb -v就可以满足你的这一欲望。lsusb另一个有用的选项是给出当前USB物理层次的树状信息,这可以更容易让你准确理解设备体系结构,这个命令就是lsusb -t linux-2.6.28 内核配置,支持网络,SCSI硬盘,USB配置 发布时间:2010-10-05 12:19 来源: 浏览: 47 2010-04-16 12:21 转载地址: 内核支持U盘 -- zImage for sbc-2410x # cd linux-2.6.19 # vi arch/arm/mach-s3c2410/mach-smdk2410.c -------------------------------------------------- (1) 添加头文件 //zxl for usb start #include <asm/arch/usb-control.h> #include <asm/arch/regs-clock.h> #include <linux/device.h> #include <linux/delay.h> //zxl for usb end (2) 以下内容加在static void __init smdk2410_map_io(void)前面 /***************** zxl add start *****************/ 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 sbc2410n");     s3c_device_usb.dev.platform_data = &usb_sbc2410_info;     while(upllvalue!=__raw_readl(S3C2410_UPLLCON)) {         __raw_writel(upllvalue,S3C2410_UPLLCON);         mdelay(1);     }     return 0; } /***************** zxl add end *****************/ (3) 在MACHINE_START与MACHINE_END 之间加上.init_machine= &usb_sbc2410_init,结果变成了 MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch                 * to SMDK2410 */     /* Maintainer: Jonas Dietsche */     .phys_ram = S3C2410_SDRAM_PA,     .phys_io = S3C2410_PA_UART,     .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,     .boot_params = S3C2410_SDRAM_PA + 0x100,     .map_io = smdk2410_map_io,     .init_irq = smdk2410_init_irq,     .timer = &s3c24xx_timer,     //zxl add     .init_machine= &usb_sbc2410_init, MACHINE_END (4) 在smdk2410_map_io()函数里面添加usb_sbc2410_init()函数调用: 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);     //zxl add     usb_sbc2410_init(); } 内核配置(For USB) -------------------------------------------------- 让内核支持热插拔 General setup ---> [*] Configure standard kernel features (for small systems) --->      [*]   Support for hot-pluggable devices (NEW) Device Drivers --->     Generic Driver Options --->         <*> Userspace firmware loading support //(1)     Block devices --->         <*> Low Performance USB Block driver     SCSI device support --->         <*> SCSI device support          <*> SCSI disk support         <*> SCSI generic support     USB support --->         <*> Support for Host-side USB         [*]   USB device filesystem         <*> OHCI HCD support         --- NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'         --- may also be needed; see USB_STORAGE Help for more information                 <*> USB Mass Storage support         [*] USB Monitor File systems --->     DOS/FAT/NT Filesystems --->         <*> MSDOS fs support          <*> VFAT (Windows-95) fs support          (936) Default codepage for FAT          (cp936) Default iocharset for FAT          < > NTFS file system support     Partition Types --->         [*]   PC BIOS (MSDOS partition tables) support     Native Language Support --->         <*> Simplified Chinese charset (CP936, GB2312)         <*> NLS UTF8 # make zImage 注: 系统正真支持U盘,busybox中还需要有udev应用程序(用户工具) 将zImage下载到开发板上,然后挂载U盘 # mount /dev/sda1 /mnt ========================================================================= 转载地址: 配置USB for mini2440 & Linux2.6.30.4 U盘与鼠标的配置: 配置: # make menuconfig 选上以下: Device Drivers --->          SCSI device support --->              <*> SCSI device support              [*] legacy /proc/scsi/ support              <*> SCSI disk support         [*] HID Devices --->              <*> USB Human Interface Device (full HID) support              [*] /dev/hiddev raw HID device support         [*] USB support --->              <*> Support for Host-side USB              [*] USB device filesystem              [*] USB device class-devices (DEPRECATED)              <*> OHCI HCD support              <*> USB Mass Storage support   编译: # make zImage U盘和USB鼠标均可以使用! 摄象头的配置: 配置: # make menuconfig 选上以下: Device Drivers --->          Multimedia devices --->                    <*> Video For Linux                    [*] Enable Video For Linux API 1 (DEPRECATED)                    [*] Video capture adapters --->                        [*] Autoselect pertinent encoders/decoders and other helper chip                        [*] V4L USB devices --->                               <*> USB Video Class (UVC)                               [*] UVC input events device support                               <*> GSPCA based webcams --->             如果不确定你的USB摄像头使用何种芯片,全部选上即可! 编译: # make zImage 友善之臂公司提供的基于Qt的USB摄像头测试程序可以使用! usb设备/proc/bus/usb USB设备检测的一般过程 作者 pxe2 USB设备检测也是通过/proc目录下的USB文件系统进行的。为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块。在检测开始时,一般要先检测是否存在/proc/bus/usb目录,若不存在则尝试插入USB桥接模块。 现在一般的USB桥接器模块有两种类型,UHCI和OHCI。在决定插入那一个桥接器模块时,可以察看/proc/pci文件来决定。打开此文件,您若发现USB节为 I/O at 0xHHHH格式(例如出现 I/O at 0xe000 [0xe01f]),HHHH为16进制数,则桥接器类型为UHCI。若是它为32 bit memory at 0xHH000000形式(例如出现32 bit memory at 0xee000000),HH为16进制数,则桥接器类型为OHCI。但是若您的桥接器类型不满足上述任何一种情况,唯一的解决办法就是您尝试插入这两种模块,直到成功为止。一般而言,UHCI类型的桥接器它的插入模块是uhci或usb-uhci(由内核版本决定);而对于OHCI类型的桥接器它的插入模块是ohci或usb-ohci。 您在正确的插入了桥接器模块之后,这时/proc文件系统下就会出现USB设备目录,不过这时这个目录是空的,没有任何文件。这时您就必须挂接usbdevfs文件系统,然后通过此文件系统检测连接的设备。在成功挂接usb文件系统之后,就会生成文件/proc/bus/usb/devices,/proc/bus/usb/drivers和目录/proc/bus/usb/busNo。挂接usbdevfs文件您可以通过如下操作实现: mount -t usbdevfs none /proc/bus/usb 或在/etc/fstab上加入 none /proc/bus/usb usbdevfs defaults 0 0 然后通过/proc/bus/usb/devices文件的内容,您就可以获得连接的设备信息,包括设备标识和制造商标是等信息。 usb设备类型描述: 设备规范 设备类码 接口类码  应用程序特定 - 0xFE  声音接口 0x00 0x01  通信设备 0x02 -  CDC控制接口 - 0x02  CDC数据接口 - 0x0A  HID 0x00 0x03  HUB 0x09 0x09  批量存储设备 0x00 0x08  监视器 same as HID same as HID  电源设备 same as HID same as HID  物理设备 - 0x05  打印机 - 0x07  供应商特定 - 0xFF  5.2 usb文件系统简介 T = 总线拓扑结构(Lev, Prnt, Port, Cnt, 等),是指USB设备和主机之间的连接方式 B = 带宽 (仅用于USB主控制器) D = 设备描述信息 P = 产品标识信息 S = 串描述符 C = 配置描述信息 (* 表示活动配置) I = 接口描述信息 E = 终端点描述信息 一般格式: d = 十进制数 x = 十六进制数 s = 字符串 拓扑信息 T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd | | | | | | | | |__最大子设备 | | | | | | | |__设备速度(Mbps) | | | | | | |__设备编号 | | | | | |__这层的设备数 | | | | |__此设备的父连接器/端口 | | | |__父设备号 | | |__此总线在拓扑结构中的层次 | |__总线编号 |__拓扑信息标志 带宽信息 B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd | | | |__同步请求编号 | | |__中断请求号 | |__分配给此总线的总带宽 |__带宽信息标志 设备描述信息和产品标识信息 D: Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MxPS=dd #Cfgs=dd P: Vendor=xxxx ProdID=xxxx Rev=xx.xx D: Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd | | | | | | |__配置编号 | | | | | |______缺省终端点的最大包尺寸  | | | | |  | | | | |__设备协议 | | | |__设备子类型 | | |__设备类型 | |__设备USB版本 |__设备信息标志编号#1 P: Vendor=xxxx ProdID=xxxx Rev=xx.xx | | | |__产品修订号 | | |__产品标识编码 | |__制造商标识编码 |__设备信息标志编号#2 串描述信息 S: Manufacturer=ssss | |__设备上读出的制造商信息 |__串描述信息 S: Product=ssss | |__设备上读出的产品描述信息,对于USB主控制器此字段为"USB *HCI Root Hub" |__串描述信息 S: SerialNumber=ssss | |__设备上读出的序列号,对于USB主控制器它是一个生成的字符串,表示设备标识 |__串描述信息 配置描述信息 C: #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA | | | | |__最大电流(mA) | | | |__属性 | | |__配置编号 | |__接口数 |__配置信息标志 接口描述信息(可为多个) I: If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss | | | | | | | |__驱动名 | | | | | | |__接口协议 | | | | | |__接口子类 | | | | |__接口类 | | | |__中断点数 | | |__可变设置编号 | |__接口编号 |__接口信息标志 终端点描述信息 E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms | | | | |__间隔 | | | |__终端点最大包尺寸 | | |__属性(终端点类型) | |__终端点地址(I=In,O=Out) |__终端点信息标志 ' mount -t usbfs none /proc/bus/usb 或者  mount -t usbdevfs none /proc/bus/usb 这需要看你的系统支持哪些文件系统。 # cat /proc/filesystem nodev   sysfs nodev   rootfs nodev   bdev nodev   proc nodev   tmpfs nodev   binfmt_misc nodev   sockfs nodev   usbfs nodev   pipefs nodev   anon_inodefs nodev   rpc_pipefs nodev   configfs nodev   devpts         ext3         ext2         ext4         cramfs nodev   ramfs nodev   hugetlbfs         vfat         msdos nodev   nfs nodev   nfs4 nodev   nfsd nodev   cifs         ntfs nodev   autofs nodev   fuse         fuseblk nodev   fusectl 一、代码修改 主要是按照这个贴来做: 我也看过其它不同版本的内核关于usb驱动的移植,移植方法几乎一样,只是修改的文件不同而已。上面的贴子有不少头文件没有例出来,以下是我按照以上贴子添加的代码(好像在很多论坛上包括头文件部分都显示不出来,在这里把include前面的#给删了,希望有帮助):  /*add by lfc*/ include  include  include  include  /*end add*/  /**********************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上面的修改其实也参考了这个牛贴一下,里面有大虾们对USB驱动移植的讨论,还不错: 其实到了这里,要修改的代码已经修改完了,比添加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  3、加入了MSDOS fs和VFAT fs的支持。  │ │                File systems  --->       │ │        DOS/FAT/NT Filesystems  --->    │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │                  MSDOS fs support                                │ │ │ │                  VFAT (Windows-95) fs support                    │ │ │ │                 (936) Default codepage for FAT                      │ │ │ │                 (cp936) Default iocharset for FAT                   │ │ │ │                  NTFS file system support  做完这些后,插入u盘后,内核应该可以识别到u盘,出现: usb 1-1: new full speed USB device using s3c2410-ohci and address 3 ub(1.3): GetMaxLUN returned 0, using 1 LUNs  但是,还有下面一句出错提示: /dev/ub/a: unknown partition table  再次查看了贴子上大虾们的讨论,提到:“使能CONFIG_MSDOS_PARTITION选项”,再仔细查找,发现配置选项如下: │ │                File systems  ---> │ │                Partition Types  --->   │ │      ·    PC BIOS (MSDOS partition tables) support 加上这个后应该就可以挂载usb上的MSDOS分区了  以下是我的内核插入u盘后的提示信息: usb 1-1: new full speed USB device using s3c2410-ohci and 2 ub(1.2): GetMaxLUN returned 0, using 1 LUNs /dev/ub/a: p1 表示usb设备已经挂载到/dev/ub/a/part1设备文件下  4.加入中文字体库(可惜在我的板上还是没能正常显示中文~_~,知道的朋友麻烦告诉我一声,大家一起探讨) │ │        Native Language Support  --->      │ │   Simplified Chinese charset (CP936, GB2312)   │ │   NLS UTF8  以下是挂载usb设备后的显示: [root@luofuchong /]# mount -t vfat -o iocharset=cp936 /dev/ub/a/part1 /mnt [root@luofuchong /]# ls /mnt cramfs-1.1.tar.gz        netkit-base-0.17.tar.gz  thttpd-2.25b.tar.gz lfc                      settings.dat             . . I. ..  . .txt  三、一点心得。  如果想知道内核有没有识别出u盘的话可以执行命令:cat /proc/partitions ,看看插入USB前后分区信息有什么不同就知道了。  另外,我在贴上看到其它大虾移植了USB驱动的内核,在插入U盘后内核都把它当成SCSI设备来处理的,不过在我这里却没有,这点我倒不是很明白,难道是我u盘的问题?  还有就是,usb设备的挂载点比较特别,在我移植的系统中是:/dev/ub/a/part1。刚开始我不知道,以为/dev/ub/a就是了,结果当然挂载不了,差点就重编内核了,所以如果内核提示挂载usb设备成功的话,最好进入对应的目录仔细看清楚。如果是当成SCSI设备的话挂载点就在 /dev/scsi/host0/bus0/target0/lun0之类吧。其实插入u盘的时候都有提示,自己看着办吧。  还有一个问题,为了统一起见,一般都会新建一个/dev/sda1的链接指向usb设备的挂载点的,但是我的内核是采用devfs的,文件系统的/dev目录空空如也,而且/dev/ub/a/part1是插入u盘后才有的挂载点,那请问我应该怎样去新建这个链接呢?希望各位大虾知道的话可以告知我,感激不尽!  asm/arch/regs-clock.h asm/arch/usb-control.h linux/device.h linux/delay.h 搞定了这个问题,没有加入对应文件系统的language编码支持。  配置如下:  File systems -->  DOS/FAT/NT Filesystems --->  · MSDOS fs support  · VFAT (Windows-95) fs support  (437) Default codepage for FAT  (iso8859-1) Default iocharset for FAT  Native Language Support -->  (iso8859-1) Default NLS Option  · Codepage 437 (United States, Canada)  · NLS ISO 8859-1 (Latin 1; Western European Languages)  两路USB问题的解决
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服