无线USB 通信装置的研制

2014-01-14 00:43齐贵宝李传南宋占伟
吉林大学学报(信息科学版) 2014年4期
关键词:集线器PC机驱动程序

齐贵宝,李传南,宋占伟

(吉林大学电子科学与工程学院,长春130012)

0 引 言

USB(Universal Serial Bus)作为一种通讯协议已被广泛应用,且将取代部分已有的串行协议而成为一种主流,现在几乎所有的计算机都配备USB接口。USB是非常成功的标准,日常生活中USB接口的设备普遍存在。但现在一台计算机通过USB电缆连接多个外设的情况给使用者带来了许多不便,比如外设和电脑的放置距离近,受到限制;多个USB外设放在电脑旁,使办公环境显得拥挤。

假设办公室中的打印机、扫描仪、移动硬盘和数码相机等USB外设都可以和电脑以无线方式进行连接,将省去大量繁杂的数据线缆[1,2]。同时由于摆脱了数据线缆的限制,可以增加外设与电脑之间的放置距离,给人们的日常生活和工作带来极大的方便。

无线USB是一个全新无线传输标准,近年来英特尔、三星、NEC、惠普、CYPRESS等公司推出了一些专门的无线USB芯片,但主要是针对鼠标、键盘这类数据量较小的低速设备。对高速无线USB单芯片的解决方案在市面上很少见,为数不多的几款高速无线USB多芯片解决方案产品也由于其价格较高,严重限制了其普及。笔者采用通用器件搭建无线USB系统,旨在开发出适合打印机、扫描仪等对速度要求稍高的USB设备的无线USB装置(包括点对点的无线USB装置和一点对多点的无线USB集线器),以求提高高速无线USB设备的性价比和普及度。实验中,笔者实现了无线打印功能。

1 系统的结构原理及硬件设计

1.1 无线USB通讯装置构成

无线USB通讯装置的系统构成如图1所示,分为主机端和客户端,主机端用于与PC端进行USB通信,客户端用于与打印机或集线器进行数据通信。该系统中,主机端的控制器为S3C2440控制器,连接有WiFi(Wireless Fidelity)模块和USB Device模块。PC(Personal Computer)机通过USB口与主机端的USB Device模块相连接。客户端的控制器为S3C2440控制器,连接有WiFi模块和USB Host模块。客户端的USB Host模块,在点对点的模式下,直接与打印机相连接;在一点对多点的模式中,该模块与USB集线器相连接,将打印机连接到USB集线器上。

图1 系统硬件构成Fig.1 Hardware block diagram of the system

1.2 S3C2440控制器最小系统

主机端和客户端都需要一个控制器,控制与PC机或集线器、打印机的通信。该系统采用三星公司的16/32位精简指令集微处理器S3C2440作为控制器核心。S3C2440控制器的核心处理器采用16/32位ARM920T的精简指令集微处理器。ARM920T实现了MMU(Memory Management Unit)、AMBA(Advanced Microcontroller Bus Architecture)总线和高速数据、指令缓冲体系结构;系统资源和外围接口丰富,包括电源管理器、外部存储器控制器、DMA(Direct Memory Access)、SDIO(Secure Digital Input and Output Card)接口、USB Device接口和USB Host接口等[3]。S3C2440控制器内部未集成存储单元,故需要外接Flash和 RAM 存储器[4]。

1.3 WiFi模块

主机端与客户端之间需要采用无线方式通信,出于对高速、距离和稳定性等的考虑,该系统采用WiFi无线技术。WiFi是当今使用最广的一种无线网络传输技术,大部分笔记本电脑、智能手机和平板电脑等都支持该技术。该系统中采用的核心芯片为MARVELL 8686,接口为SDIO接口,可直接与S3C2440控制器的SDIO接口相连接,最高无线传输速度可达54 Mbit/s。

1.4 USB Device模块

