Linux 操作系统已经在各个行业应用非常广泛,本文将详细讨论Linux下USB驱动,以及数据传输过程中涉及到的技术概念。
USB驱动指的是系统的驱动软件,他的作用是将使用者的输入转换成计算机可以识别的信号并进行处理,使用者可以通过接口手柄或者操作键盘等设备与计算机进行通信,USB驱动把系统和使用者之间架起一座桥梁。
Linux中的USB驱动也一样,它负责外设的识别、驱动加载、连接状态记录等功能,让系统可以和外设通信及使用外设功能。
在 Linux 系统中,USB 驱动分为两个模块:usbcore 和 usbfs,它们组成Linux的USB核心,提供所有的USB驱动支持。
USBcore 通过一系列的函数和datastructure来支持USB树,并定义 USB 的控制和状态转移机制,以及数据传输的异步机制;而 usbfs 属于用户空间,它和USBcore配合完成了USB设备的初始化,设备管理和设备配置的工作,其机制如下图:
图 1 Linux的 USB 驱动工作流程示意图
常用的usbcore函数主要有:
usb_register():对USB设备进行初始化,注册usbcore设备。
usb_deregister():将usbcore设备注销掉,处理USB设备移除时的正确操作。
usb_alloc_urb():动态分配urb缓冲区,用来传输USB控制和数据报文。

usb_submit_urb():把urb报文传到USB设备驱动模块中去,实现数据传输。
usb_read():从USB设备读取数据。
usb_write():向USB设备写入数据。
usb_bulk_msg():应用程序发送和接收USB数据报文。
数据传输过程中,USB还采用了如下协议:
1. USB 设备认证协议(USB Device Authentication Protocol)
2. USB 设备识别协议(USB Device Enumeration Protocol)
3. USB 设备数据传输协议(USB Device>香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
linux系统里面useradd命令的用法
[Root @test /root ]# useradd [-u UID] [-g GID] [-d HOME] [-mM] [-s shell] username参数说明:-u :直接给予一个 UID-g :直接给予一个 GID (此 GID 必须已经存在于 /etc/group 当中)-d :直接将他的家目录指向已经存在的目录(系统不会再建立)-M :不建立家目录-s :定义其使用的 shell范例:[root @test /root]# useradd testing <==直接以预设的数据建立一个名为 testing 的账号[root @test /root]# useradd -u 720 -g 100 -M -s /bin/bash testing <==以自己的设定建立账号
linux下U盘怎么使用
本文为转载文章方案一:Linux不像Windows一样,接上新硬件后可以自动识别,在Linux下无法自动识别新硬件的,需要手动去识别。 USB移动存储设备通常被识别为sda1,具体可以通过fdisk -l命令查询。 在使用U盘前,我们先要为外挂点新建一个子目录,一般外挂点的子目录都是建立在/mnt里面的,我们也建在那里,当然也可以建在/目录下,名字可以自己定,我们就取名为usb,终端下的命令如下:mkdir /mnt/usb然后我们就可以接上我的U盘了,然后在终端下输入命令并击Enter键即可:mount /dev/sda1 /mnt/usb在Windows下当我们用完U盘后,在我们取下U盘前我们先要删除,同样在Linux下我们也要删除挂起点,方法是:umount /dev/sda1 /mnt/usb 或 umount /dev/sda1如果不把U盘给umount掉,那样很容易造成数据的丢失方案二:USB的支持关键在于驱动,没有驱动设备时mount执行是肯定不成的。 我在Red Hat里使用U盘的通用方法如下,屡试不爽1. 先别插U盘,/sbin/lsmod看是否有usb-storage。 如果没有的话:cd /lib/modules/2.4.20-8/kernel/drivers/usbfor v in *.o storage/*.o ; do /sbin/insmod $v ; done2. 这里再/sbin/lsmod,应该有usbcore、usb-ohci(或usb-uhci,根据主板芯片组而不同)、usb-storage、scsi_mod等。 其中usb-storage的状态应该为(unused)。 3. 插入U盘,不停的/sbin/lsmod,这期间usb-storage的状态应为Initializing,持续时间大约半分钟,其实就相当于Windows在右下角不停的弹汽球:)4. 初始化结束后, /sbin/fdisk -l,应该能看到/dev/sda1设备。 这时,执行mount /dev/sda1 /mnt/udisk 才能成功。 如果是MSDOS格式,又想看到中文,可以mount -t vfat /dev/sda1 /mnt/udisk -o iocharset=gb2312。 (为方便可以/etc/fstab加一行,以后就可以 mount /mnt/udisk就行了)。 5. 奇怪的是有时候fdisk是看不到sda1,但是也能mount上使用以上步骤挂U盘基本上可说是“万全”了。 台式机、笔记本、VMware都一样。 mkdir /mnt/usbmount /dev/sda1 /mnt/usb笔记本上安装linux用法和台式机一样ps:首先要检查lsmod|Grep usb-storage 这是支持USB的模块。 如果没有的话,是无法操作USB接口的设备的。 如没有的话,可以手功modprobe usb-storage,一般查看U盘可以用fdisk -l可以很清楚的看到这个硬件的设备名,比猜测硬件名要准确多了
如何编写USB驱动程序
简单做驱先USB面协议直接习WinDriver,需要写驱能Nt/2000/9X/linux......驱要深入搞完USB面协议要DDK用9X面要VXD,2000面要WDM,linux面要重新些东西
发表评论