首 页 行业热点 新车 试驾评测 养车用车 车型库
当前位置:首页基于嵌入式Linux下的USB3.0驱动程序开发方法研究

基于嵌入式Linux下的USB3.0驱动程序开发方法研究

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

因篇幅问题不能全部显示,请点此查看更多更全内容