PC机与主机端采用USB通信协议,且PC端为USB Host接口,该系统中主机端需要USB Device接口。S3C2440控制器内置USB Device控制器,允许控制传输、中断传输和批量传输,批量传输时可以使用DMA功能,支持挂起和远程唤醒功能。它兼容USB1.1协议,有5个带FIFO(First Input First Output)的端点,端点0(16字节,控制端点)和端点1、2、3、4(128字节,批量端点)。

1.5 USB Host模块

客户端与打印机或集线器进行USB通信,要求客户端具备USB Host接口,实现对USB从设备的控制。S3C2440控制器集成了USB Host控制器,有两个USB Host端口,兼容USB1.1协议,支持USB2.0的全速和低速设备。

1.6 集线器模块

在实现一点对多点的USB通信中,需要用到USB集线器。USB集线器,又称为USB Hub,可将一个USB接口转换为多个接口,且这些接口可同时使用。USB集线器应用于使用星型拓扑结构的网络中,连接多个计算机或网络设备。USB集线器技术已经很成熟,而且价格低廉,故实验阶段购买成品的USB集线器。

2 系统软件设计

2.1 系统整体软件设计

该系统中以HP LaserJet 1020打印机为例,对系统软件进行设计,系统软件的流程图如图2所示。该系统的软件分为运行于PC机上的打印监控程序和针对该无线USB设备的驱动程序,运行于主机端的USB Device驱动程序和WiFi驱动程序、应用程序,运行于客户端的USB Host驱动程序和WiFi驱动程序、应用程序。主机端和客户端均运行LINUX操作系统,相关的驱动程序和应用程序均在LINUX操作系统下开发运行。PC机运行打印监控程序,监控PC机是否有打印消息,当有打印消息时提示“是否使用无线打印机”。确定使用无线打印机后,PC机调用PC机上的针对该无线USB设备的USB驱动程序将文件数据传输给主机端。主机端的控制器通过WiFi模块将数据传输给客户端。客户端的控制器将通过与其连接的USB Host模块,控制打印机进行打印,或通过USB集线器间接控制打印机进行打印。打印机打印完毕后,PC机上的打印监控程序继续监控打印消息。

图2 系统软件流程Fig.2 Flow chart of software

2.2 PC机无线USB设备驱动

该驱动程序用到的软件有DDK(Drive Development Kit)、DRIVERSTUDIO、VC++6.0[5]。DDK一般指windows设备驱动程序开发包。如果你想开发一个设备驱动程序,如显卡驱动程序,就需要使用DDK。DriverStudio是一套用来简化微软windows平台下设备驱动程序的开发、调试和测试的工具包,它为windows下USB驱动的开发提供了模板,可以有效降低驱动开发的难度和提高开发的效率。VC++6.0为驱动开发的编辑器和编译器。当该无线USB装置插入时,驱动程序可以根据其VID(Vendor IDentification)和PID(Product IDentification)进行匹配识别。

2.3 WiFi驱动

在LINUX内核中集成了SDIO驱动和IEEE802.11协议,在配置内核时添加对SDIO接口和IEEE802.11协议的支持,然后在网络配置中添加对MARVELL 8686芯片的支持,同时将WiFi模块需要的固件程序放到LINUX文件系统的lib目录下[6,7]。在LINUX内核启动时自动运行脚本文件完成对WiFi模块的启动和配置,脚本文件的内容如图3和图4所示。WiFi的组网模式有一点对多点模式和Ad-Hoc(点对点)模式,该项目中将WiFi配置成Ad-Hoc模式,实现主机端和客户端点对点无线连接和数据通信。

图3 A端WiFi配置脚本Fig.3 Configuration script of WiFi on client terminal

图4 B端WiFi配置脚本Fig.4 Configuration script of WiFi on Host terminal

2.4 USB Device模块驱动

