首先感谢各位大神的指点,历时两周终于还是搞出来了。
因为客户要求,我们的项目只能够使用USB连接开发板和打印机,所以找驱动那些是真的很麻烦。
下面列举一下我的开发环境和所使用的工具
1.Ubuntu 16.04.6
2.最新版Ghostscript 9.55.00
3.foo2zjs
一:步骤
1:首先需要在内核中配置支持USB打印接口
make menuconfig ---> Device Drivers ---> USB support ---> USB Printer support
我出现了一个问题,如果选择<*>USB Printer support,开发板会卡在starting kernel
索性我使用<M>USB Printer support,编译出对应的usblp.ko文件。
2:下载最新版Ghostscript 9.55.00
网上很多是老版本的gs,新版的gs操作起来比较简单:
① ./configure --host=arm-linux-gnueabihf
② make
这里我用的是自己的test.pdf文件
将Ubuntu中make后生成的gs,拷贝到开发板/bin,再输入
./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4-r600x600 -sDEVICE=pbmraw -sOutputFile=test.pbm test.pdf
(r600x600是正常A4纸大小)
3:下载foo2zjs
按网上的方法,解压成两个文件:foo2zjs-arm和foo2zjs-x86
进入x86:直接make,将生成的 arm2hpdl 保存下来
进入arm:这里要修改makefile文件
这里因为我的CC实在条件句中,所以编译出来,拷贝到开发板执行总是说格式错误
需要在文首空白处添加一句:CC=arm-linux-gnueabihf-gcc
保存退出
make
会出现错误信息,但是现在生成的foo2zjs已经可以用了。
继续,执行./getweb 得到支持设备列表,我选择的是./getweb 1020
如果Ubuntu不能联网,可以点击文末链接。
得到 sihp1020.img 文件,这就是1020 的打印机固件,这是我们需要转换成arm版本能用的固件,使用刚才编译x86 版本的arm2hpdl ,执行
./arm2hpdl sihp1020.img > sihp1020.dl
4:我需要拷贝到开发板的文件
1:usblp.ko
2:gs
3:test.pdf
4:foo2zjs-arm生成的 foo2zjs
5:foo2js-x86 生成的 sihp1020.dl
5:IMX6Q开发板(目前由于手上其他项目比较着急,我只是测试了开发板能不能使用打印机这个功能)
1:insmod usblp.ko(此时 cd /dev/usb/ 应该有lp0的打印机设备号)
2: cat sihp1020.dl > /dev/usb/lp0 (如果没有问题,此时打印机会响)
3: ./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4-r600x600 -sDEVICE=pbmraw -sOutputFile=test.pbm test.pdf
4:./foo2zjs -z1 -p9 -r600x600 test.pbm > /dev/usb/lp0
大功告成。