基于嵌入式Linux 的通用打印系统的研究与设计
李泽球1
,黎卫红
linux内核设计与实现 pdf2
(1.桂林理工大学信息科学与工程学院,广西桂林541004;2.广西科技厅成果管理与科学技术普及处,广西南宁530012)
摘 要:首先通过对L inux 打印系统原理进行了分析研究,然后结合嵌入式应用的特点设计了一种基于嵌入式L inux
的通用打印系统方案,实现了脱离PC 机驱动并具有复杂打印的功能,并在S3C2410平台上进行了实验验证,且给出了系统的软件方案的设计。
关键词:嵌入式打印;L inux 打印;CU PS;交叉编译
中图分类号:T P311.52    文献标识码:A      文章编号:1672-7800(2011)04-0078-03
基金项目:广西研究生教育创新计划项目(2010105960812M 33)
作者简介:李泽球(1983-),男,广西桂平人,桂林理工大学硕士研究生,研究方向为嵌入式系统;黎卫红(1959-),男,广西玉林人,广
西科技厅成果管理与科学技术普及处高级工程师,硕士研究生导师,研究方向为信息处理。
0 引言
随着嵌入式技术的飞速发展和L inux 开源操作系统的优越性,目前出现许多以嵌入式linux 为平台的电子产品。在许多的产品中都需要有打印的功能,但是目前绝大部分的嵌入式产品的打印方案都是采用基于热敏式的打印机,这种方案的打印只能进行一些简单的打印功能,不能进行复杂的、彩的打印需求,有很大的局限性;另外的一种方案是采用外置一台PC 机进行打印机驱动,这种方案虽然可以实现完整的打印功能,但同时造成了资源的浪费,不符合嵌入式技术的设计原则。基于以上的考虑,本文设计了一种基于嵌入式Linux 平台的打印方案,它能够实现基于PC 机驱动的打印效果,又不需要外置一台PC 机进行驱动,在一定的程度上为嵌入式产品提供了一种相
对完美的打印解决方案。
1 Linux 打印系统原理
Linux 采用的打印系统是标准的通用U nix 打印系统(CU PS)。CU PS 实际上是一个集成的打印服务程序,包括了前端接收打印命令的相关程序,后端控制打印机硬件的程序,中间层则是打印驱动。CU PS 驱动其实是一系列的程序加定义文件的总和,这些各种文件是进行各式文件格式转换的程序和格式定义文件。
CPU S 的执行原理是当CU PS 接受到打印命令时,首先会进行一个格式的预转换,比如将bmp 等各种文件先转换成Post Script 格式。然后进一步将PostScript 格式转单一线性SVM 的1/8。对于320@240的图像,检测4000个窗口,采取缩放图像的方法在尺度空间搜索平均需要100ms 的时间,而Dalal 的方法则需要1s,因而,采用级联SV M 分类器的速度是单一SV M 的10倍。
4 结束语
现有的实验结果表明,基于感兴趣区HO G 的计算,通过在感性区梯度方向直方图来计算特征维数,明显减少了特征向量的维数,降低了计算量;利用级联SVM 分类器,通过逐级增加特征的精度来实现由简到繁逐级地滤除非人体窗口,极大地降低了计算量,提高了检测速度。基于感兴趣区HO G 的计算结合级联SVM 分类器的人体检
测方法是基于H OG 的人体检测方法的极大改进,将大幅度提高人体检测的速度。
参考文献:
[1] 曾春,李晓华,周激流.基于感兴趣区梯度方向直方图的行人检测
[J].计算机工程,2009(24).
[2] 李同治,丁晓青,王生进.利用级联SVM 的人体检测方法[J].中国
图像图形学报,2008(03).
[3] 周健.基于梯度方向直方图的快速人体检测算法[D].天津:天津大
学,2009.
[4] Dalal N.Fi nding People in Images and Vid eos[D].Grenob le,France:
The Fren ch National Institute for Research in Computer Science and Control,2006.
(责任编辑:王 钊)
换成CUPS 内部格式,这个称为Post Script 到CUPS -PostScript 转换,这两种Post Script 格式还是有差别的,在M IM E 中定义了这两种不同的Post Script 。
以上这些都是CPU S 打印过程中的预处理工作,接下来CU PS 的工作围绕PostScript 展开,CU PS 会根据PPD (Post Script Print er Descript ion 文件)文件来选择相应的处理流程。PPD 文件其实是驱动的核心,不同的打印机有不同的PPD 文件,PPD 包含有关输出设备的信息,CU PS 使用PPD 文件中的信息来确定在打印文档时向打印机发送哪些PostScript 信息。CPU S 最大的特点是它把所有打印机都/看成0PostScript 打印机,即便打印机本身不支持PostScript ,也可以通过CU PS 自带的PostScript 解释程序(PsT oRast er )或者Ghost Script 来解释Post -Script 文件,从而把普通的打印机模拟成PostScript 打印机。
CPU S 根据打印机类型的不同把打印流程分为3种处理方式,第一种是把打印文件直接转换成Post Script 格式文件,然后送入打印机进行打印。后面两种是分别用CU PS 的PsT oRast er 或Ghost Script 文件转换程序来进行转换为CPU S-PostScript 文件格式,虚拟出一台Post -Script 打印机,然后再通过这台虚拟Post Script 打印驱动打印机进行打印。CPU S 提供的这3种处理方式决定了它能够支持各种不同的打印机,因此这也是CU PS 兼容性非常好的原因。CPU S 打印的流程原理如图1所示。
2 Linux 打印系统在嵌入式平台上的设计
根据对Linux 打印系统原理的深入分析,了解到Linux 打印过程的各种处理方式的具体过程,那么在嵌入式这种小内存平台的设计打印方案也就有了一定的理论基础。因为在嵌入式平台中受限于硬件平台,
如果直接把CPU S 和Ghost Script 进行交叉编译并移植到嵌入式平台上,那么其实所需要的内存空间在80多M 以上,对于嵌入式平台是不现实的。本文的设计方案是对CPU S 打印的原理进行了更深入的研究分析,提取其中的最基本模块进行组合修改设计成一个最精小的微型嵌入打印系统,再
将其交叉编译移植到嵌入式平台之上。
图1 CPUS 打印流程原理图
2.1 基于PostS cript 格式的打印方案
通过以上的分析得知Linux 打印模块中有3种打印
处理机制,第一种是直接传输PostScript 文件给CU PS 的
后台,再将打印流传输到PostScript 打印机,接下来的事情全部丢给打印机去处理,打印机接收PostScript 打印文件流后进行信息提取并按格式进行打印,其流程图如图2所示。
图2 PostScript 打印流程
此方案支持的打印机必须是基于主机类型的打印机,然而这种打印属于高端打印机,价格非常高,不符合嵌入式产品设计的初衷。
2.2 基于Raster 格式的打印方案
基于raster 格式的打印方案是把预转换的文件交给CU PS 的内置程序处理,把PostScript 转换成其特有的rast er 格式,这种格式是CU PS 特有的,是打印机生产商为客户的接口开发定义的一种光栅格式,方便客户设计相应的打印机的接口程序。具体的处理流程如图3所示。
图3 Raster 打印流程图
此方案的优点是打印的流程最短,所需要执行的处理也最简洁,因此移植到嵌入式平台所需要的资源也最小,但是由于受限于打印机厂商的raster 格式的定义,此方案支持的打印机也受到了限制,所以此方案只能适用于专用的打印机的嵌入式打印方案。2.3 基于GhostS cript 格式的打印方案
Ghost Script 格式的驱动模的打印方案支持打印机型号最多。其和基于rast er 格式的机制极为类似,只把CU PS 的解释器换成了外置的Ghost Script 来解释Post -Script 文件。GhostScript 程序是独立于CU PS 运行的,它的功能也不仅限于打印,且很多情况下通过CU PS 来调用Ghost Script 打印是件很方便的事情。此方案的打印流程如图4所示。
图4 GhostScript 打印流程图
此方案的优点是支持的打印机类型多,而且打印机的驱动安装方便,缺陷是Ghost Script 程序相对较大,不经过修改的编译后有将近60多M 以上的大小。
3 嵌入式Linux 打印系统的实现与实验
根据以上对3种打印流程对应的方案的对比分析,再经过对L inux 源码的深入分析,结合Rater 和GhostScript 的方案的优点,分别提取其中的核心模块设计了一种相对
可行的同时又具有支持多种打印机的打印方案。最终在S3C2010平台上进行了实验验证。
(1)方案设计的基本原理是提取CPU S 中的过虑器imagetoraster 、rastertohp 、rastert oepson 的相应代码,进行
#
79#第4期          李泽球,肖富元:基于嵌入式L inux 的通用打印系统的研究与设计
修改得到imaget orast er 和rast ertoprint 两个过滤器程序,提取Ghost Sciprt 中的image-bmp 程序来进行bmp 位图的处理,最后使用M iniGU I1.6设计了一个打印驱动选取界面程序。
(2)方案的开发环境为:ubuntu 9.10+gcc3.3.2+cups-1.4.2+ghostscript7.1。
(3)方案的代码设计:在image-bmp.c 中修改Xppi /yppi 这两参数来设置每英寸多少像素;在imagetoraster.c 中修改Xprint /yprint 这两参数来确定可打印的区域;在int erpret.c 中修改HWResolution 参数来设置打印分辨率等。
交叉编译的M akef ile 配置./configure
CC=arm -linux -gcc ./configure --prefix =/root/mycupsinst all \
--host=arm-linux –-build=i386-linux    LDFLA GS=--st at ic  ,其中的LDFLA GS=--static 为静态编译,把链接模块也整体编译进去,因为在arm-linux 中的许多共享库是没有的。
最后编译出来了几个转换程序,需要使用bash 脚本进行调协工作,具体脚本代码如下:
#!/bin/bash
export PPD=/U T Print/PPD/thePPD/d5468.ppd /UT Print/bin/imaget orast er 10""""1"""/U T -Print/printFile/01.bmp"|/U T Print/bin /rast ertohp 10""""1""|cat >/dev/usb/lp0
各程序之间使用管道来进行数据传递。(4)打印测试程序的界面设计。本文为打印方案设计了一个可视化界面的打印测试程序,此程序实现了打印驱动以及打印文件的选择,并且可以进行打印机的型号自动检测从而进行自动匹配驱动的功能。M iniGU I 软件界面的设计如图5
所示。
图5 打印测试程序界面
通过实验验证了本文的嵌入式L inux 打印系统的可行性,并且此方案能够支持各种打印机型号,打印的驱动添加简便,是一种非常适用的嵌入式Linux 打印通用方案。
4 结束语
本文设计了一种基于嵌入式Linux 的通用打印系统方案,最终在S3C2410ARM 9+L inux2.6内核平台上进行移植,并进行了实验测试,都能进行清晰的打印且具有较快的打印速度。因此,本文设计的这种嵌入式Linux 打印方案,是一种既能够支持复杂式打印又能够在嵌入式平台上简便实现的解决方案,为嵌入式Linux 打印技术的发展提供了一定的理论和实践经验。
参考文献:
[1] 赵远东,张臻.基于ARM9和Linux 的嵌入式打印终端系统[J].微
计算机信息,2008(24).
[2] 朱伟伟,黄锦安.基于ARM 和Lin ux 的嵌入式的研究以及打印模
块的实现[J].计算机工程与应用,2008.
[3] 赵炯.L inux 内核完全剖析[M].北京:科学出版社,2000.
[4] CORBET J,RUBINI A.LINUX 设备驱动程序(第三版)[M].北
京:中国电力出版社,2006.
(责任编辑:周晓辉)
The Research and Design of General Print
System Based on Embedded Linux
Abstract:T his paper firstly study the principle of Linux print system,t hen according to the charact erist ics of t he embedded applicat ion design based on embedded Linux general print syst em solutions which with complicat ed printed funct ion but have no need t o have a PC t o run it.We validat ed by experiment it on S3C2410platf orm,and gives t he solution design of system soft ware.
Key Words:Embedded Print ;L inux Print ;CPU S;Cross -compilat ion
#80#软件导刊                      2011年

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。