AM335X/A40I平台 QT4.8移植和QT应用开发连载(五)

本文记录了QT4.8平台在AM335X/A40I等现在流行嵌入式平台的移植过程,说明过程中可能会技术瑕疵,希望大家提供宝贵意见。
本文移植的平台来自于盈鹏飞嵌入式的COM-335X平台(处理器是AM335X)和COM-X40I平台(处理器是全志A40I/T3).

                                             集成电源版本,集成电源是TPS65217 

                                                                          分立电源版本 

以下为产品介绍:

COM-335X 产品特性

  1. 采用TI公司Cortex-A8 AM335X处理器,运行最高速度为1GHZ;
  2. 支持128M-512M DDR3 SDRAM;
  3. 支持128-1G字节 SLC电子盘或者EMMC 4G-32G大容量电子盘,可启动;
  4. 最多可支持两路千兆以太网,支持IEEE1588;
  5. 支持两路高速USB OTG;
  6. 支持最多六路串口,双路CAN BUS;
  7. 支持分辨率最高的1360*768显示接口,可支持SGX530 3D引擎; 
  8. 板载DS1339的RTC时钟,国内独家设计,保证系统时钟同步;
  9. 支持GPMC扩展总线,可扩展FPGA或者 DSP应用;
  10. 稳定的操作系统的支持,可预装Ubuntu 16.04或者Preempt Linux 4.14;ANDROID 4.2可根据项目定制;
  11. 超小体积,邮票孔设计,160pins, 尺寸为:45*45MM

以下为产品介绍:

COM-X40I 产品特性

  1. 采用Allwinner公司Cortex-A7四核A40i处理器,运行最高速度为1.2GHZ;
  2. 支持Mali-400MP2 GPU,支持OpenGL ES 2.0 / OpenVG 1.1 standard
  3. 支持1080P 视频编码,支持H.264,VP8;多格式1080P 60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) 
  4. 支持双屏异显;支持HDMI V1.4A/RGB888/LVDS,分辨率最高1920x1080;T3处理器不支持HDMI;
  5. 支持512-2G  Bytes DDR3 SDRAM;
  6. 支持EMMC 4G-64G大容量电子盘,可启动;
  7. 支持SDIO3.0,USB2.0 HOST&OTG,2路I2C,6路UART,2路SPI,2路PWM
  8. 支持双路以太网,一路10/100M;一路10/100/1000M;
  9. 可定制宽温产品,替换AM335X
  10. 稳定的操作系统的支持,可预装Android7.0或者LINUX 3.10(可预装Preempt Linux系统);
  11. 超小体积,邮票孔设计160pins, 尺寸为:45*45MM

以下是本连载的第(五)篇 qt程序发布

 6 qt程序发布

6.1应用程序发布简介

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

  • 移植程序依赖动态库
  • 链接动态库
  • 添加程序相关资源   
  • 开机自动运行 

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

下面以qtdemo1发布到EVB335X 为例,介绍程序发布问题。qtdemo1程序发布需执行如下步骤:

  • 移植qtdemo1依赖动态库     
  • 设置qtdemo1查找动态库路径
  • 添加qtdemo1相关字体、图片资源
  • 开机自动运行qtdemo1程序

6.2移植依赖动态库

对于c 运行库和qtdemo1所需要的特定的动态库,可在buildroot制作根文件系统时选择(参考linux开发指南),也可从交叉编译链中找到并拷贝到开发板根文件系统中。EVB335X选择glibc为linux标准c运行库,下面是qtdemo1 依赖动态库:

// 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下一般程序运行时查找动态库的方法如下所示:

1、根据环境变量LD_LIBRARY_PATH查找

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

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

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

此时将qtdemo1所需动态库添加到/usr/test目录即可。 

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

方法:linux系统默认情况下会在/lib 和/usr/lib目录下搜索动态库,所以可将qtdemo1所需动态库添加到该目录即可。

EVB335X将glibc库放在/lib目录下,其他qtdemo1依赖动态库/usr/lib 目录下。

6.4添加字体

用户可以选择下载自己喜欢的字体,放在/opt/qtenv/QT-4.8.2-arm/lib/fonts目录下,如果只需要一种字体可以把其他字体全部删除,只保留所需要的字体。

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

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

linux系统下,可通过scp命令将其拷贝到开发板/opt/qtenv/QT-4.8.2-arm/lib/fonts目录下。如下图所示:

在开发板/opt/qtenv/ QT-4.8.2/lib/fonts/目录下可看到该字体,如下图所示:

6.5指定图片资源

Qt程序在使用图片时,可以直接编译进工程,也可以在程序运行中加载图片

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

所以需要在EVB335X评估板/usr/目录下需要建立image目录,将所提及的图片拷贝到该目录下。如图所示:

由于运行qtdemo1程序运行音频测试时指定了,/usr/test/aaa.mp3文件,所以在EVB335X /usr/test/目录下也需要移植一个aaa.mp3的文件。如下图所示:

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

至此,即可在EVB335X上正常运行qtdemo1程序,输入命令:$./qtdemo1 qws fn -wenquanyi &,如下所示:

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

命令参数:

–qws 作为服务器模式运行

-fn wenquanyi:指定qtdemo1 使用wenquanyi字体

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

EVB335X如何实现开机自动运行qt程序?以运行qtdemo1为例,通过查看开机自动运行脚本/etc/init.d/rcS,如下所示:

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

所以我们在/etc/init.d/目录下建立S51qtdemo可执行文件,如下图所示:

 编辑S51qtdemo,添加语句:/bin/qtdemo & ,该语句的意思是开机自动执行/bin/qtdemo文件,如下图所示:

 如果/usr/test/目录下已经存在移植好的qtdemo1程序,则开机即可自动运行qtdemo1程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值