arm linux打印机驱动编译方法,嵌入式linux驱动打印机HP系列
2017-03-17 09:53
1876 查看
arm linux打印机驱动编译方法和过程记录(2017.03.15):
改动添加概述:
添加foo2zjs工具(用于发送数据到打印机进行打印);添加gohstscript工具(用于转换文档格式到打印机能识别的pbm格式);
添加enscript,用于把txt,c,cpp等文档转换到打印机能识别的PostScript格式;
1. 添加交叉编译foo2zjs方法:
1. wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz 2. make 3. save a copy of arm2hpdl 4. make clean 5. modify Makefile,在Makefile添加交叉编译工具链CC: CC=arm-none-linuxxxxxxx 6. make (use the embedded toolchain complie again) 8. ./arm2hpdl sihp1020.img > sihp1020.dl
在arm上打印,利用foo2zjs打印方法:
2. #### foo2zjs使用方法,在嵌入式端,需要: cat sihp1020.dl > /dev/usb/lp0,把固件发送到HP 1020打印机
#### 接着发送打印的pbm文件到 HP1020打印机即可: /dev/usb/lp0即可打印!
2. 添加交叉编译ghostscript方法:
下载源码包: ghostcript-9.04http://iweb.dl.sourceforge.net/project/ghostscript/GPL%20Ghostscript/9.04/ghostscript-9.04.tar.bz2
解压:
tar xvf ghostscript-9.04.tar.bz2
解压出来的文件夹,复制多一份,重命名区分x86和arm版本,我们需要编译两种版本;
cp ghostscript-9.04 ghostscript-9.04-arm -rf && mv ghostscript-9.04 ghostscript-9.04-pc
编译x86版本,进入:
cd ghostscript-9.04-pc/
开始编译X86版本的ghostscript-9.04-pc:
./configure make
保存编译处理的x86版本的部分生成文件(后面要复制到arm版的文件夹里面的):
cp obj/aux/genarch genarch_arm cp obj/aux/genconf genconf_arm cp obj/aux/echogs echogs_arm cp obj/aux/mkromfs mkromfs_arm
开始编译arm版本(例子是phascan,对应的是我们的工具链接arm-angstrom):
首先配置好环境变量,确定能找到arm-angstrom-linux-gnueabi-xxx
进入arm版本的ghostscripte目录中:
cd ../ghostscript-9.04-arm/
修改Makefile.in中 “STDLIBS=@PTHREAD_LIBS@ -lm” 为 “STDLIBS=@PTHREAD_LIBS@ -static -lm”
sed -i '387s/STDLIBS=@PTHREAD_LIBS@ -lm/STDLIBS=@PTHREAD_LIBS@ -static -lm/' ./Makefile.in
修定/tmp目录:
sed -i '74s/"\/tmp\/"/"\/data\/misc\/printer\/tmp\/"/' ./base/gp_unifs.c
运行配置脚本.configure,生成Makefile文件:
./configure --host=arm-linux --target=arm-linux --disable-fontconfig --disable-gtk --disable-cups --prefix=/home/lin/ghostscript-9.04-arm/build/
prefix 参数决定了arm版本的gs搜索路径,在目标板上必须和编译的时候一致,因为编译好的应用程序会从prefix指定路径查找配置和依赖的文件;
拷贝之前在X86编译通过的文件到arm目录:
cp ../ghostscript-9.04-pc/echogs_arm obj/aux/echogs cp ../ghostscript-9.04-pc/genarch_arm obj/aux/genarch cp ../ghostscript-9.04-pc/genconf_arm obj/aux/genconf cp ../ghostscript-9.04-pc/mkromfs_arm obj/aux/mkromfs
修改configure出来的Makefile问及,去掉有关X11的devs,不去掉就会编译不过:
gedit Makefile
在大约509行,添加井号注释掉:
#DEVICE_DEVS=$(DISPLAY_DEV) $(DD)x11.dev $(DD)x11_.dev $(DD)x11alpha.dev $(DD)x11alt_.dev $(DD)x11cmyk.dev $(DD)x11cmyk2.dev $(DD)x11cmyk4.dev $(DD)x11cmyk8.dev $(DD)x11gray2.dev $(DD)x11gray4.dev $(DD)x11mono.dev $(DD)x11rg16x.dev $(DD)x11rg32x.dev
开始交叉编译:
make XCFLAGS=-DHAVE_SYS_TIME_H=1 CC=arm-angstrom-linux-gnueabi-gcc
正常情况下,可以编译通过,生成./bin/gs文件;
执行:make install
之后,文件被安装到: /home/lin/ghostscript-9.04-arm/build
复制交叉编译好的各种程序到以及交叉编译后的share目录到target中的bin目录中:
scp -rv build/share/ root@192.168.1.233:/usr/share/
复制交叉编译好的各种程序到target中的bin目录中:
scp build/bin/* root@192.168.1.233:/usr/bin/
在target中执行gs,生成pbm文件用于打印(我生成的是example中的chess.ps):
gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r600x600 -sDEVICE=pbmraw -sOutputFile=test_1.pbm /home/lin/ghostscript-9.04-arm/build/share/g hostscript/9.04/examples/chess.ps
准备打印,在target终端中发送固件到打印机:
cat sihp1020.dl > /dev/usb/lp0
打印文件的方法,在target中执行(A4纸张,打印内容是test_1.pbm):
foo2zjs -z1 -p9 -r600x600 test_1.pbm > /dev/usb/lp0
3. 添加交叉编译enscript方法:
下载gnu从enscript源码或者点击这里下载:ftp://ftp.gnu.org/gnu/enscript/enscript-1.6.6.tar.gz
解压缩enscript-1.6.6.tar.gz:
tar xvf enscript-1.6.6.tar.gz
运行configure脚本,配置enscript-1.6.6.tar.gz:
./configure --with-media=Letter --prefix=/home/lin/enscript-1.6.6/build/
修改生成的Makefile,把文中的CC替换成arm-angstrom-linux-gnueabi-gcc
开始交叉编译:
make CC=arm-angstrom-linux-gnueabi-gcc
安装到configure中prefix指定的目录,之后在target板上,需要把prefix目录也拷贝到target板子对应的位置;
make install
用ssh链接登陆目标开发板(我这里IP:192.168.1.233),然后,刚刚install的目录拷贝到target板子上:
“`sh
scp -r build/share/ root@192.168.1.233:/home/lin/enscript-1.6.6/build/
scp -r build/etc/ root@192.168.1.233:/home/lin/enscript-1.6.6/build/etc/
““
enscripte使用示例,先通过enscript转换文档为ps,然后用ghostscript转ps为pbm,最后把pbm通过foo2zjs工具发送到打印机节点实现打印:
```sh enscript -p test_enscript3.ps test_enscript3.txt gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r600x600 -sDEVICE=pbmraw -sOutputFile=test_enscript.pbm /home/test_enscript3.
test_enscript3.ps test_enscript3.txt
cat test_enscript.pbm > /dev/usb/lp0 ```
到此,打印成功,可以看到txt文档被打印出来;
相关文章推荐
- 用ltib获得源码以及编译嵌入式arm驱动的方法简述
- 关于arm-linux下编译加载ch341串口驱动的方法与问题
- 飞凌嵌入式(Forlinx)TE/OK6410内核编译:“make: arm-none-linux-gnueabi-gcc:命令未找到”
- 转: 嵌入式linux下usb驱动开发方法--看完少走弯路
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- HP打印机linux下的驱动
- linux嵌入式编程高手历程系列2-安装debian并建立嵌入式编译环境
- 基于ARM的嵌入式Linux移植真实体验(4)――设备驱动
- ARM的嵌入式Linux移植体验之设备驱动
- Gh0st编译免杀系列教程2_驱动文件编译方法1
- 嵌入式Linux之我行——PWM在ARM Linux中的原理和蜂鸣器驱动实例开发
- linux嵌入式编程高手历程系列3-linux内核配置和编译
- Arm-Linux嵌入式QT/E环境的建立(qt/e 3.x系列)
- 使用嵌入式linux完全手册光盘的arm-linux-gcc 遇到问题 自己编译
- ARM的嵌入式Linux移植体验之设备驱动
- Arm-Linux嵌入式QT/E环境的建立(qt/e 3.x系列)
- 嵌入式LINUX ---ARM交叉编译工具链的编译
- Linux驱动开发系列之一:Ubuntu 8.10下编译Linux kernel 2.6.32.1
- arm-linux-gcc编译生成的文件通过SD卡烧写到开发板上的方法
- ARM的嵌入式Linux移植体验之设备驱动