一、发展环境

硬件环境:am3354

打印机型号:hp1020plus

虚假系统:Ubun

交叉编译工具版本:arm-Linux-gcc版本4.5.1

二、详细步骤

1、Linux内核环境配置。

(a)修改驱动程式/USB/kconfig,移除# source "驱动程式/USB/类别/kconfig "之前的#

(b)静态配置Linux内核,打开支持USB的打印机

在Linux内核根目录下运行#make menuconfig以获得以下接口:

打开支持的USB打印机的路径为device drivers-USB support-USB print support。界面打开,如下图所示。

选择“USB打印支持”以保存退出,重新编译内核,然后将新内核复制并放置在开发主板上。

把打印机的USB接口插到开发板的USB接口上,可发现出现/dev/usb/lp0设备节点。

2、交叉编译foo2zjs工具

(a)下载foo2zjs源码,

源码网址:

(b)解压源码

tar xvf

(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可执行文件

运行./getweb可得到如下界面:

可看到支持的打印机型号,我们选择的打印机型号是1020。

执行./getweb 1020 即可下载hp1020plus的驱动文件

用PC版foo2zjs-x86编译出来的arm2hpdl工具,将转化为

(f)把ARM版本foo2zjs-arm编译出来的foo2zjs和拷贝到开发板的/usr/printer/目录下

3、添加交叉编译ghostscript工具

因是嵌入式平台编译生产的可执行程序不宜过大,所有ghostscript工具选择用g版本。

(a)下载源代码g.tar.gz

(b)解压 tar xvf g.tar.gz

(c)分别拷贝为PC版本和ARM版本

cp g g-arm -rf

mv g g-pc

(d)编译PC版本

cd g-pc

./configure

make

(e)编译arm版本

cd g-arm

./configure --host=arm-linux --target=arm-linux --prefix=/usr/printer/

prefix 参数决定了arm版本的gs搜索路径, 在目标板上必须和编译的时候一致,因为编译好的应用程序会从prefix指定路径查找配置和依赖的文件

把PC版本的echogs,genarch,genconf拷贝到arm版本中

cp ../g-pc/obj/echogs obj/echogs

cp ../g-pc/obj/genarch obj/genarch

cp ../g-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中的c做示范)

cd /usr/printer/ghostscript/bin

./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r600x600 -sDEVICE=pbmraw -sOutputFile= /usr/print/g//share/ghostscript/8.15/examples/c

第一次执行会出现以下错误

Error: /invalidfont in findfont

Operand stack:le= /uc

F1 12 Times-Roman Font Times-Roman 290498 Times-Roman --nostringval-- Times-Roman NimbusRomNo9L-Regu Courier NimbusMonL-Reguint

Execution stack:

%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- 3 4 %oparray_pop 4 4 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 7 5 %oparray_pop --nostringval-- --nostringval-- --nostringval-- 1 -1 1 --nostringval-- %for_neg_int_continue

Dictionary stack:

--dict:1118/1686(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)-- --dict:31/70(L)-- --dict:17/17(ro)(G)-- --dict:1118/1686(ro)(G)--

Current allocation mode is local

Last OS error: 2

Current file position is 61042

GPL Ghostscript 8.15: Unrecoverable error, exit code 1

在ubuntu中把/usr/share/fonts/type1/gsfon文件拷贝到开发板的/usr/printer/ghostscript/share/ghostscript/fonts目录下

再次执行

./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r600x600 -sDEVICE=pbmraw -sOutputFile= /usr/print/g/share/ghostscript/8.15/examples/c

即可生成pbm文件

4、测试打印文件

准备打印,在开发板终端中发送固件到打印机

cd /usr/printer

这句执行完后打印机有响声

cat > /dev/usb/lp0

这句执行完后打印机开始打印

foo2zjs -z1 -p9 -r600x600 > /dev/usb/lp0

注意一:发送固件到打印机中第一次打印,打印出来的是乱码,之后的打印才是正常的。

注意二:打印文件中的文字打印出来的字体受开发板的字库所影响,分辨率比较低。

1.《怎么拷贝打印机固件?终于找到答案了手把手教你嵌入式Linux系统驱动hp1020打印机》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《怎么拷贝打印机固件?终于找到答案了手把手教你嵌入式Linux系统驱动hp1020打印机》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/why/3030136.html