微波EDA网,见证研发工程师的成长! 2025濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柟缁㈠枟閸庡顭块懜闈涘缂佺嫏鍥х閻庢稒蓱鐏忣厼霉濠婂懎浜惧ǎ鍥э躬婵″爼宕熼鐐差瀴闂備礁鎲¢悷銉ф崲濮椻偓瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顓犵<闁绘劦鍓欓崝銈嗙箾绾绡€鐎殿喖顭烽幃銏ゅ川婵犲嫮肖闂備礁鎲¢幐鍡涘川椤旂瓔鍟呯紓鍌氬€搁崐鐑芥嚄閼搁潧鍨旀い鎾卞灩閸ㄥ倿鏌涢锝嗙闁藉啰鍠栭弻鏇熺箾閻愵剚鐝曢梺绋款儏濡繈寮诲☉姘勃闁告挆鈧Σ鍫濐渻閵堝懘鐛滈柟鍑ゆ嫹04闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閳╁啯鐝曢梻浣藉Г閿氭い锔诲枤缁辨棃寮撮姀鈾€鎷绘繛杈剧秬濞咃絿鏁☉銏$厱闁哄啠鍋撴繛鑼枛閻涱噣寮介褎鏅濋梺闈涚墕濞诧絿绮径濠庢富闁靛牆妫涙晶閬嶆煕鐎n剙浠遍柟顕嗙節婵$兘鍩¢崒婊冨箺闂備礁鎼ú銊╁磻濞戙垹鐒垫い鎺嗗亾婵犫偓闁秴鐒垫い鎺嶈兌閸熸煡鏌熼崙銈嗗22闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閳╁啯鐝栭梻渚€鈧偛鑻晶鎵磼椤曞棛鍒伴摶鏍归敐鍫燁仩妞ゆ梹娲熷娲偡閹殿喗鎲奸梺鑽ゅ枂閸庣敻骞冨鈧崺锟犲礃椤忓棴绱查梻浣虹帛閻熴垽宕戦幘缁樼厱闁靛ǹ鍎抽崺锝団偓娈垮枛椤攱淇婇幖浣哥厸闁稿本鐭花浠嬫⒒娴e懙褰掑嫉椤掑倻鐭欓柟杈惧瘜閺佸倿鏌ㄩ悤鍌涘 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻閻愮儤鍋嬮柣妯荤湽閳ь兛绶氬鎾閻樻爠鍥ㄧ厱閻忕偛澧介悡顖氼熆鐟欏嫭绀€闁宠鍨块、娆戠磼閹惧墎绐楅梻浣告啞椤棝宕橀敐鍡欌偓娲倵楠炲灝鍔氭繛鑼█瀹曟垿骞橀懜闈涙瀭闂佸憡娲﹂崜娑㈡晬濞戙垺鈷戦柛娑樷看濞堟洖鈹戦悙璇ц含闁诡喕鍗抽、姘跺焵椤掆偓閻g兘宕奸弴銊︽櫌婵犮垼娉涢鍡椻枍鐏炶В鏀介柣妯虹仛閺嗏晛鈹戦鑺ュ唉妤犵偛锕ュ鍕箛椤掑偊绱遍梻浣筋潐瀹曟﹢顢氳閺屻劑濡堕崱鏇犵畾闂侀潧鐗嗙€氼垶宕楀畝鍕厱婵炲棗绻戦ˉ銏℃叏婵犲懏顏犵紒杈ㄥ笒铻i柤濮愬€ゅΣ顒勬⒒娴e懙褰掓晝閵堝拑鑰块梺顒€绉撮悞鍨亜閹哄秷鍏岄柛鐔哥叀閺岀喖宕欓妶鍡楊伓婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻鐔兼⒒鐎靛壊妲紒鎯у⒔缁垳鎹㈠☉銏犵婵炲棗绻掓禒楣冩⒑缁嬫鍎嶉柛濠冪箞瀵寮撮悢铏诡啎閻熸粌绉瑰畷顖烆敃閿旇棄鈧泛鈹戦悩鍙夊闁抽攱鍨块弻鐔虹矙閹稿孩宕崇紓浣哄У閹稿濡甸崟顖涙櫆閻犲洩灏欐禒顖滅磽娓氬洤鏋涙い顓犲厴閵嗕礁鈽夐姀鈥斥偓鐑芥倵閻㈢櫥鐟邦嚕閹惰姤鈷掑ù锝堟鐢稒绻涢崣澶屽⒌鐎规洘鍔欏畷鐑筋敇濞戞ü澹曞┑顔结缚閸嬫挾鈧熬鎷�
首页 > 硬件设计 > 嵌入式设计 > 基于开源软件的嵌入式网络打印服务器

