海思Hi3516DV300 移植Qt 运行并在HDMI显示器上显示

海思Hi3516DV300 移植Qt

本文所使用服务器端系统环境为Ubuntu 20.04;使用的qt版本为qt-everywhere-src-5.15.8
前置条件:配置安装好Hi3516交叉编译工具链 arm-himix200-linux



参考博客

【海思篇】【Hi3516DV300】十一、qt5移植
【Hi3516DV300】十二、海思framebuffer的qt移植

感谢大佬树下棋缘的无私分享!


提示:以下是本篇文章正文内容,下面案例可供参考

一、下载编译qt-everywhere-src-5.15.8

下述操作均在Ubuntu 20.04进行

1.1 下载qt-everywhere-src-5.15.8

  • 官网地址
  • 清华源镜像
  • 或者使用命令行wget https://download.qt.io/archive/qt/5.15/5.15.8/single//qt-everywhere-src-5.15.8.tar.xz

建议下载安装到 /opt 目录下

1.2 编译安装qt-everywhere-src-5.15.8

解压qt-everywhere-src-5.15.8.tar.xz

tar -xf qt-everywhere-src-5.15.8.tar.xz

建议修改该目录的权限:sudo chmod 777 -R qt-everywhere-src-5.15.8/

创建海思qmake.conf

cp /opt/qt-everywhere-src-5.15.8/qtbase/mkspecs/linux-arm-gnueabi-g++/ /opt/qt-everywhere-src-5.15.8/qtbase/mkspecs/arm-himix200-linux-g++ -rf
sudo vim /opt/qt-everywhere-src-5.15.8/qtbase/mkspecs/arm-himix200-linux-g++/qmake.conf

修改qmake.conf内容如下:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf
海思Hi3516dv300是一款基于ARM Cortex-A7架构的处理器,可以通过以下两种方法计算代码的运行时间: 1. 使用cyclecount寄存器 在程序中插入以下代码即可计算执行时间: ``` unsigned int start, end; __asm__ __volatile__("mrs %0, cyclecount\n" : "=r"(start)); // your code to be measured here __asm__ __volatile__("mrs %0, cyclecount\n" : "=r"(end)); printf("Execution time: %d cycles\n", end-start); ``` 2. 使用ARM定时器 可以使用ARM定时器计算代码执行时间,步骤如下: - 初始化ARM定时器,设置计数器频率和计时器的初始值。 - 启动定时器。 - 执行需要计时的代码。 - 停止定时器。 - 读取定时器的计数器值,并根据计数器频率计算出代码执行时间。 下面是一个使用ARM定时器计算代码执行时间的示例代码: ``` #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <time.h> #include <unistd.h> #include <fcntl.h> #include <sys/mman.h> #define TIMER_BASE 0x20030000 #define TIMER_LOAD 0x00 #define TIMER_VALUE 0x04 #define TIMER_CTRL 0x08 #define TIMER_INTCLR 0x0C unsigned int *timer; void init_timer(void) { int fd = open("/dev/mem", O_RDWR); timer = (unsigned int*)mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, TIMER_BASE); close(fd); } void start_timer(void) { timer[TIMER_LOAD] = 0xFFFFFFFF; timer[TIMER_CTRL] = 0x00000003; } void stop_timer(void) { timer[TIMER_CTRL] = 0x00000000; } unsigned int get_timer_value(void) { return timer[TIMER_VALUE]; } int main(int argc, char **argv) { init_timer(); start_timer(); // your code to be measured here stop_timer(); printf("Execution time: %d cycles\n", 0xFFFFFFFF - get_timer_value()); return 0; } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值