基于A40I/T3 SDK平台的QT4.8移植和应用开发连载(六)-盈鹏飞嵌入式

本文记录了QT4.8图形界面在全志A40I/T3 SDK平台上的移植过程,说明过程中可能会技术瑕疵,希望大家提供宝贵意见。

本文移植的平台来自于盈鹏飞嵌入式的CoM-X40I/T3A平台(处理器分别时是全志的A40I/T3)。

以下是盈鹏飞嵌入式CoM-X40I核心模块的简要介绍:


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

以下是以CoM-X40I为核心板主板-SBC-X40I的功能图:


以下为基于A40I/T3 SDK平台的QT4.8移植和应用开发连载(六)内容:

6 qt4程序发布

6.1应用程序发布简介

应用程序经过交叉编译后,发布到嵌入式主板前,一般需要执行如下步骤:

移植程序依赖动态库

添加程序相关资源

开机自动运行

程序的运行依赖于相关的动态库,动态库一般在程序运行之前发布,可执行文件运行时可以搜索到。程序运行除需要指定动态库之外,还可能需要指定其他资源,如qt程序可能需要指定字体、图片等。

下面以qtdemo发布到SBC-X40I主板为例,介绍QT程序发布的问题。程序发布需执行如下步骤:

 移植qtdemo依赖动态库

设置qtdemo查找动态库路径

相关字体、图片资源

开机自动运行qtdemo程序

6.2移植依赖动态库

qtdemo所需要的特定的动态库,例如sqlite3,可在buildroot生成根文件系统时选择组件(参考linux开发指南),也可从交叉编译链中找到并拷贝到主板根文件系统中。如果buildroot中也没有集成,一般需要单独进行移植。下面是qtdemo依赖动态库(库版本可能略有区别):

// glibc :c运行库,几乎所有动态库都依赖该库。

libdl.so.2

libgcc_s.so.1

libc.so.6

ld-linux-armhf.so.3  

//qtlib库

libQtCore.so.4.8.4                     

libQtGui.so.4.8.4               

libQtNetwork.so.4.8.4                              

libasound.so.2.0.0                 

libfreetype.so.6.10.0                 

libid3tag.so.0.3.0                                          

libmad.so.0.2.1

libncurses.so.5.9

libpng14.so.14.12.0

libsqlite3.so.0.8.6

// c++运行库

libstdc++.so.6.0.17

libstdc++.so.6.0.17-gdb.py

libz.so.1.2.7

//触摸屏库

libts-1.0.so.0.0.0

ts/

terminfo@

6.3 linux下程序搜索动态库的说明及先后顺序

linux下一般程序运行时查找动态库的方法如下所示:

1、系统默认搜索动态库路径

linux系统默认情况下会在/lib和/usr/lib目录下搜索动态库,所以可将qtdemo所需动态库添加到该目录即可。SBC-X40I主板将glibc库放在/lib目录下,其他qtdemo依赖动态库/usr/lib 目录下。

2、根据环境变量LD_LIBRARY_PATH查找

方法:如设置添加/usr/test为查找动态库路径,可在目标板/etc/profile文件中添加如下语句:

export LD_LIBRARY_PATH=/usr/test:$ LD_LIBRARY_PATH,如下图所示:

执行命令:source /etc/profile,即可添加/usr/test为动态库的查找路径,如下图所示:

此时将qtdemo所需动态库添加到/usr/test目录即可,在profile文件中加载增加环境变量在系统中一直有效,同时也是全部用户有效。有些情况下,主板上运行的多个程序可能依赖的同一个动态库版本不同,如果统一用profile文件进行配置,将导致某个程序运行出现问题。这时最好的办法是使用终端有效的脚本进行临时配置,程序启动后,环境变量即失效。具体做法是需要配置环境变量的时候,执行运行下脚本(指令:source *.sh),在SBC-X40I主板上提供了qt4.8.sh脚本,具体如何应用请查看《配置qt自启动》一章节。

6.4添加字体

用户可以选择下载自己喜欢的字体,放在主板/usr/local/Qt-4.8.7/lib/fonts目录下,如果只需要一种字体可以把其他字体全部删除,只保留所需要的字体。

移植文泉驿字体库(qpf格式)为例:

下载地址为:http://download.csdn.net/detail/yanzi1225627/4478888,下载完成后复制到虚拟机