在LINUX操作系统下开发针对USB Device模块的Read、Write、Open、Close函数,分别实现对USB Device模块的读、写、打开和关闭操作[8]。同时在LINUX内核中添加对USB Device模块的中断处理,实现USB Device模块控制端点的数据收发和数据端点的数据收发,其中的数据包含USB Device的VID、PID,PC机发来的数据,USB Device返回的数据等。

2.5 LINUX下打印机支持软件

LINUX下打印机支持软件包括打印机操作工具包、针对特定打印机的固件、文件格式转换工具等。源码的编译是在PC机的LINUX操作系统下进行的,需要用到交叉编译器。命令的输入是在超级终端,操作步骤如下[9]。

1)编译foo2zjs。下载foo2zjs源码,编译后得到foo2zjs和sihp1020.dl两个文件,拷贝到客户端装置的文件系统中。其中foo2zjs为打印操作的可执行工具,sihp1020.dl为HP1020打印机所需要的固件。

2)编译ghostscript-8.15。下载ghostscript-8.15源码,编译后得到gs可执行工具,该工具用于将PDF格式的文件转换为PBM格式的文件。

3)插接USB打印机到客户端,客户端超级终端打印信息如下。

usb 1-1:new high speed USB Device using s1r72v17 and address 2

usb 1-1:Product:HP LaserJet 1020

usb 1-1:Manufacturer:Hewlett-Packard

usb 1-1:SerialNumber:JL3ESMZ

usb 1-1:configuration#1 chosen from 1 choice

drivers/usb/class/usblp.c:usblp0:USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x03F0 pid 0x2B17

4)在客户端超级终端,执行“mdev-s”命令,生成lp0节点,位于/dev/lp0路径下。

5)在客户端超级终端,执行“cat sihp1020.dl>/dev/lp0”命令,加载打印机固件。

6)使用gs工具将PDF文件转换生成PBM文件,命令如下:

./gs-q-dBATCH-dSAFER-dQUIET-dNOPAUSE-sPAPERSIZE=a4-r1200x600-sDevice=pbmrawsOutputFile=test.pbm test.pdf

7)调用foo2zjs工具打印PBM文件,在客户端超级终端执行如下命令:./foo2zjs-z1-p9-r1200x600 test.pbm>/dev/lp0

2.6 主机端应用程序

主机端的应用程序主要完成USB Device模块与PC机的通信以及WiFi模块的数据收发,因此开启两个线程分别完成上述两个任务。USB Device模块接收数据时,采用中断的方式。由于UDP协议容易出现丢包的现象,无线传输时采用TCP传输协议[10]。传输文件前,需要先发送文件的大小,以方便另一端进行校验。

2.7 客户端应用程序

客户端的应用程序主要完成WiFi模块的数据收发以及打印机的控制。WiFi部分程序不断检测是否有新文件到来,当有新文件到来时,先对文件的大小进行校验,校验通过后将文件转换为PBM格式并调用打印机进行打印。

3 系统整体测试

系统的实物连接图如图5所示。左端为主机端,右端为客户端,主机端通过一条USB线与PC机相连,打印机或集线器连接到客户端的USB HOST接口。PC机上打印监控程序界面如图6所示,点击该应用程序的“隐藏”按钮后可以后台运行。将主机端插接到PC机的USB口后,在资源管理器中可以看到该无线USB设备,表明该设备驱动安装成功,如图7所示。PC机上点击“打印”按钮后,弹出如图8所示的提示,点击“确定”按钮即可完成一次打印。

在实现一点对多点的无线USB集线器功能时,将USB集线器插接到客户端的USB Host接口,将打印机连接到USB集线器的一个USB口上。打印效果图如图8所示,打印的内容既含文字又含图片。

图5 硬件连接和打印效果图Fig.5 Hardware connection and effect diagram of the printer

图6 PC机上打印监控程序Fig.6 Monitoring program of printing on PC

图7 资源管理器中无线USB设备Fig.7 The wireless USB Device in explorer

图8 无线打印提示消息Fig.8 Prompt message of wireless printer

