2010年(第39卷)第2期甘肃科技纵横基于嵌入式Linux下的USB3.0驱动程序开发方法研究
杨军1,2
(1.青岛科技大学信息科学学院,山东青岛266601;2.天水师范学院物信学院,甘肃天水741000)
摘要:USB3.0是新一代通用串行总线,该总线下的设备目前还没有大规模生产,主要原因是它的通信标准及协议刚由USB3.0开发小组(超过200家公司)制定出来。USB3.0必将很快取代USB2.0成为今后市场的主流USB设备接口。本文针对嵌入式Linux操作系统内核提供编写设备驱动程序的基本框架结构给出了基于嵌入式Linux下的USB3.0驱动程序开发方法。
关键词:嵌入式Linux;USB3.0;驱动程序
所谓嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件都可裁剪,适用于应用系统对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统[1]。嵌入式系统由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序4部分组成。搭建一个嵌入式系统是开发一个嵌入式产品的基础。由于嵌入式系统的灵活性和应用的广泛性使它的硬件形式也是多种多样层出不穷,这就给工程师们提出更高的要求。USB3.0通信标准和协议的推出必将带动基于USB3.0接口设备的大量生产。对于每一种USB3.0产品在嵌入式应用中都必须开发其相应的设备驱动程序才可使该产品正常工作。因此,嵌入式系统工程师们对于新标准下的USB3.0产品驱动程序的设计与开发应该做好充分准备。
1嵌入式Linux驱动开发
1.1嵌入式Linux
嵌入式Linux系统有两层含义,狭义的嵌入式Linux系统指的是嵌入式Linux操作系统,是指对Linux 经过裁剪后,固化在容量只有几K到几M字节的存储器芯片或M CU中,应用于特定嵌入式场合的专用Lin-ux操作系统。广义的嵌入式Linux系统指的是基于嵌入式Linux操作系统构建的嵌入式系统。
嵌入式Linux系统包括嵌入式Linux内核、文件系统和用户应用程序三部分。嵌入式Linux内核包含Linux的系统调用接口、设备驱动以及Linux内核机制;嵌入式文件系统是嵌入式操作系统的一部分,它的任务是对逻辑文件进行管理,其工作包括提供对逻辑文件的操作接口,方便用户操作文件和目录;用户程序通常指运行于用户空间能接受内核管理和调度的各种可执行程序。
1.2Linux驱动
驱动程序是Linux内核的重要组成部分,可以看作是应用程序和物理设备之间的一个软件层,由设备驱动程序来完成操作系统与硬件设备之间的交互。对于嵌入式开发而言由于没有通用的驱动程序,因而驱动程序开发便成为嵌入式系统设计过程的一个重要环节。
驱动程序包括配置初始化子程序和I/O请求子程序。配置初始化子程序在初始化时被调用一次,I/O请求
子程序的调用通过系统调用或硬件中断信号来触发。自动配置和初始化子程序一般在设备接入系统时或者加载设备驱动时调用,其主要负责检测所需驱动的硬件设备是否存在或是否能正常工作。如果该设备正常,则对这个设备及其相关的驱动程序需要的软件状态进行初始化。驱动程序所提供的与设备的打开、释放、读写和控制操作相对应的入口点函数都属于服务于I/O请求的子程序,并且通过file_operations结构向系统进行说明。中断服务子程序在嵌入式Linux系统中并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux系统接收硬件中断,再由系统调用中断服务子程序。
与应用程序不同,设备驱动程序属于内核的一部分,所以驱动程序的开发就是Linux内核的开发。完成一个设备驱动程序后,用户可以动态地将该设备驱动程序加载到内核中或从内核中卸载。加载和卸载的入口函数为init_module()和cleanup_module()。除此之外对于设备的每一种操作设备驱动程序中都包含其相应的入口函数。字符型和块设备驱动程序中包括打开设备函数open()、关闭设备函数close()、读数据函数read ()、写数据函数write()和I/O控制函数ioctl()等。
韦东山嵌入式linux视频2USB3.0驱动程序设计
信息技术
33
2010年(第39卷)第2期甘肃科技纵横
2.1USB
3.0系统架构
目前国内对USB系统的研究主要在实际应用方面,一些以往的计算机通用外设和主流的数码电子产品中己经广泛采用USB技术。并成为当今嵌入式开发和应用中的一个热点。相比于USB2.0总线USB3.0是一个超高速总线并且具有和2.0总线相似的系统架构。USB3.0系统架构分为三个层次结构。即:USB3.0host 层;USB3.0hub层;USB3.0的并行设备层。USB3.0架构向下兼容2.0总线体系结构,因此USB3.0是一个双总线系统架构(见图1)。
USB3.0host是USB3.0和USB2.0设备连接和通信的主控制器。USB3.0继承了USB2.0的核心结构,虽然做了一些外部扩展以适应双总线架构但基本的星形拓扑结构是和USB2.0一样的。对于USB3.0总线任务是通过一个复合电缆及相关连接器构成的。USB3.0主控制器完成包括超高速总线和非超高速总线接口的控制。
图1USB3.0双总线架构
USB3.0集线器是用于连接更多USB设备到主控制器而提供更多接口的一个逻辑设备。USB3.0连接模
式允许探测和配置USB设备的最高传输速度。在主机和设备间的最高信号传输速度和当前主控制器的功能及配置的探测以及USB设备的配置情况是通过所连接的集线器来实现探测和配置任务的。USB3.0主机同时包括超和非超高速总线接口,采用并行总线方式因此可使两种接口通过hub同时在主控制器的控制下有效工作。
USB3.0在应用层上至少能达到300M byte/s的数据吞吐量。新规范与前代版本兼容,然而新接口需要新的线缆和连接器,而且传输距离被限制在3米,而目前的USB产品可以支持5米长的线缆。3.0标准,也被称
作是超高速USB(SuperSpeed USB),在一些特性上是独一无二的。它使用5个端口连线、两个用于发送,两个用于接收,一个是地线、来实现全双工从而达到5Gb/s 的物理层速率,目前的USB产品采用两线,半双工的架构。外观上Type-A的接头没有改变,但内部有5个连线来支持全双工,新的连接器兼容旧的插口。另外,3.0版本在链路上采用了中断驱动,而不是目前的轮检方法,这样进一步降低功耗。
2.2USB
3.0串口驱动设计实例
USB驱动分为USB主机驱动和USB设备驱动,如果系统的USB主机控制器符合OHCI等标准,则主机驱动的绝大部分工作都可以沿用通用的代码。
对于一个USB设备而言,它至少具备两重身份:首先它是“USB”的,其次它是“自己”的。USB设备是“USB”的,指它挂接在USB总线上,其必须完成usb_driver的初始化和注册;USB设备是“自己”的,意味着本身可能是一个字符设备、tty设备、网络设备等,因此,USB设备驱动中也必须实现符合相应框架的代码。
在Linux内核中,串口属于tty设备,对于一个USB 串口设备而言,其驱动主要由两部分组成:usb_driver的成员函数和tty设备的tty_operations结构体成员函数。
在USB串口设备驱动的模块加载函数中,将注册对应于USB串口的usb_driver,利用static int__init usb_serial_init(void)函数初始化和注册tty驱动。利用USB串口设备驱动的模块卸载函数static void__exit usb_serial_exit(void)将注销对应于USB串口的usb_driver,并注销tty驱动。
在usb_driver的探测成员函数usb_serial_probe()中,将初始化USB端点等信息,并通过usb_set_intfdata ()设置接口私有数据,它也将初始化urb(USB请求块)。相反,在断开成员函数usb_serial_disconnect()中将设置接口私有数据为NULL,并释放引用计数。
在tty_operations的各write()、read()等成员函数中,将调用usb_serial_driver结构体中的相应函数,usb_serial_driver结构体中封装了串口的各函数(读写、读写中断端点完成函数、读写批量端点完成函数等)。
目录drivers/usb/serial/下generic.c文件中提供了USB串口驱动的通用打开/关闭、读/写函数等,如usb_serial_generic_w rite()、usb_serial_generic_w rite_bulk_ callback()、usb_serial_generic_read_bulk_callback()等。
3结束语
本论述归纳了Linux驱动程序设计的一般方法,并根据工程实践给出了一个基于嵌入式(下转39页)
信息技术34
2010年(第39卷)第2期甘肃科技纵横
(上接34页)Linux平台下USB3.0驱动程序的设计方法。实践表明:开发一个稳定、高效的设备驱动程序需要工程师把握一个原则就是不要给用户强加任何策略,因为不同的用户有不同的需求,驱动程序应该处理如何使硬件工作的问题,而将怎样使用硬件的问题留给上层应用。总而言之,驱动程序应当为上层应用提供一个使用设备的工具箱。
参考文献:
[1]杨恒.ARM嵌入系统设计及实践[M].西安:西安电子科技大学出版社,2005.
[2]李驹光,郑耿,江泽明.嵌入式Linux系统开发详解[M].北京:清华大学出版社,2006.
[3]Universal Serial Bus Specification.Http://,2000.4.
集中于中低端用户。他们使用CMMB手机电视的目的就是通过手机来观看电视节目,从而获得简单的文化生活。这个体对节目清晰度以及节目的片源都没有太高的要求,需求主要停留在“有和无”的层次。而TD标准的手机电视已经不仅能够满足电视信号覆盖,还能够满足中高端用户体对手机电视内容点播服务的需求。用CMMB观看电视节目,价格便宜,不走流量。而如果需要互动,或者收看在传统电视节目里没有的短视频电视节目,则可以通过TD制式的流媒体方式来观看。
(3)虽然目前TD与CMM B的合作从技术上来说,并没有做到融合,严格意义上只是两种功能的相互组合。但是TD+CM MB迈出良好的开端之后,电信运营商与广电运营商的下一步合作具有非常广阔的空间。在目前双方进行合作的手机电视业务方面,由于双方共用一个屏幕,那么可以将单向广播与双向交互结合起来,也就是将广播电视业务与移动通信业务相结合,将需要大量下行的数字电视节目传输由广电的CM M B网络来承载,而在数据上行和用户信息收集方面,则由具有上行回路的TD网络来运行[2]。
(4)在收费渠道方面,中国移动、中国联通、中国电信等经过多年的建设,不仅拥有遍布大街小巷的营业网点,而且已经建成全国联网的BOSS(电信业务运营支持系统)系统,能够做到实时计费、融合计费。收费渠道方面的优势,完全可以帮助广电解决CM MB收费方面存在的难题。
4用户关心的问题
4.1如何收看电视节目
手机用户无论采用哪家公司的3G服务都需要更换成带有CM M B芯片3G手机才能收看电视节目。在使用3G手机的前提下,移动和电信用户不需更换手机号就能升级使用3G。其中,移动推出“三不政策”,即所有中国移动用户不用换手机号、不用换SIM卡、也不用到营业厅办理登记手续,只需将原手机SIM卡插入3G 手机即可。中国电信133/153在内的全部用户均可以使
用目前189“天翼”业务。中国联通130、131、132、156用户无需换号可直接升级3G。
没有手机的用户想收看电视节目必需购买电视终端,其价格在四佰元到几千元不等。
4.2费用问题
中国移动将在统一定价的基础上,针对使用3G的用户给予折扣。中国电信在189号段推出了商旅套餐
和畅聊套餐。中国联通3G的资费水平将不会超过2G 时代。中国多媒体广播电视推出包月12元收费标准。
4.3网络覆盖问题
中国移动表示2011年TD网络将覆盖全国所有地市。电信今年7月将在全国开展3G服务。中国联通计划于上半年在中国55个城市推出3G服务,并且计划在今年年底前将该服务的覆盖范围扩大至282个城市。广电部门已经在全国地级以上市区建设了地面增补网络[1]。
5“手机电视”的应用前景
采取移动多媒体广播方式,可以高效率、低成本地向流动人和交通工具提供20多套电视、30多套广播以及各类信息服务,满足这些用户的需求,市场潜力巨大,发展前景良好。同时,作为广电行业推荐标准的CMM B完全具有成为国标的核心优势广电借助卫星通信,能极好地解决手机电视信号流畅的问题。手机电视将成为广电部门更好开展业务,传播优秀广播电视节目的又一信息化平台。
参考文献:
[1]张忠明.什么是3G[EB/OL].www.sogu/web?query =158614272&_asf=www.sgou&w=01029901&num=10&
p=40040101&dp=1.
[2]马龙.TD与CM M B双方技术优势互补[EB/OL].www.
lokmw/html/jgdiahang/wz-59.html.
[3]王其武.中国移动广播多媒体CM M B应用[EB/OL].www.
jpw8/cteye/2000/312/1031289581FICE8J04H20AA27E52.
html.
信息技术
::::::::::::::::::::::::::::::::::
39
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论