海思移植Qt以及tslib

海思移植Qt以及tslib warren@伟 2023-09-01 14:38:41 960

知识点——————————————————————————————
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。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 4 3 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • 2024-06-17 14:39:01
    回复
    为啥把编译后的qt可执行文件,加载到海思自启动里面,开机启动特别慢,慢的像卡死了一样,这怎么解决
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
warren@伟
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区