Qt5.6.1移植海思Hi3521d(三)

news2025/1/15 21:55:56

系列文章目录


Qt5.6.1移植海思Hi3521d(一)
Qt5.6.1移植海思Hi3521d(二)


前言

本章讲解如何将编译好的qt程序移植到海思Hi3521D板子上,并且能够启动qt界面,和正常显示中文


一、移植qt库

创建qt.conf,打包qt依赖库,具体参考我这篇博客Linux Qt程序打包发布
将编译好的Qt程序和qt.conf、QtLib文件夹放到同一目录,如下图所示:
在这里插入图片描述
QtLib目录下Core\Gui\Widgets三个库是必须的,其他库根据自己的需要拷贝,拷贝完之后,需要修改/etc/profile文件,需要修改的地方具体如下:

export LD_LIBRARY_PATH="/usr/local/lib:/usr/lib:/root/HelloQt/QtLib:/root/HelloQt/QtLib/lib"                                                                                                                                                                                                                                                                                                                                                                                                  
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0                                                                                                                                                                                                                                                        

修改完输入 source /etc/profile可立即生效

二、运行Qt界面

库和配置拷贝完之后,我们./HelloQt运行程序,可以发现,进程起来了,但是没有界面,因为海思的板子比较特殊,界面需要显示在图层上,具体说明如下:
在这里插入图片描述
所以,我上边/etc/profile配置时选的G0图层,对应的FB设备文件时/dev/fb0,我们需要做的时,打开fb之后,在显示QT界面就可以了,FB开发流程如下:
在这里插入图片描述

HiFB 的开发步骤如下:
步骤 1. 调用 open 函数打开指定的 HiFB 设备。
步骤 2. 调用 ioctl 函数设置 HiFB 的象素格式以及屏幕高宽等参数(详细内容请参见《HiFB API 参考》)。
步骤 3. 调用 ioctl 函数获取 HiFB 所分配的物理显存大小、跨度等固定信息。调用 ioctl 函数也 可以使用 HiFB 提供的层间 colorkey、层间 colorkey mask、层间 alpha、原点偏移等功 能。
步骤 4. 调用 mmap 函数将物理显存映射到虚拟内存空间。
步骤 5. 操作虚拟内存,完成具体的绘制任务。在此步骤可以使用 HiFB 提供的双缓冲页翻转等 功能实现一些绘制效果。
步骤 6. 调用 munmap 解除显存映射。
步骤 7. 调用 close 函数关闭设备。
----结束

具体细节我也讲不清楚,海思提供的开发包里面文档有详细说明,认真看就行了;
然后是打开HiFB具体功能函数,我这边就不方便提供了,我这边是拿的这个海思的demo改的,应该不难,demo具体路径为:

Hi3521D_V100R001C01SPC040\01.software\board\Hi3521DV100_SDK_V1.0.4.0\package
\mpp\sample\hifb


打开fb之后,就可以创建qt界面,然后show显示,效果如下图:
在这里插入图片描述
只显示了字幕和数字,没有中文,原因是缺少字库

三、添加字库

