一、开发环境
硬件环境:am3354
打印机型号:hp1020plus
虚假机系统:Ubuntu12.04
交叉编译工具版本:arm-linux-gcc version 4.5.1
二、详细步骤
1、linux内核环境配置
(a)修改drivers/usb/Kconfig中将#source “drivers/usb/class/Kconfig”前的#去掉
(b)静态配置linux内核打开支持USB打印机
在linux内核根目录执行#make menuconfig得到界面如下所示:

文章插图
打开支持USB打印机的路径是Device Drivers->USB Support->USB Print support;打开的界面如下图所示:

文章插图
勾选“USB Print support”保存退出 , 重新编译内核 , 然后拷贝新内核放到开发板上 。
把打印机的USB接口插到开发板的USB接口上 , 可发现出现/dev/usb/lp0设备节点 。
2、交叉编译foo2zjs工具
(a)下载foo2zjs源码 ,
源码网址:
http://foo2zjs.rkkda.com/foo2zjs.tar.gz
(b)解压源码
tar xvf foo2zjs.tar.gz
(c)分别拷贝为PC版本和ARM版本
cp foo2zjs foo2zjs-arm -rf
mv foo2zjs foo2zjs-x86
(d)编译PC版本
cd foo2zjs-x86
make
(e)编译ARM版本
cd foo2zjs-arm
make CC=arm-linux-gcc
编译完成后在foo2zjs-arm的根目录中可得到getweb可执行文件
【手把手教你嵌入式Linux系统驱动 hp1020plus驱动安装教程】 运行./getweb可得到如下界面:

文章插图
可看到支持的打印机型号 , 我们选择的打印机型号是1020 。
执行./getweb 1020 即可下载hp1020plus的驱动文件sihp1020.img
用PC版foo2zjs-x86编译出来的arm2hpdl工具 , 将sihp1020.img转化为sihp1020.dl
(f)把ARM版本foo2zjs-arm编译出来的foo2zjs和sihp1020.dl拷贝到开发板的/usr/printer/目录下
3、添加交叉编译ghostscript工具
因是嵌入式平台编译生产的可执行程序不宜过大 , 所有ghostscript工具选择用ghostscript-8.15版本 。
(a)下载源代码ghostscript-8.15.tar.gz
(b)解压 tar xvf ghostscript-8.15.tar.gz
(c)分别拷贝为PC版本和ARM版本
cp ghostscript-8.15 ghostscript-8.15-arm -rf
mv ghostscript-8.15 ghostscript-8.15-pc
(d)编译PC版本
cd ghostscript-8.15-pc
./configure
make
(e)编译arm版本
cd ghostscript-8.15-arm
./configure –host=arm-linux –target=arm-linux –prefix=/usr/printer/
prefix 参数决定了arm版本的gs搜索路径, 在目标板上必须和编译的时候一致 , 因为编译好的应用程序会从prefix指定路径查找配置和依赖的文件
把PC版本的echogs , genarch , genconf拷贝到arm版本中
cp ../ghostscript-8.15-pc/obj/echogs obj/echogs
cp ../ghostscript-8.15-pc/obj/genarch obj/genarch
cp ../ghostscript-8.15-pc/obj/genconf obj/genconf
编译
make XCFLAGS=-DHAVE_SYS_TIME_H=1 CC=arm-linux-gcc
make install
其中XCFLAGS=-DHAVE_SYS_TIME_H=1必须有的 , 不然会报错 。
正常情况下 , 可以编译通过 , 可执行文件被安装到/usr/printer中
把/usr/printer目录下的ghostscript全部拷贝到开发板的/usr/printer目录中
在开发板中执行gs , 生成pbm文件用于打印(用example中的chess.ps做示范)
cd /usr/printer/ghostscript/bin
./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r600x600 -sDEVICE=pbmraw -sOutputFile=test_1.pbm /usr/print/ghostscript-8.15//share/ghostscript/8.15/examples/chess.ps
推荐阅读
- 双孢菇的品种类型简介 双孢菇有哪些品种
- uk鞋码对照表 uk是什么意思
- 可可扇贝蛋糕的做法
- 芋头怎么去皮 芋头去皮方法技巧
- 吃长期冰冻的猪肉会对身体有哪些影响呢
- 马蓉现在是什么状况结婚了吗( 王宝强资产有多少亿)
- 如何解决公司老龄化问题,解决老龄化问题的主要措施是什么
- 在这经济时代物欲横流的社会,有一股清流吗
- 白萝卜该怎么种植,白萝卜如何种植