基于Linux的USB主机设备驱动程序的开发
- 格式:pdf
- 大小:288.75 KB
- 文档页数:3
Linux下的硬件驱动——USB设备什么是USB设备?USB即Universal Serial Bus,翻译过来就是通用串行总线。
它是一种规范化的、快速的、热插拔的串行输入/输出接口。
USB接口常被用于连接鼠标、键盘、打印机、扫描仪、音频设备、存储设备等外围设备。
Linux下的USB驱动在Linux系统中,每个USB设备都需要一个相应的驱动程序来驱动。
从Linux 2.4开始,内核提供了完整的USB设备支持。
对于每个USB设备,内核都会自动加载对应的驱动程序。
Linux下的USB设备驱动程序主要分为以下几个部分:USB核心驱动程序USB核心驱动程序是操作系统内核中处理USB设备的核心模块,负责与各种类型的USB设备进行通信,包括主机控制器、USB总线、USB设备等。
它与驱动程序和应用程序之间起到了桥梁的作用,为驱动程序提供了USB设备的基础支持。
USB设备驱动程序USB设备驱动程序是与特定USB设备相对应的驱动程序,为USB设备提供具体的读写功能和其他控制功能。
USB核心驱动程序和USB设备驱动程序之间的接口USB核心驱动程序和USB设备驱动程序之间的接口是指USB层和应用程序层之间的接口,负责传递各种USB操作的命令和数据。
如何编译一个USB设备驱动编译一个USB设备驱动程序需要按照以下步骤进行:步骤一:安装必要的软件包首先需要安装编译和调试USB设备驱动所需的软件包,包括编译工具链、内核源代码、内核头文件等。
sudo apt-get install build-essential linux-source linux-headers-`una me -r`步骤二:编写代码现在可以编写USB设备驱动程序的代码,此处不做详细介绍。
步骤三:编译代码在终端窗口中进入USB设备驱动程序所在的目录下,输入以下命令进行编译:make此命令将会编译USB设备驱动程序,并生成一个将驱动程序与内核进行连接的模块文件。
详细介绍Linux USB驱动工作流程1. USB主机在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB 主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。
因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB 设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。
Linux 内核USB核心负责USB驱动管理和协议处理的主要工作。
主机控制器驱动和设备驱动之间的USB核心非常重要,其功能包括:通过定义一些数据结构、宏和功能函数,向上为设备驱动提供编程接口,向下为USB主机控制器驱动提供编程接口;通过全局变量维护整个系统的USB设备信息;完成设备热插拔控制、总线数据传输控制等。
2. USB设备Linux内核中USB设备侧驱动程序分为3个层次:UDC驱动程序、Gadget API和Gadget 驱动程序。
UDC驱动程序直接访问硬件,控制USB设备和主机间的底层通信,向上层提供与硬件相关操作的回调函数。
当前Gadget API是UDC驱动程序回调函数的简单包装。
Gadget驱动程序具体控制USB设备功能的实现,使设备表现出“网络连接”、“打印机”或“USB Mass Storage”等特性,它使用Gadget API控制UDC实现上述功能。
Gadget API 把下层的UDC驱动程序和上层的Gadget驱动程序隔离开,使得在Linux系统中编写USB 设备侧驱动程序时能够把功能的实现和底层通信分离。
3. 在USB设备组织结构中,从上到下分为设备(device)、配置(config)、接口(interface)和端点(endpoint)四个层次。
USB设备程序绑定到接口上。
对于这四个层次的简单描述如下:设备通常具有一个或多个的配置配置经常具有一个或多个的接口接口没有或具有一个以上的端点。
基于嵌入式Linux的USB主控制器驱动设计Design of USB Host Controller Driver Based on Embedded LinuxAbstract: This paper designs the USB host controller driver for the USB host controller of S3C2410. The driver is based on Linux, it followed USB 1.1 and OHCI 1.0 specification. This driver makes the embedded system with S3C2410 has USB host function and can communicate with USB devices.Key Word: USB host controller driver, Linux, S3C2410摘要:本文为S3C2410的USB主机控制器设计了基于Linux的USB主机控制器驱动程序。
该驱动程序遵循USB1.1版本协议和OHCI 1.0版本协议。
使具有S3C2410的嵌入式系统具备了USB主机功能,能够和各种USB设备进行通信。
关键词:USB主机控制器驱动,Linux,S3C24101 引言随着USB技术越来越多地被应用到嵌入式领域,人们对身边所使用的嵌入式系统提出了新的要求,希望在嵌入式系统中增加USB主机功能,使嵌入式系统具有移动存储功能,如挂接各种移动存储设备、直接与USB打印机连接打印数码相片等。
嵌入式USB主机系统的开发成为当前的一个热点。
嵌入式USB主机系统设计包括软件和硬件两个部分。
其中软件设计主要包括USB核心驱动程序和USB主机控制器驱动程序两个部分。
Linux操作系统是一个源码开放,资源丰富的操作系统。
Linux系统对USB主机协议提供了一定的支持,并提供了众多的USB类设备驱动程序,为应用开发提供了便捷。
linux usb设备驱动和通信原理Linux USB设备驱动和通信原理一、引言USB(Universal Serial Bus,通用串行总线)是一种用于连接计算机和外部设备的常见接口标准。
在Linux系统中,USB设备驱动是实现计算机与USB设备通信的关键。
本文将介绍Linux USB设备驱动的工作原理、通信过程以及相关概念。
二、USB设备驱动的工作原理1. 设备注册在Linux系统中,USB设备驱动是通过注册机制实现的。
当插入一个USB设备时,系统会自动扫描设备并加载相应的驱动程序。
驱动程序需要向系统注册设备的Vendor ID(厂商识别码)和Product ID(产品识别码),以便系统能够正确识别设备并加载相应的驱动。
2. 设备与驱动的匹配系统通过设备的Vendor ID和Product ID来匹配已注册的驱动程序。
一旦匹配成功,系统就会加载相应的驱动程序,并为设备分配一个唯一的设备文件,例如/dev/usb/0。
3. 驱动初始化驱动程序在加载后会进行初始化操作。
这包括分配内存、注册设备、设置设备的操作接口等。
初始化完成后,驱动程序就可以与设备进行通信。
4. 设备操作驱动程序通过操作设备文件来与USB设备进行通信。
设备文件提供了一组接口函数,可以用于读取设备数据、写入设备数据、控制设备等。
三、USB设备通信原理1. 控制传输控制传输是USB设备通信的基础。
它由主机发起,用于设备的配置和控制。
控制传输分为控制请求和控制数据阶段。
控制请求阶段用于发送控制命令和参数,而控制数据阶段用于传输数据。
2. 中断传输中断传输主要用于传输实时或周期性的数据。
设备会定期向主机发送中断包,主机接收后可以做出相应的处理。
中断传输适用于一些对实时性要求较高的设备,如鼠标、键盘等。
3. 批量传输批量传输用于传输大量的数据,但对实时性要求不高。
批量传输可以分为批量读和批量写两种方式。
批量传输适用于一些需要大量数据传输的设备,如打印机、存储设备等。
第7卷 第12期 2007年6月167121819(2007)1222994203科 学 技 术 与 工 程ScieTechnol ogy and EngineeringVol17 No112 June20072007 Sci1Tech1Engng.基于L i n ux的USB主机设备驱动程序的开发赵 明1,2 马健康1(中国科学院西安光学精密机械研究所1,西安 710119;中国科学院研究生院2,北京 100039)摘 要 开发L inux下的设备驱动程序是一项比较繁琐的工作。
从具体的US B设备驱动的开发流程出发,描述了L inux系统下US B设备驱动程序的几个主要开发细节和注意点。
以能够提供给大家一个开发L inux下US B设备驱动程序的向导。
关键词 US B驱动程序 L inux中图法分类号 TP311.1;文献标识码 A设备驱动程序是介于硬件和L inux内核之间的软件接口,是一种低级的,专用于某一硬件的软件组件。
L inux有两种方式使用设备驱动程序:直接编译到内核中;在运行时加载(即内核模块)。
在L inux 中一般把设备分为3类:字符设备,块设备和网络接口。
字符设备是指存取时没有缓存的设备。
可象文件一样访问字符设备,字符设备驱动程序负责实现这些行为。
块设备是文件系统的宿主,块设备驱动程序和内核的接口与字符设备驱动程序的接口是一样的,也通过一个传统的面向块的接口与内核通信,但这个接口对用户来说是不可见的。
网络接口设备是由内核网络子系统驱动的,它负责发送和接收数据包,而且无须了解每次事务是如何映射到实际被发送的数据包的。
现介绍的usb主机设备驱动程序是运行时加载的块设备驱动程序。
1 USB接口介绍及其主机工作过程111 USB接口介绍11111 US B概况US B是通用串行总线(Universal Serial Bus)的缩写,它是一种快速,灵活的总线接口。
与其他通信接口比较,US B接口的最大特点是易于使用,这也是 2006年2月1日收到第一作者简介:赵 明,男,现为中科院研究生院信号与信息处理专业在读硕士,研究方向:嵌入式系统开发。
E-mail: zhao1980m ing@ US B的主要设计目标。
US B是典型的主/从结构的总线标准,即只有US B Host才能与US B device连接,两个主机端口或设备端口是不能通信的。
US B 接口定义了低速,全速和高速的数据传输。
其中,前两种传输速率被定义在US B1.1标准中,后一种则是US B2.0新引入的传输速率。
US B主机在US B总线中是一个起协调作用的实体,它控制所有对US B 总线的访问。
一个US B设备想要访问总线,必须由主机给予它使用权。
11112 US B OHC I标准在软件层面上看,US B主机控制器是一个比较复杂的接口,它需要按照US B标准管理所有与之相连的外设。
1995年底,Compaq,M icr os oft等公司推出了US B OHC I(开放式主控制器接口)标准。
这是一个完全开放的标准,它定义了一系列寄存器和相关的数据结构,以统一US B主控制器和驱动程序接口。
也就是说,操作系统只需有US B OHC I标准的驱动程序,按照OHC I标准的US B主机控制器就可以在系统上得以应用。
这就相当简化了US B软硬件设计过程。
处理器和US B OHC I主机控制器之间有2种通信方式:●通过OHC I映射在处理器内存空间的一组固定偏移量的寄存器(OHC I寄存器)通信;●在OHC I寄存器中,设置了指向处理器存储器空间的指针(地址),处理器允许OHC I控制器用DMA的方式直接与这块存储器空间交换数据,即利用这种共享内存的通信方式实现US B的数据通信。
12期陈 萍,等:通过缩放字符比例在Word文档中隐藏信息的算法研究按照OHC I标准,共享内存中定义了2个基本的数据通信结构:端点描述符和传输描述符。
主控设备要为每个US B端点分配端点描述符。
它包括了此端点的相关信息:最大包的长度,端点地址,端点速度以及数据流的方向等。
端点描述符在内存中用链表结构存储。
传输描述符连接在端点描述符上,它记录了要通过此端点传输包的信息,包括传输数据在内存中的地址和传输状态。
112 USB主机工作过程US B主机负责管理所有的US B从设备的数据传输以及US B设备四种状态(运行,挂起,唤醒,复位)的切换。
当US B设备连接到US B集线器的下行端口时,该集线器将报告端口的当前状态发生改变,并指示有设备连接,同时集线器还要报告当前连接的设备是全速还是低速;当设备从US B总线移走时,集线器也会报告主机当前状态发生改变,并指示设备已断开连接。
当US B主机检测到有新设备连接到总线时,会做如下操作:①主机会向设备发送一个总线复位信号,使设备处于默认状态;②主机发送一个get_descri p t or请求,来获取默认管道的最大传输子节数;③主机为设备分配一个地址;④主机了解设备的能力;⑤主机通过分析获取到的描述符,确定当前主机驱动是否有能力支持该设备。
2 L i n ux的USB O HC I驱动程序接口分析因为有OHC I定义的寄存器标准,L inux下也提供相应的驱动程序,所以只要符合OHC I标准的US B主机接口,很容易在L inux下被驱动起来。
下面给出针对Lpc2210的US B HOST驱动程序。
I nt__devinitHc_add_ohci(struct pci_dev3dev,int irq,void3me mbase, unsigned l ong flags,ohci_t33ohci,const char3na me,const char3sl ot_na me);Extern void hc_re move_ohci(ohci_t3ohci);Static ohci_t3l pc2210_ohci;Static void__init l pc2210_ohci_configure(void){//关闭US B总线时钟CLKCON&=~CLKCON_US BH; I F CONF I G_MAX_ROOT_P ORTS<2//1个主控设备端口,1个从设备端口M I SCCR&=~M I SCCR_US BP AD; ELSE//2个主控设备端口M I SCCR|=M I SCCR_US BP AD; endif//配置US B总线的锁频环UP LLCON=Finsert(0x78,Fp ll_MD I V)|Finsert(0x02,Fp ll_ P D I V)|Finsert(0x03,Fp ll_S D I V)//开启US B总线时钟CLK|=CLKCON_US BH;Delay(10);}Static int_init l pc2210_ohci_init(void){I nt ret;Lpc2210_ohci_configure();//添加OHC I设备Ret=hc_add_ohci((struct pci_dev31,I RQ_US BH,(void3)(i o_p2v(US BHOST_CT L_BASE)),0,&l pc2210_ohci,“usb-ohci”,“l pc2210”);Return ret;}Static void__exit l pc2210_ohci_exit(void){Hc_re move_ohci(l pc2210_ohci);//关闭US B总线时钟CLKCON&=~CLKCON_US BH;}Module_init(l pc2210_ohci_init);Module_exit(l pc2210_ohci_exit);函数l pc2210_ohci_configure负责l pc2210处理器上US B接口的初始化,主要负责配置US B接口的锁频环和接口状态。
驱动程序的核心是hc_add_ ohci函数。
它负责向系统注册一个OHC I标准的US B设备,这是linux系统US B OHC I驱动程序的底层接口。
3 USB HO ST驱动的验证常用的US B设备主要有U盘,US B摄像头等,它们在L inux内核中都有相应的驱动程序。
可通过配置L inux内核时在US B support菜单中添加对各5992科 学 技 术 与 工 程 7卷种US B设备的支持。
系统启动后通过命令: Mount∃t usbdevfs none/p r oc/bus/usb加载US B设备文件系统。
当U盘等设备插入后,可通过命令:Mount∃t vfat/dev/scsi/host0/bus0/target0/ lun0/part1/mnt/udisk把U盘挂载到/mnt/udisk目录下。
观察U盘是否挂接成功,即可判断驱动是否正常工作。
4 结束语本驱动已在某航天项目中的AR M跟踪系统板中成功应用,系统工作可靠,效果令人满意。
应用此种开发模式还可针对组件快捷准确的开发出支持其驱动的程序。
参 考 文 献1 周立功,等. ar m嵌入式系统软件开发实例(二).北京:北航出版社,20062 周立功,等. ar m嵌入式系统实验教程(二).3 毛德操,胡希明. 嵌入式系统.杭州浙大出版社20034 刘 淼. 嵌入式系统接口设计与L inux驱动程序开发.北京:北航出版社,2006Programm i n g Gu i de for L i n ux USB D ev i ce D r i versZ HAO M ing1,2,MA J ian-kang1(Xiπan I nstitute of Op tics and Precisi on Mechanics1of CAS,Xi’an710119;Graduate School2of CAS,Beijing100039,P.R.China)[Abstract] Pr ogra mm ing f or L inux US B device drivers is a comp lex j ob1fr om the material fl ow of p r ogra mm ing US B device drivers,the main details of devel op ing p r ocess and i m portant attenti on are given1Hope that this can supp ly a p r ogra mm ing guide f or L inux US B device drivers.[Key words] US B(the universal serial bus) device drivers L inux(上接第2990页)3 Cachin C,poritz J A.Secure I ntrusi on2t olerant rep licati on on the internet,Pr oceddings of the I nternati onal Conference on Dependable System s and Net w orks,20024 Tanenbau m A S,van Steen M.Distributed Syste ms Princi ples andParadig ms.杨剑锋,常晓波,李 敏,译.北京:清华大学出版社,2004 5 Felber P,Schi per A.Op ti m istic active rep licati on.D istributed Computing syste m,2001,21st I nternati onal Conference on Ap ril 2001Research of Repli ca ti on Technology i n I n trusi on-tolerance SystemSH I J i-ying,CAO M ing-zeng3,L I U J ian-hua,L I Hong-yan(School of Electrical and Aut omati on Engineering,Tianjin University,Tianjin300072,P.R.China)[Abstract] An i m p r ove ment on passive rep licati on technol ogy is p r oposed because traditi onal passive rep licati on can not t olerant Byzantine fault.The model can p ri m ary t olerant Byzantine fault.Based on adding hard ware check method,overco me shortcom ings of passive rep licati on,and taking in advantage of l ow cost and easy realizati on of passive rep licati on technol ogy are p resented.The credible of gr oup co mmunicati on al w ays is i m port and difficult.It is communicati on message is t oo large.Base of tradati on gr oup co mmunicat on model,design a credible gr oup communicati on model,the advantage is co mmunicati on message l o wer and guarantee that all rep licas are consistent at last.[Key words] intrusi on-t olerance passive rep licati on gr ou Pcommunicati on Byzantine fault 6992。