linux系统下,可通过scp命令将其拷贝到主板/usr/local/Qt-4.8.7/lib/fonts目录下。如下图所示:

在主板/usr/local/Qt-4.8.7/lib/fonts目录下可看到该字体,如下图所示:

6.5指定图片资源

Qt程序在使用图片时,可以直接编译进工程,也可以在程序运行中加载图片。qtdemo程序同时使用了这两种方法,普通小图片采用直接编译进工程中,也有部分图片是在程序运行时才加载。在qtdemo程序config_all.h中指定了运行时才加载的图片,如下图所示:

所以需要在SBC-X40I主板的/usr/qt4demo目录下需要建立image目录,将所提及的图片拷贝到该目录下即可。

另外,qtdemo程序运行音频测试时指定了/usr/qt4demo/mediafile/aaa.mp3文件,所以在SBC-X40I主板上的/usr/qt4demo/mediafile/目录下也需要植一个aaa.mp3的文件。

最后,qt程序中默认只支持png格式图片,如果需要使用其他格式,需要添加相应图片插件,默认路径为/usr/lib/目录下,SBC-X40I主板默认支持的图片格式:jpeg 、tga 、ico 、tiff格式。

至此,即可在SBC-X40I主板上正常运行qtdemo程序,输入命令:

Target#cd /embfly_test/qt4demo

Target#./qtdemo –qws –fn -wenquanyi &,

执行结果如下所示:

可以看到qt界面,触摸屏可以正常工作。如下图所示:

命令参数:

–qws :作为服务器模式运行

-fnwenquanyi:指定qtdemo 使用wenquanyi字体

6.3章节-指定动态库路径、6.4章节-添加字体以及6.5章节-指定图片资源,这几个qt程序需要的资源可以通过预制到<SDK>/buildroot-201611/target/user_rootfs_extra对应的目录下,在固件打包时将该程序打包到主板的根文件系统。

6.6实现开机自动运行qtdemo程序

SBC-X40I主板如何实现开机自动运行qt程序?

1)系统启动时,会执行rcS脚本,rcS脚本会调用/etc/init.d目录下以S+两位数字+文件名字命名的文件。

2)调用S94Qt-application脚本后,该脚本会调用launch_qt48.sh脚本,该脚本会执行触摸屏的校验,最后调用runqt48脚本,该脚本在/etc/init.d目录下

因此用户要启动其他程序,只要更改runqt48的脚本即可。

首先,上电SBC-40I主板,在终端中查看下开机自动运行脚本/etc/init.d/rcS,如下所示:

可看到开机自动运行/etc/init.d/目录下以S+两位数字+文件名字命名的文件。

在主板的SBC-X40I主板的/etc/init.d/目录下找到S94Qt-application文件,如下图所示:

查看S94Qt-application,可以看到它执行了5步:

第一步:见方框1,判断是否有qt4.8的库目录存在,如果有存在,则执行. /qt4.8.sh进行初始化。

初始化的目的是为了下一步触摸屏校验可运行,qt4.8.sh的内容如下:

第二步:见方框2,这一步是判断触摸屏的节点是否存在,为下一步执行触摸检验做准备。截图中使用了ts0/ts1/ts2节点,实际上在SBC-X40I主板上,我们使用的是touchscreen0节点。

第三步:见方框3,这一步是判断触摸屏是否已经存在校验文件pointercal,该文件配置在主板的/etc目录下。如果该文件已经存在了,那么触摸屏不再需要校验。如发现校验文件不准,则可以把该文件删除后,

重新执行ts_calibrate指令进行重新校验。

第四步:见方框4,这一步是执行触摸屏校验工作。看脚本中是使用了绝对路径/usr/local/tslib1.4/bin/ts_calibrate来调用程序。在脚本中已经配置了如下脚本,可以直接执行ts_calibrate指令亦可。

export T_ROOT=/usr/local/tslib1.4

export PATH=$T_ROOT/bin:$PATH

第五步:见方框5,执行runqt48脚本,runqt48脚本内容如下:

其中,.  /qt4.8.sh是临时设置qt4.8的环境变量,然后执行/embfly_test/qt4demo/qtdemo程序。

如果用户要启动自己的程序,只要更改runqt48的脚本(把这个程序/embfly_test/qt4demo/qtdemo换掉)即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容