海思平台移植Qt和tslib以及搭建Qtcreator环境

知识点------------------------------------------------------------

Frmebuffer:linux为显示显示设备提供的一个接口,可以屏蔽图像硬件爱你的底层差异,允许上层应用在图形模式下对显示缓冲区进行读写操作,模仿显卡的功能,可以通过对framebuffer的读写直接对显存进行操作,写操作可以直接反映在屏幕上。操作如下:

  1. 打开/dev/fbn设备文件;
  2. 用ioctl()操作取得当前显示屏幕的参数,如屏幕的分辨率、每个像素点的比特数。根据屏幕的参数可计算屏幕缓冲区的大小;
  3. 用mmap()函数,将屏幕缓冲区映射到用户空间;
  4. 映射后就可以直接读/写屏幕缓冲区,进行绘图和图片显示。

开发环境---------------------------------------------------------------

Ubuntu16.04 已安装好交叉编译器,可以通过如下图方式查看

如果没有安装好,可以查看我的另一篇博文进行安装

https://blog.csdn.net/warren103098/article/details/128074192?spm=1001.2014.3001.5502

海思 hi3516DV300

Tslib步骤-------------------------------------------------------------

获取和下载tslib

获取 tslib 的源码,git 地址为 https://github.com/kergoth/tslib,拷贝至任意目录,解压

tar xf tslib-1.21.tar.bz2

(注意空格)

./configure--host=arm-linux-gnueabiCC=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc-prefix=/home/wzw/Hisi_qt/test/tslib-1.21/arm-tslib

直接Make

接着make install(忽略警告)

安装完后生成arm-tslib文件夹

查看是否编译成功

Cd  arm-tslib/bin

File  ts_test 看到ARM即成功

至此ts_lib编译完成,接着是把编译好的库移植到板端

tar -jcf ./arm-tslib.tar.bz2  arm-tslib

拷贝至板端,tar xf arm-tslib.tar.bz2 -C /usr/lib

接着配置环境变量,这里注意一下要使用event2

如果板端有source命令,可以直接source /etc/profile使环境变量生效。如果没有,直接重启也可以使环境变量生效;

接着测试tslib是否生效

cd  /usr/lib/arm-tslib/bin/test

./ts_test(这里我是配置好hifb的(后续会将),如果没有配置好,显示会不正常)

触摸点坐标

至此tslib移植完成。

Qt移植--------------------------------------------------------------------

首先获取qt源码

wget  https://download.qt.io/archive/qt/5.12/5.12.9/single/qt-everywhere-src-5.12.9.tar.xz

tar vf qt-everywhere-src-5.12.9.tar.xz

cd qt-everywhere-src-5.12.9/

ls

接着修改qmake.conf

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

接着配置编译选项,为了方便,我们可以写一个脚本来执行,其中第一行和倒数两行的路径需要改成自己的实际路径

赋予脚本执行权限 chmod +x autobuild.sh

同时确保你装好了g++ 若没有-sudo apt-get install g++

./autobuild.sh

配置完成后可以看到just run ‘make’即为成功

接着开始编译qt-------make -j 16(选择核数)

编译完成后make install 这里会生成arm-qt文件夹

至此qt编译完成

接下来将编译好的qt库移植到板端

tar -jcf ./arm-qt.tar.bz2 arm-qt  打包后拷致板端

tar  xf  arm-qt.tar.bz2  -C  /usr/lib

接着配置环境变量,这里注意一下芯片为Hi3516 dv300只有fb0;

与其他使用linuxframebuffer的soc不同,海思使用的是hifb来管理图层,因此我们并不能直接显示,必须要先初试化hifb才能显示qt界面;

这里我参考了很多资料,很多博文都说采用hifb这个例程,但是我试了很多次依然不行,可能是那个地方没有配置成功,后续我将继续阅读该例程源码后再尝试;偶然看到有位博主使用的是tde这个例程,经尝试可以正常显示qt界面;下面我们以tde例程为例进行改写:

使用到的资料有《HiFB 开发指南》《HiFB API参考》

可以看到在使用hifb时要先加载hifb的驱动并分配内存

Sampl_circumrotate起先是初始化sysy以及vo,开启vo设备

接着是TDE_DragraphicSample函数,主要的过程可以参考下图,我主要讲一下更改哪里

首先更改成我们的屏幕的分辨率1080*1920

把循环播放二十次图片的函数去掉换成如下的函数即可

至此程序部分改动完成,拷贝至板端

./sample_tde &

初始化成功后应该是青色如下图

cd  /usr/lib/arm-qt/examples/widgets/animation/animatedtiles/

./animatedtiles

测试qt例程,触摸正常,显示正常

至此板端配置完成,后面测试我们自己编写的qt代码,首先是配置pc的qt creator。

搭建arm平台的Qt creator环境------------------------------------------------------------------------

首先安装qt,这里的话请自行百度,本文不再描述;

  1. tool->options->kits->Qy version
  2. Add 选择我们刚刚编译出来的arm-qt里的qmake,再点击apply

3:)接着配置C++编译器,选择complies点击add GCC->c++

取个名称,再选择编译器的路径即可

至此配置完成,下面开始验证

新建一个项目,取名为hisi_test,一路next即可,到下图这一步时,选择arm-qt5.12.9

在ui界面随便搞几个控件

直接build,不要点run。因为是arm平台的程序x86不能执行,可以看到程序正常编译

我们到刚刚创建项目的的目录里,可以看到编译后的目录,将hisi_test拷到板端

运行./hisi_test03

运行成功,至此qt移植成功。

猜你喜欢

转载自blog.csdn.net/warren103098/article/details/128100273
今日推荐