基于开源软件的嵌入式网络打印服务器

时间:11-05 来源:作者:单片机与嵌入式系统 中国科学院计算技术研究所 江涛 点击:
  引 言

  目前常用的打印机有两种接口形式:USB口和Eth-ernet网口。由于价格相对较低,USB口的打印机更为普遍。USB口打印机不能独立工作,必须依附于一台主机。为了在一个局域网环境中共享使用一台USB口打印机,需要为该打印机配备一台服务器,然后通过共享设置实现打印机的网络共享。这种方式有几个方面的缺陷:需要占用一台服务器资源;耗电;容易中毒导致无法正常打印;由于长时间不间断运行,出现故障的概率高,导致无法打印;占用办公空间。

  随着嵌入式处理器主频的不断提高,设计专门的嵌入式网络打印服务器已经成为共识。HP等很少的几家打印机公司在几年以前就推出了这样的嵌入式设备,但基本上都只针对本公司特定的几种打印机,无法做到通用。很多文献,如参考文献[1]、[2]中提到的设计方案不够具体。基于这些情况,设计并实现了一款基于Linux的嵌入式网络打印服务器,硬件设计简单,软件完全开源,只要有Linux下的打印驱动,就可以支持。

  1 总体方案设计

  要把USB口打印机连人网络,有两种设计方案,一种是使用USB/以太网协议转换器,另一种是设计一个带有USB口和以太网网口(包含操作系统)的嵌入式设备。尽管协议转换器软硬件简单,但不支持多用户同时并发打印,也就无法实现共享打印的要求。

  1.1 硬件设计

  笔者是在中科院计算所自主研制基于龙芯1号核的"聚芯SoC"1000C上实验的,主频266 MHz。作为产品,只需要提供电源接口、USB口和以太网口。调试阶段,增加串口和JTAG调试接口。考虑到多用户并发打印的负载和实际测试效果,因为移植的开源软件有很多依赖库,所占空间较大,故选用的是1 GB容量的Flash。打印过程中,打印文件在内存中缓存,为了应对较大的打印文件和提高运行速度,建议选择256 MB以上的SDRAM。嵌入式网络打印服务器硬件结构框图如图1所示。

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氬┑掳鍊楁慨鐑藉磻濞戔懞鍥偨缁嬪灝鐎俊銈忕到閸燁偆绮诲☉妯忓綊鏁愰崨顔跨缂備礁顑勯懗鍓佹閹捐纾兼慨姗嗗厴閸嬫捇鎮滈懞銉モ偓鍧楁煥閺囨氨鍔嶉柟鍐茬焸濮婄粯鎷呴崨濠傛殘闂佽崵鍠嗛崕鎶藉箲閵忕媭娼ㄩ柍褜鍓欓锝嗙節濮橆厼浜滅紒鐐妞存悂寮查鍕拺闁圭ǹ娴风粻鎾寸箾鐠囇呭埌閺佸牊淇婇妶鍛櫤闁稿鍓濈换婵囩節閸屾稑娅e銈忕到閵堟悂骞冩禒瀣垫晬婵炴垶蓱鐠囩偤姊虹拠鈥虫灍闁荤噦濡囬幑銏犫攽鐎n亞鍊為梺闈浤涢崘銊ヮ洭濠电姷鏁告慨鐑藉极閹间礁纾规い鏍仜閻掑灚銇勯幒鎴濐仼缁炬儳顭烽弻鐔煎礈瑜忕敮娑㈡煟閹惧娲撮柟顔筋殜閺佹劖鎯旈垾鑼晼濠电姭鎷冮崘顏冪驳闂侀€涚┒閸斿秶鎹㈠┑瀣窛妞ゆ洖鎳嶉崫妤呮⒒娴e憡璐¢柟铏尵閳ь剚姘ㄦ晶妤佺┍婵犲洤绠瑰ù锝堝€介妸鈺傜叆闁哄啠鍋撻柛搴$-缁辩偤骞掑Δ浣叉嫽闂佺ǹ鏈悷銊╁礂瀹€鍕厵闁惧浚鍋呭畷宀€鈧娲滈弫璇差嚕娴犲鏁囬柣鎰問閸炵敻姊绘担鑺ョ《闁革綇绠撻獮蹇涙晸閿燂拷...


  1.2 软件设计

  软件设计是整个系统设计的重点,也是难点。在设计思想上,强调尽可能使用开源软件,主要是为了缩短研发周期并能保证打印系统的可靠性和稳定性。操作系统选择目前主流的Linux操作系统。Linux操作系统下的打印控制系统根据打印机的命令方式,分为文本打印机、Post-Script打印机和其他种类。文本打印机不需要驱动程序,就可以直接用cat命令驱动打印机,但只能打印英文,已很少使用。PostScript(简称PS)是一种绘图能力很强的解释性脚本语言,由Adobe公司制定。它因占用系统资源少,处理过程标准化与设备无关而被广泛应用。直接支持PostScript的打印机通常都是比较高级的办公打印机,对于这类打印机来说,PS语言是它们和计算机之间沟通的最简便的方式,应用程序可以将生成的PS文档直接发给打印机打印。但大多数情况下使用的是各种比较低档的,不能直接支持PostScript的打印机,这类打印机只能识别各厂家自己的指令集。

  因此,必须采取一种机制,把PostScript格式转换成打印机能够识别的命令格式,而GhostScript程序就是用来完成这个工作的。Ghostscript将PostScript转换成各种打印机能够识别的格式。

  打印机驱动程序是应用软件与打印机之间交流的桥梁,它可以将转化好的打印文件,按照各种打印机不同的格式发送给打印机,因此不同的打印机都有自己特有的打印驱动程序。另外,随驱动程序一起发布的还有PPD文档,PPD(PostScript Printer Description)是用来描述打印机功能的文件,里面包含了字体、打印页面等的一些描述。在使用一款打印机之前,必须找到其相应的PPD文件,并正确地安装到打印管理器程序上。笔者所用打印机为HP 1020plus激光打印机,CUPS不附带此驱动,只能另行安装。

  为了让不同的作业在打印的时候不产生冲突,就需要一个打印管理程序。这类管理程序很多,使用最为广泛的莫过于CUPS。CUPS接收要打印的文件;通过文件的类型判断是否需要将其转换为PostScript,如果需要,则调用相应的应用程序进行转换;通过PPD文件来判断Ghost-Script应使用何种驱动处理此PostScript文件;把Ghost-Script处理的结果输出到打印设备上。

  在打印管理程序和Ghostscript之间,通常还安装一种统一的打印过滤器程序foomatic-rip。它是用perl编写的脚本程序,打印管理程序通过它调用Ghostscript程序,从而把PostScript作业转换成PPD文件描述的打印机自身能够识别的格式。

  2 几个关键问题

  2.1 软件的交叉编译


  由前面的分析可知,打印服务器需要的开源软件支持,为了运行于嵌入式Linux环境,需要对它们一一进行交叉编译。通常的编译方法是在宿主机上进行,笔者在反复实验后不得不放弃,原因在于这些开源软件还依赖于很多的其他软件包。建议编译安装直接在开发板上进行,虽然速度较慢,但可以及时发现缺少的包。此编译过程大约需要一周的时间。

  ①CUPS的编译与安装:

灏勯涓撲笟鍩硅鏁欑▼鎺ㄨ崘

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top