标题 | 基于ARM的USB打印机驱动设计 |
范文 | 摘要摘要:在众多嵌入式处理器中,ARM处理器以其低成本、低功耗和高性能等优点,Linux操作系统凭借其开源、稳定、定制、可移植性强、硬件支持广泛、网络功能强大等特点,使得ARM Linux成为嵌入式系统设计的一种趋势。介绍了基于ARM的微型打印机硬件、软件设计与实现。系统采用ARM9 MDK9263G核心模块控制HP打印机实现微型打印功能。 关键词关键词:ARM处理器;Linux操作系统;可移植性;微型打印机;MDK9263G核心模块 DOIDOI:10.11907/rjdk.151910 中图分类号:TP319 文献标识码:A文章编号文章编号:16727800(2015)011010402 基金项目基金项目: 作者简介作者简介:肖文静(1990-),女,江苏靖江人,西安工程大学计算机科学学院硕士研究生,研究方向为便携嵌入式仪器打印驱动设计。 0引言 在Linux中,PostScript 是打印机特有的页面描述语言和编程语言,由Adobe公司开发。需要打印的文件首先通过应用程序生成PostScript 文件,在通过一系列过滤器后传送给打印机打印。有一些打印机直接在内部集成了PostScript 语言解析器,不经过任何过滤器直接将PostScript文件传送给打印机,但是这种技术相对来说比较昂贵。如果打印机厂商要在其产品中使用PostScript语言,该厂商必须给Adobe公司支付一笔费用,使用PostScript语言的打印机所花费的费用将非常昂贵[1]。所以一般低廉的打印机是不能解析PostScript文件的,需要经由GhostScript将PostScript 文件转换成打印机能够识别的打印命令进行打印输出[2]。选用的HP系列打印机,还需要配置编译惠普专用的打印机驱动程序Hpijs,这个驱动程序由GhostScript驱动接口Ijs去调用,才能实现最终打印。 1MDK9263G功能介绍 AT91SAM9263嵌入了一个基于200 MIPS(每秒百万条指令)的ARM926EJS微控制器(MCU),从而解决了图形界面、数据密集型应用(比如联网的医疗监测设备和GPS导航系统)中基于ARM9的传统微控制器遭遇的瓶颈问题。 1.1硬件特性 MDK9263G核心板集成了AT91SAM9263处理器,主频200MHz,板载内存、RTC、LCD接口、CF卡口、电源接口,可独立应用。底板除扩展串口、网口、USB口常用接口以外,还扩展GPRS无线通信模块、数据采集模块。9263核心板模块具有集成度高、低功耗、结构紧凑、体积小、抗干扰能力强等优点,广泛应用于工业控制、环境测试、触摸屏控制、电力监测、通信设备、网络终端等场合。 MDK9263G是一款基于Atmel AT91SAM9263处理器的嵌入式核心控制模块,具有丰富的 I/O扩展功能,为嵌入式应用提供了方便的扩展功能,配合各种外围扩展接口板,实现各种工业型数据采集。 MDK9263G面向企业客户最终应用加以设计,采用核心板+底板扩展的方式,基于MDK9263G核心模块开发平台,扩展常用串口、以太网络、USB、A/D转换、LCD显示功能等,运行Linux2.6嵌入式操作系统,方便用户的二次开发,只需修改底板,无需更改核心系统,使用MDK9263G扩展板对产品功能进行剪裁、添加、封装成最终产品,从而加速产品上市进程。 1.2软件特征 系统支持Linux 2.6.30版本的操作系统,使用ARMlinuxgcc3.4.1交叉编译工具,Linux内核中已包含以下驱动程序:10/100M以太网驱动、CAN总线驱动、2路USB HOST驱动(支持U盘、USB mass storage、USB HID、USB2UART)、USB Device驱动、片上RTC驱动、CF卡驱动、看门狗驱动、LCD驱动、触摸屏驱动、GPIO驱动等;提供Linux下UI应用,基于miniGUI;支持协议:TCP/IP、UDP、Telnet、FTP、HTTP、NFS等;支持QT/Embedded图形界面。 2USB打印机驱动设计 本设计采用HP系列打印机。HP打印机官网已经提供了丰富的打印机驱动资源。目前发行的Linux商业操作系统支持直接打印功能,但是价格昂贵。本设计提供了一种微型打印机系统设计方案,通过调用Shell脚本管理程序对设备节点的访问实现打印功能。打印机设备是Linux系统的重要USB设备驱动,但由于打印设备特定厂商、特定设备使用芯片的特殊性,厂家有自己专用的打印机命令,所以需要把打印机通用的命令转换成特定厂家打印机支持的命令,最终实现一个基于USB接口的打印机微型控制系统。 2.1配置Linux内核 make ARCH = ARM menuconfig,选上USB打印机选项,见图1。 Device Drivers → [*] USB support → <*> USB Printer support 配置成功后,插入打印机后设备节点会出现在/dev/usb/目录下一般名字"lp0"。 2.2交叉编译ghostscript 8.15 (1)解压ghostscript-8.15,改目录名称为ghostscript-8.15-x86,运行./configure后直接make,编译出x86版本。 (2)解压ghostscript-8.15,运行./configure --host=ARM-none-linux-gnueabi --prefix=/opt/printer,然后执行make。 (3)编译中会出现许多编译问题,根据具体问题来解决。 (4)执行make 编译通过 make install,至此顺利编译生成/opt/printer/bin/gs文件。 (5)file gs 查看运行平台相关信息,如图2所示。 2.3交叉编译hpijs 源码包版本hpijs-2.1.4.tar.gz,因为要驱动惠普打印机hp LaserJet 1010,所以需要编译惠普专用驱动程序hpijs镜像文件,然后给gs里面的ijs结构调用完成打印。编译安装以后会在与源码包同级的目录下自动生成一个usr目录,在usr/local/bin下面可以找到hpijs,然后把hpijs拷贝到开发板根目录下,再用下载的安装脚本install-embedded-linux-printer.sh进行安装,出现如图3所示的提示。 2.4移植Ghostscript和Hpijs可执行镜像文件到设备平台 编写Shell安装脚本程序,需要把所有的资源拷贝到本文设计的嵌入式设备上,完成安装。在gs使用的时候,可以根据参数设置调用的打印机驱动程序、打印机服务器、打印机类型、打印机分辨率、打印机纸张大小等参数。由于参数的繁杂性,通用的打印管理程序又过于庞大,而嵌入式产品最终是要面向用户,自身资源又很有限,本设计使用了占用资源很少的Shell打印管理脚本程序,以代替庞大的打印管理程序,实现打印功能。最后把Linux下的字库Fonts文件拷贝到开发板的打印机相应目录下,这样在执行打印的时候就可以找到相关的字体库,不过中文字库比较大,但可以根据需要进行相应的裁剪。 3打印机支持类型 要查看Ghostscript在Linux发行版本上支持什么打印机列表,可以在命令行下键入: [root@localhost~]#gshelp 如图4所示,gs命令会列出一份它支持的打印机和输出设备名单。 图4gs支持的打印机类型 一般来说,我们购买的普通打印机附带的光盘中没有Linux驱动。如果不知道是否可以在Linux下使用,可以查看The Linux Foundation站点[4],这里包含了大量关于在 Linux 上打印的信息。进入查询界面后输入打印机厂商和型号后,即可进行查询。通常会得到4个查询结果[5]: (1)perfectly:完全支持Linux下打印,并且可以使用打印机所有功能和打印分辨率。 (2)mostly:大部分功能支持Linux下打印,有一些小缺陷。 (3)partially:只有一部分功能支持Linux下打印,许多功能不能实现,例如彩色打印机只能打印黑白图像。 (4)paperweight:完全不支持Linux下打印。 本设计使用的是HP 的hp LaserJet 1010,查询结果如图5所示。 4打印功能测试 执行打印命令,传入要打印的文件名参数,就可以实现打印。gs命令使用-r选项设置打印分辨率。打印的文件参数个数也可以根据需要在脚本文件里指定,可以查看GhostScript版本信息、打印的文件参数、打印纸张参数以及打印需要的字体文件等信息[6]。运行./gs.sh printer.txt命令,打印机打印系统提示部分信息如图6所示。 5结语 本文设计了一种基于嵌入式Linux的打印控制设备,但目前尚未实现中文打印,可能与中文字库有关,还需进一步实验来实现中文打印,更好地完善微型打印系统。 参考文献: [1]MATTHEW N,STONES R.Beginning linux programming[J].WroxPress, 2004(4):108109. [2]李华锋,凌宏江.USB主控制器在智能仪器打印接口上的实现[J].计算机应用,2006,26(2): 356357. [3]王国意.打印机的USB接口和驱动设计[J].福建电脑,2004(10):5052. [4]LINUXPRINTING ORG.Foomatic[EB/OL].http://www.linuxprinting.org /foomatic.html. [5]黄艳,马旭东.嵌入式Linux下基于ARM9 的USB 打印机控制器的设计[J].工业控制计算机,2008,21(5):6667. [6]曹江华.Linux操作系统打印机配置全攻略[EB/OL].http://caojh.blog.51cto.com. 责任编辑(责任编辑:杜能钢) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。