`我这边是直接将字库编译到可执行程序中,main函数添加如下代码:

QFont iconFont;
int fontId = QFontDatabase::addApplicationFont(":/font/DroidSansFallback.ttf");
QStringList fontName = QFontDatabase::applicationFontFamilies(fontId);
if (fontName.count() > 0)
{
    iconFont = QFont(fontName.at(0));
}
else
{
    qDebug() << "load DroidSansFallback.ttf error";
}
a.setFont(iconFont);

使用此方法,则./QtLib/lib/下的fonts文件可以删除掉

在这里插入图片描述
你也可以配置字库路径,在/etc/profile中添加如下代码即可

export QT_QPA_FONTDIR=/root/HelloQt/QtLib/lib/fonts

再次运行qt程序,就可以了
在这里插入图片描述

总结

关于界面居中问题,打开fb里面可以设置,需要自己计算偏移位置居中,另外,附上我使用的 海思Qt中文字库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不再封控,各高校要如何开展教学

疫情政策逐步放开&#xff0c;石家庄、福州、广西等地各高校发布寒暑假和期末课程安排。 广西科技大学要求从2022年12月13日下午起&#xff0c;停止所有线下课程&#xff0c;未完成的教学任务启动线上教学。 在疫情这三年里&#xff0c;线上教学已经成为学校的主要教学手段&…

Python操作Excel

文章目录xlrd模块安装xlrd库打开Excel文件读取获取指定工作表操作指定行操作指定列操作指定单元格使用示例xlrd模块 xlrd是Python处理Excel表格数据的一个模块&#xff0c;能够对Excel中的数据进行读取。 安装xlrd库 在命令行或终端中输入以下命令进行安装&#xff1a; pip…

python数据分析 之 pandas数据统计

目录 一&#xff1a;数据集准备 二&#xff1a;加载文件 三&#xff1a;分组操作进行统计 一&#xff1a;数据集准备 可以创建一个txt&#xff0c;并放置pycharm工程目录下 下面是博主的数据集测试&#xff0c;所用数据&#xff0c;需要的自取 1001,Chinese,1,80 1001,Chine…

富芮坤蓝牙FR801xH开发环境搭建

富芮坤蓝牙FR801xH方案开发资源包网盘下载链接&#xff1a;网盘 提取码&#xff1a;30qu 搭建过程&#xff1a; 安装Keil开发工具:mdk525.exe 可以从Keil官网下载&#xff1a;http://www.keil.com/files/eval/MDK525.EXE 也可以使用网盘tools目录里的包装包 其中需要注意选择的…

Qt扫盲-QScrollArea理论总结

这里写目录标题1. 概述2. 滚动条策略3. 子控件4. 尺寸提示1. 概述 QScrollArea 用于显示滚动区域框架内的子控件的内容。如果控件超过框架的大小&#xff0c;视图可以提供滚动条&#xff0c;以便可以查看子控件的整个区域。子控件必须使用 setWidget() 指定。但是在 QDesigner…

【车载开发系列】UDS诊断---请求下载($0x34)

【车载开发系列】UDS诊断—请求下载&#xff08;$0x34&#xff09; UDS诊断---请求下载&#xff08;$0x34&#xff09;【车载开发系列】UDS诊断---请求下载&#xff08;$0x34&#xff09;一.概念定义二.产生背景三.报文格式1&#xff09;请求报文2&#xff09;肯定响应3&#x…

[附源码]Nodejs计算机毕业设计基于的民宿租赁系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

MySQL处理非结构化JSON数据(附 MyBatis-Plus 集成)

概述 MySQL 自5.7起开始支持JSON格式的非结构化数据&#xff0c;并且在8.x版本进行性能优化 关于 JSON JSON&#xff08;JavaScript Object Notation, JS对象简谱&#xff09;是一种轻量级的数据交换格式。它基于 ECMAScript&#xff08;European Computer Manufacturers Asso…

Spring Cloud Alibaba

Spring Cloud Alibaba第五部分 第二代 Spring Cloud 核心组件&#xff08;SCA&#xff09;第 1 节 Nacos 服务注册和配置中心1.1 Nacos 介绍1.2 Nacos 单例服务部署1.3 微服务注册到Nacos1.4 负载均衡1.5 Nacos 数据模型&#xff08;领域模型&#xff09;1.6 Nacos 配置中心1.6…

智能家居DIY创意之智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时&#xff0c;它们可以通过声控、触控、红外等方式进行控制&#xff0c;或者带有调光开关&#xff0c;让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块&#xff0c;可与手机、家庭智能助手、或其他智能…

水下潜航器的建模与控制

(线性系统理论大作业) 题目 水下潜器模型&#xff0c;可能是潜艇或者鱼雷等对象。一个主推进螺旋桨&#xff0c;前后两对水平陀翼&#xff0c;后面一对垂直陀翼。   潜器前进过程中&#xff0c;通过调节助推进螺旋桨推力&#xff0c;以及三对陀翼的角度变化&#xff0c;对潜…

paddle_gpu安装配置

paddle_gpu安装配置1.确认安装版本2. 安装相关文件2.1 下载与安装3.cuDNN下载及安装4.创建conda虚拟环境5.参考教程1.确认安装版本 操作系统&#xff1a;windows安装方式:condapython版本:python3.7CUDA版本&#xff1a;本人电脑版本【11.6.134】&#xff0c;低于此版本电脑都…

傻白入门芯片设计,盘点CPU业界的顶尖人才(十四)

这篇文章主要是针对现在CPU业界的顶尖人才&#xff0c;体现为以下几点&#xff1a;提出了革命性的技术路线&#xff0c;做出了杰出的产品&#xff0c;为公司做出重要贡献。按照当前供职情况&#xff0c;根据国际巨头所在公司分类&#xff0c;我主要收集了AMD&#xff0c;其余几…

【DevOps实战系列】第八章:详解Jenkins集成Docker私服Nexus3

个人亲自录制全套DevOps系列实战教程 &#xff1a;手把手教你玩转DevOps全栈技术 Jenkins集成Docker镜像仓库 docker私服已经搭建完毕&#xff0c;下边我们期望jenkins做的事是&#xff1a; ①通过git拉取代码②通过maven构建生成jar包③构建含有jar包的镜像④推送到docker仓库…

五问补盲(三) | 补盲激光雷达,敢不敢直面新的安全威胁?

作者 | 爱LiDAR的小飞哥 编辑 | 王博在激光雷达上车的热潮中&#xff0c;各家都在技术参数上进行着“你死我活”的拼杀。 那么&#xff0c;参数代表一切吗&#xff1f;举个例子&#xff0c;测距200米的激光雷达一定比测距150米的更好吗&#xff1f; 可以肯定地说&#xff0c;非…

JVM 之 AdaptiveSizePolicy 参数

AdaptiveSizePolicy 简介 AdaptiveSizePolicy(自适应大小策略) &#xff1a; JDK 1.8 默认使用 UseParallelGC 垃圾回收器&#xff0c;该垃圾回收器默认启动了 AdaptiveSizePolicy&#xff0c;会根据GC的情况自动计算计算 Eden、From 和 To 区的大小。 配置&#xff1a; 开启…

vue生命周期

vue的生命周期就是vue实例从创建到销毁的全过程&#xff0c;就是从开始创建、初始化数据、编译模版、挂载Dom、更新渲染、卸载等⼀系列过程&#xff0c;在这个过程中存在生命周期的钩子函数&#xff0c;我们可以在对应阶段添加实现自己的代码。 钩子函数&#xff08;共8个&…

智慧物流|Springboot+Vue+Nodejs实现智慧物流系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

Java如何读取输入

文章目录0.写在前面1.介绍2.举例3.写在最后0.写在前面 Java语言可以接收从键盘的输入&#xff0c;一般用来在调试的时候会用到&#xff0c;实际开发一般不用。 所以在此记录比较简单。 1.介绍 读取流程&#xff1a; 1.导入需要的工具包 2.构造一个“标准输入流”System.in关…

软件测试基础理论体系学习10-什么是本地化测试?本地化测试有哪些问题?本地化测试的重点是什么?

10-什么是本地化测试&#xff1f;本地化测试有哪些问题&#xff1f;本地化测试的重点是什么&#xff1f;1 本地化测试概述1.1软件本地化概念1.2 软件本地化工程1.3 软件本地化的重要性2 本地化测试翻译问题2.1 软件本地化不等于软件翻译2.2 软件本地化语言翻译技术2.2.1 翻译记…