测试中打印了一份6页的PDF文件,文件大小为627 kByte,比较使用无线打印机和有线打印机的打印效果,前者比后者延时大约2 s左右,主要用于PDF格式到PBM格式的转换。对于文件不大的情况,无线传输时间可以忽略。

4 结 语

无线USB装置的研制可有效解决USB设备放置距离的问题以及有线USB设备连接混乱的问题。该项目成功实现了无线打印功能。项目中实验阶段硬件部分采用两块ARM9开发板,为了进一步减少成本、提高集成度,今后可以将开发板上未使用的模块去掉,同时将USB集线器芯片集成到电路板上。随着人民生活水平不断提高,无线USB装置的应用将有更广阔的空间。

[1]黄勇,邵飞,顾娟,等.无线USB标准简介[J].信息技术与标准化,2005(7):25-28.HUANG Yong,SHAO Fei,GU Juan,et al.Brief Introduction of Wireless USB Specification[J].Information Technology &Standardization,2005(7):25-28.

[2]白凤娥,霍利锋,刘振峰,等.无线USB原理及其发展[J].信息技术,2006(12):184-186.BAI Fenge,HUO Lifeng,LIU Zhengfeng,et al.Principles and Its Development of Wireless USB [J].Information Technology,2006(12):184-186.

[3]SAMSUNG ELECTRONICS.S3C2440A 32-Bit RISC Microprocessor User's Manual[EB/OL].(2004-07-01).[2013-03-26].http://www.samsung.com.

[4]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.WEI Dongshan.Embedded Linux Application Development Completely Manual[M].Beijing:Posts& Telecom Press,2008.

[5]刘荣.圈圈教你玩USB[M].北京:北京航空航天大学出版社,2008.LIU Rong.Circle Teach You Play USB[M].Beijing:Beihang University Press,2008.

[6]罗娜.基于88W8686的手持终端WiFi功能的设计与实现[D].武汉:武汉理工大学信息工程学院,2010.LUO Na.88W8686-Based WiFi Design and Implementation for Handheld Device[D].Wuhan:School of Information and Engineering,Wuhan University of Technology,2010.

[7]贺琨,张立文,宋占伟,等.基于WiFi通信的嵌入式集装箱数据终端[J].吉林大学学报:信息科学版,2012,30(6):579-584.HE Kun,ZHANG Liwen,SONG Zhanwei,et al.Embedded Container Data Terminal Based on WiFi Communication [J].Journal of Jilin University:Information Science Edition,2012,30(6):579-584.

[8]宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社,2010.SONG Baohua.Linux Device Driver Development Explain[M].Beijing:Posts& Telecom Press,2010.

[9]黄艳,马旭东.嵌入式Linux下基于ARM9的USB打印机控制器的设计[J].工业控制计算机,2008,21(5):66-67.HUANG Yan,MA Xudong.Design of USB Printer Controller Based on ARM9 under Embedded Linux[J].Industrial Control Computer,2008,21(5):66-67.

[10]孟祥磊,干莽,张婷,等.基于WiFi的嵌入式目标定位与检视终端[J].吉林大学学报:信息科学版,2012,30(5):480-486.MENG Xianglei,GAN Mang,ZHANG Ting,et al.WiFi-Based Embedded Target Location and View Terminal[J].Journal of Jilin University:Information Science Edition,2012,30(5):480-486.

猜你喜欢
集线器PC机驱动程序
基于差分QPSO的多能源集线器系统优化调度
音乐聆赏新世代 Bowers & Wilkins Formation Audio无线音乐集线器
计算机硬件设备驱动程序分析
基于PC机与单片机的多机通信技术及抗干扰方法
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
Microchip拓宽USB3.0集线器应用范围
Microchip推出具有FlexConnect功能的新型智能集线器,拓宽USB 3.0集线器的应用范围
基于MPC8280的CPU单元与内部总线驱动程序设计