基于arm的嵌入式QT开发(课程设计)

本文详细介绍了基于ARM的嵌入式Qt5.7开发过程,包括项目要求、开发环境搭建(硬件和软件环境配置、交叉编译QT5.7、QT5.13测试环境配置)、项目分析(硬件和软件模块分析)以及设计与实现(游戏模块、音视频播放器、LED灯控、RTC时钟控制、计算器、UART、USB HOST、SD/MMC模块)。通过这些步骤,开发者能够掌握在嵌入式平台上开发Qt应用的方法。
摘要由CSDN通过智能技术生成

一、 项目要求

  1. 配置QT5.7基于x86arm 等两种CPU架构的调试及开发环境;
  2. 移植arm编译后的QT5.7及屏幕校准工具tslib1.4CORTEX ARM9实验平台;
  3. 开发基于QT5.7的嵌入式音视频播放器;
  4. 开发基于QT5.7的嵌入式串口工具,实现数据双向通信;
  5. 能用Q5.7T在开发板上实现读取SD卡及U盘的文件(目录)信息,并以相关组件展示;
  6. 开发基于QT5.7的嵌入式LED io控制器,实现对LED设备的控制;
  7. 开发嵌入式QT小游戏模块;
  8. QT开发计算器模块;
  9. 实现日期组件,能够修改系统(arm平台)时间并实时刷新;

二、 项目开发环境

2.1 硬件环境

2.1.1开发端(PC) 

操作系统:64ubuntu-19.04(虚拟机)

CPU    INTER_X86 core i5-6200 主频可加速至2.8GHZ

GPU  NVIDIA GEFORCE-920M

虚拟硬盘:25GB

RAM  4GB

2.1.2教学实验平台 

CPUSamsung Exynos4412, 四核Cortex-A9,主频为1.41.6GHz

GPU: ARM Mali-400 MP Core (Quad Fragment processors)

操作系统:Linux 3.0

 

2.2 软件环境

2.2.1 编译QT5.7(ARM)

QT及相关工具下载

  1. http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz下载linuxQT5.7源码版本(考虑到QT4.8.5中对音视频库的支持不够友好,我们直接选择版本更高的QT5并将平台上的QT4予以替换)
  2. 由于编译源码的需要,需要从https://www.veryarm.com/arm-none-linux-gnueabi-gcc下载交叉编译工具arm-none-linux-gnueabi-gcc
  3. 实验平台屏幕校准工具tslib1.4http://vdisk.weibo.com/s/AcUHxOERV2k0?sudaref=www.baidu.com
  4. 最后将下载成功的qt-everywhere-opensource-src-5.7.0.tar.gz、arm-linux-gcc-4.4.3-20100728.tar.gztslib1.4.tar.gz拷贝到虚拟机上。

交叉编译环境配置

解压arm-linux-gcc-4.4.3-20100728.tar.gz

 

执行tar  zxvf arm-linux-gcc-4.4.3-20100728.tar.gz  并将解压后的目录复制到/usr/local/arm/4.4.3下得到:

 

配置arm-gcc环境变量

 

重启之后执行arm-linux-gcc -v

这里出现报错,查阅相关资料了解到该交叉编译工具仅支持32系统,需安装依赖包

执行sudo apt-get install lib32ncurses5 lib32z1之后 验证arm-linux-gcc -v命令显示成功!

 

由此交叉编译环境搭建完毕。

 

交叉编译tslib1.4

进入tslib1.4压缩文件目录,并解压

 

安装完成进入tslib目录执行./configure命令

 

此处如果出现了报错,原因是autoreconf:notfound 则是缺失automakeautoconf库,

索性一次性安装所有make命令相关依赖包

执行sudo  apt-get  install  autoconf  automake  libtool  make libsysfs-dev 

 

这里我在解压后的tslib-1.4目录新建配置脚本autogen.sh

写入 ./configure --prefix=/usr/local/tslib --host=arm-linuxac_cv_func_malloc_0_nonnull=yes并修改其文件模式为777

执行./autogem.sh

 

成功配置之后会在相应目录下生成Makefile文件,执行编译操作

 

如果在/user/local/tslib下生成了bin include等目录则证明编译成功!

 

交叉编译QT5.7

解压QT5.7在任意目录

命令行模式下进入该目录,修改qmake.conf配置参数

执行命令为vim ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

并修改为以下内容:

MAKEFILE_GENERATOR      = UNIX

CONFIG                 += incremental

QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linux #eglfs

QMAKE_CFLAGS_RELEASE += -O2 -march=armv9-a

QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv9-a

include(../common/linux.conf)

include(../common/gcc-base-unix.conf)

include(../common/g++-unix.conf)

# modifications to g++.conf

QMAKE_CC                = arm-none-linux-gnueabi-gcc

QMAKE_CXX               = arm-none-linux-gnueabi-g++

QMAKE_LINK              = arm-none-linux-gnueabi-g++

QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

# modifications to linux.conf

QMAKE_AR                = arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy

QMAKE_NM                = arm-none-linux-gnueabi-nm -P

QMAKE_STRIP             = arm-none-linux-gnueabi-strip

load(qt_config)

创建一个脚本文件,用于生成Makefilevim autocqt.sh,主要目的就是对qt进行裁剪和一些安装配置,脚本内容如下

#!/bin/sh

./configure \

-v \

-prefix /user/local/Trolltech/QtEmbedded-4.6.3-arm \

-release \

-opensource \

-make libs \

-xplatform linux-arm-gnueabi-g++ \

-optimized-qmake \

-pch \

-qt-sql-sqlite \

-qt-libjpeg \

-qt-zlib \

-no-opengl \

-skip qt3d \

-skip qtcanvas3d \

-skip qtpurchasing \

-no-sse2 \

-no-openssl \

-no-nis \

-no-cups \

-no-glib \

-no-iconv \

-nomake examples \

-nomake tools \

-skip qtvirtualkeyboard \

-I/user/local/tslib/include \ #注意该路径为方才交叉编译tslib的目标目录下相应的include目录

-L/user/local/tslib/lib #注意该路径为方才交叉编译tslib的目标目录下相应的lib目录

Exit

执行./autocqt.sh

 

这里出现错误,缺失libxtst-dev,执行apt-get还是不能安装

 

解决办法:进入软件包目录, 直接安装缓存的软件包

 

找到libx11-dev*libxext-dev*

 

问题解决,提示如下信息则执行make命令

 

还是出现错误,提示如下信息,太不容易了,继续排错。

 

找到linux-gcc的位置,添加如下变量

 

不存在QMAKE_CXXFLAGS变量,则在../common/linux.conf../common/gcc-base-unix.conf../common/g++-unix.conf 这三个文件。如果没有找到还需要递归的打开着三个文件中包含的文件。

../common/gcc-base.conf (包含在文件../common/gcc-base-unix.conf 中)文件中找到,并修改为

 

../common/g++-base.conf

 

以及../common/gcc-base.conf,和以上文件一样的修改方式相同

修改之后运行成功查看 /user/local/Trolltech/QtEmbedded-4.6.3-arm

qmake被成功构建

 

至此QT5.7交叉编译成功!

整理待移植目录到任意目录下

 

 

2.2.2 QT5.13测试环境
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值