本文记录了QT4.8平台在AM335X/A40I等现在流行嵌入式平台的移植过程,说明过程中可能会技术瑕疵,希望大家提供宝贵意见。
本文移植的平台来自于盈鹏飞嵌入式的COM-335X平台(处理器是AM335X)和COM-X40I平台(处理器是全志A40I/T3).
集成电源版本,集成电源是TPS65217
分立电源版本
以下为产品介绍:
COM-335X 产品特性
- 采用TI公司Cortex-A8 AM335X处理器,运行最高速度为1GHZ;
- 支持128M-512M DDR3 SDRAM;
- 支持128-1G字节 SLC电子盘或者EMMC 4G-32G大容量电子盘,可启动;
- 最多可支持两路千兆以太网,支持IEEE1588;
- 支持两路高速USB OTG;
- 支持最多六路串口,双路CAN BUS;
- 支持分辨率最高的1360*768显示接口,可支持SGX530 3D引擎;
- 板载DS1339的RTC时钟,国内独家设计,保证系统时钟同步;
- 支持GPMC扩展总线,可扩展FPGA或者 DSP应用;
- 稳定的操作系统的支持,可预装Ubuntu 16.04或者Preempt Linux 4.14;ANDROID 4.2可根据项目定制;
- 超小体积,邮票孔设计,160pins, 尺寸为:45*45MM
以下为产品介绍:
COM-X40I 产品特性
- 采用Allwinner公司Cortex-A7四核A40i处理器,运行最高速度为1.2GHZ;
- 支持Mali-400MP2 GPU,支持OpenGL ES 2.0 / OpenVG 1.1 standard
- 支持1080P 视频编码,支持H.264,VP8;多格式1080P 60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8)
- 支持双屏异显;支持HDMI V1.4A/RGB888/LVDS,分辨率最高1920x1080;T3处理器不支持HDMI;
- 支持512-2G Bytes DDR3 SDRAM;
- 支持EMMC 4G-64G大容量电子盘,可启动;
- 支持SDIO3.0,USB2.0 HOST&OTG,2路I2C,6路UART,2路SPI,2路PWM
- 支持双路以太网,一路10/100M;一路10/100/1000M;
- 可定制宽温产品,替换AM335X
- 稳定的操作系统的支持,可预装Android7.0或者LINUX 3.10(可预装Preempt Linux系统);
- 超小体积,邮票孔设计160pins, 尺寸为:45*45MM
以下是本连载的第(三)篇 移植tslib、qt库
4 移植tslib、qt库
4.1打包qt库
编译成功之后在qt库的安装目录下就生成arm需要的qt库,进入 QT-4.8.2-arm/目录,输入打包命令:$sudo tar -cvf qtlib.tar lib/,如图所示:
压缩完成后,可查看到该目录下生成:qtlib.tar文件,如图所示:
4.2移植qt库
配置开发板IP地址,使开发板与虚拟机linux在同一网段内,具体设置请参考EVB-335X接口功能测试手册-附录2.
1)在开发板建立目录:/opt/qtdenv/QT-4.8.2,将qtlib.tar 发送到改目录下,(注意:也可以根据客户实际情况,将qt库放到其他目录下,只要保证环境变量和实际库文件所在的路径对应起来就可以),如图所示:
2)在虚拟机终端,输入命令:$scp qtlib.tar root@192.168.0.230:/opt/qtdenv/QT-4.8.2/qtlib.tar ,将qtlib.tar发送到开发板/opt/qtdenv/QT-4.8.2/目录下,如图所示:
注意:开发板默认已经开启sshd服务,scp使用方法可参考:EVB-335X接口功能测试手册-5.8.3章节。
命令参数:
root: 开发板默认登录用户。
192.168.0.230:开发板IP。
3)进入开发板/opt/qtdenv/QT-4.8.2目录,输入命令: $tar -xf qtlib.tar ,解压qt库,如图所示:
4)qt库移植好之后,需要设置开发板环境变量
在开发板输入命令:$vi /etc/profile
然后在文件中添加一下环境变量
export QWS_DISPLAY=LinuxFb:/dev/fb0//LCD显示设备文件
export QWS_SW_CURSOR=1 //软件鼠标的光标将一直可用
export QWS_MOUSE_PROTO="tslib:/dev/input/event1" //指定触摸屏设备
export QT_ONSCREEN_PAINT=0 //将控件显示在屏幕上
export QTDIR=/opt/qtenv/QT-4.8.2-arm:$QTDIR //指定qt库安装目录
export LD_LIBRARY_PATH=/opt/qtenv/QT-4.8.2-arm/lib:$LD_LIBRARY_PATH //设置qt库查找路径
export QT_QWS_FONTDIR=/opt/qtenv/QT-4.8.2-arm/lib/fonts //设置字体查找路径
保存退出
如下图所示:
注意:要使qt程序支持触摸屏和鼠标,可修改/etc/profile中的QWS_MOUSE_PROTO,如下所示:
1)支持触摸屏
export QWS_MOUSE_PROTO=Tslib:/dev/input/event1
2)支持鼠标
export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice
3)同时支持触摸屏和鼠标
export set QWS_MOUSE_PROTO="TSLIB:/dev/input/event1 Intellimouse:/dev/input/mice"
4)支持usb键盘
export QWS_KEYBOARD=USB:/dev/input/event2
注意这个event2根据具体输入节点而定,可在开发板输入:cat /dev/input/eventX 命令,然后按下usb键盘任意按键,查看是终端有输出而定。
4.3移植tslib库
1)拷贝tslib库到开发板
在开发板建立/usr/local/tslib目录,将虚拟机/usr/local/tslib库拷贝到开发板/usr/local/tslib目录下。注意:也可以根据客户实际情况,将tslib库放到其他目录下,只要保证环境变量与实际库文件所在路径对应起来就可以。
2)修改触摸屏配置文件
在开发板输入命令:$ vi /etc/profile
然后在文件中添加一下环境变量
export T_ROOT=/usr/local/tslib/lib // 指定tslib主目录位置
export TSLIB_CONSOLEDEVICE=none//设定控制台设备为none
export TSLIB_FBDEVICE=/dev/fb0//指定帧缓冲设备
export TSLIB_TSDEVICE=/dev/input/event1//指定触摸屏设备
export TSLIB_PLUGINDIR=$T_ROOT/ts//指定触摸屏插件所在路径
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf//指定TSLIB配置文件的位置
export TSLIB_CALIBFILE=/etc/pointercal//指定触摸屏校准文件pointercal存放位置
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH//指定TSLIB的库文件路径
export PATH=/usr/local/tslib/bin:$PATH//设置环境变量:方便执行/tslib/bin/ ts_calibrate校准程序
保存退出,如下图所示:
4.4注意事项
若内核配置为同时支持电阻屏和电容屏,则电阻屏设备节点为:/dev/input/event1 ,电容屏设备节点为:/dev/input/event2。此时,若使用电容屏,需要指定/etc/profile中TSLIB_TSDEVICE和QWS_MOUSE_PROTO参数为/dev/input/event2。如下所示:
export TSLIB_TSDEVICE=/dev/input/event2
export QWS_MOUSE_PROTO="tslib:/dev/input/event2"