【北京迅为】《STM32MP157开发板使用手册》-第十三章 编译QtE5.12文件系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


第十章 编译QtE5.12文件系统

制作好的Qt5.12文件系统在“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\02_制作好的文件系统镜像”。

该章节用到的文件可以在网盘的“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\01_QT、tslib和字库源码”文件中找到。

编译uboot,内核使用的编译器与编译Qt5.12.10文件系统的编译器相同为gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf”。

13.1 安装交叉编译器

具体的编译器安装可以查看“9.2 安装交叉编译器”,安装完成之后做一下环境变量测试。

在 Ubuntu 控制台中输入“arm-none-linux-gnueabihf-gcc -v”,然后回车,会出现如下图所示内容。

可以看到默认的编译器已使用我们新添加的gcc 10.3.1。

13.2 编译触摸

使用命令“tar -vxf tslib-1.4.tar.gz”解压源码 tslib-1.4.tar.gz,然后执行如下命令。 

cd tslib

./autogen.sh

./configure CC=arm-none-linux-gnueabihf-gcc CXX=arm-none-linux-gnueabihf-g++ --host=arm-none-linux-gnueabihf --prefix=/opt/tslib1.4 ac_cv_func_malloc_0_nonnull=yes

make

make install

 上述命令用于指定编译器arm-none-linux-gnueabihf-,和生成文件的路径 /opt/tslib1.4。

然后编译和安装,执行完成后使用命令

vim /opt/tslib1.4/etc/ts.conf

修改第二行如下

注意:(ts.conf文件里边的每条语句最前边不能有空格。)

保存,退出。

13.3 编译 QtE5.12库

使用如下命令解压 QtE5.12 源码,并进入解压生成的“qt-everywhere-opensource-src-5.12.10”目录。

tar -vxf qt-everywhere-src-5.12.10.tar.xz

在“qt-everywhere-opensource-src-5.12.10”目录下,使用如下命令,打开 qmake.conf 文件,

vi qtbase/mkspecs/linux-arm-gnueabi-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)

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

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

QT_QPA_DEFAULT_PLATFORM = linuxfb

QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard

QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard

# modifications to g++.conf

QMAKE_CC                = arm-none-linux-gnueabihf-gcc

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

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

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

# modifications to linux.conf

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

QMAKE_OBJCOPY           = arm-none-linux-gnueabihf-objcopy

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

QMAKE_STRIP             = arm-none-linux-gnueabihf-strip

load(qt_config)

~                                                                                        

~                                                                                        

~   

然后保存退出,使用“vi autoconfigure.sh”命令,新建“autoconfigure.sh”脚本。脚本内容如下所示。 

#!/bin/bash
./configure \
-prefix /opt/qt-5.12.10-arm \
-release \
-opensource \
-xplatform  linux-arm-gnueabi-g++ \
-make libs \
-optimized-qmake \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-pch \
-shared \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-I/opt/tslib1.4/include \
-L/opt/tslib1.4/lib
exit

如下图:

保存脚本,退出。使用命令“chmod 777 autoconfigure.sh”修改脚本权限,然后使用命令“./autoconfigure.sh”执行脚本,如下图。 

 

之后会有版本信息认证,输入y即可,如下图所示: 

配置完成之后,接着使用编译命令“make”,编译完成之后如下图所示: 

 

然后使用安装命令“make install”。安装完成如下图所示: 

 

完成后,可以在“/opt”目录下可以查看到生成的“qt-5.12.10-arm”文件,如下图所示。 

在下一小节的打包过程中,会用到该文件。

13.4 生成文件系统

将网盘“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\01_最小linux文件系统\02_最小linux镜像”的“rootfs.tar.gz”拷贝到 Ubuntu 系统下拷贝完成如下图所示。

 

然后使用命令“tar -vxf rootfs.tar.gz”,对rootfs.tar.gz进行解压处理。解压完成,如下图所示: 

 将刚才编译生成的“qt-5.12.10-arm”文件和“tslib1.4”触摸文件,拷贝到“/home/topeet/qt/opt”目录下。如下图所示。

然后将字库文件“fonts”拷贝到“opt/qt-5.12.10-arm/lib/”目录下,并使用 unzip -o -d ./ fonts.zip”解压。 

iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\01_QT、tslib和字库源码”路径下的“lib.tar.gz”拷贝到文件系统的“lib”目录下解压,如下图所示: 

 

在system目录下,使用以下命令,修改环境变量

vim etc/profile

 在/etc/profile中添加tslib和qt的环境变量,添加完成如下所示:

# Ash profile
# vim: syntax=sh
# No core files by defaultulimit -S -c 0 > /dev/null 2>&1USER="`id -un`"
LOGNAME=$USER
PS1='[$USER@$HOSTNAME]:$PWD# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
EVENT=$(cat /proc/bus/input/devices | grep -E 'TSC2007|ft5x0x_ts|goodix-gt911' -A4 | tail -n1 | awk '{print $NF}')
export TSLIB_ROOT=/opt/tslib1.4
export QT_ROOT=/opt/qt-5.12.10-arm
export TSLIB_TSDEVICE=/dev/input/${EVENT:9}
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so 
export QWS_MOUSE_PROTO=tslib:/dev/input/${EVENT:9}
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib:$TSLIB_ROOT/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export LD_PRELOAD=/lib/preloadable_libiconv.so
FLAG=$(cat /proc/bus/input/devices | grep -E 'TSC2007')
if [ "${FLAG:9:7}" = "TSC2007" ];thenexport QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/${EVENT:9}:rotate=180
fi

 将opt/tslib1.4/bin/ 下的ts_calibrate 拷贝到bin目录下,如下图所示:

由于我们需要在开机加载一些ko驱动文件,将“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\05_ko”路径下的ko目录拷贝到文件系统的/usr目录下,拷贝完成如下图所示: 

 然后我们把“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\06_rc.local”目录下的rc.local文件拷贝到文件系统的etc目录下,拷贝完成如下图所示:

然后进入文件系统的/etc/init.d目录下,如下图所示: 

 

然后使用命令“vim rcS”,对rcS文件进行修改,在最下方添加以下内容

sh /etc/rc.local

添加完成如下图所示:

 

保存退出之后,由于我们之后可能会用到WIFI和蓝牙所以我们将“iTOP-STM32MP157开发板网盘资料汇总\04_测试例程\01_外设功能验证配套资料\06_iTOP-STM32MP157--蓝牙WIFI测试”路径下的firmware固件拷贝到文件系统的lib目录下,拷贝完成如下图所示: 

使用命令“du system”命令来查看system文件大小,可以看到该文件系统的大小为230M,如下图: 

所以我们镜像大小在这里设置为300M,使用命令如下

dd if=/dev/zero of=rootfs.ext4 bs=1M count=300 

mkfs.ext4 -L rootfs rootfs.ext4

建立一个大小为300M的ext4 磁盘,如下图所示:

 

然后我们使用命令“mkdir rootfs”,rootfs用来挂载之前制作制作出来的 rootfs.ext4,如下图所示:

接下来使用 mount 命令将 rootfs.ext4 挂载到rootfs 目录下,如下图所示:

 mount ./rootfs.ext4 rootfs

 

然后拷贝我们制作的文件系统到rootfs 目录下,如下图所示:

cp -r ./system/* ./rootfs

 

拷贝完成后,使用命令“umount rootfs”,进行解除挂载,如下图所示: 

13.5 屏幕校准

将上节中制作好的文件系统,替换掉image烧写目录中的roootfs.ext4然后烧写到开发板,开机启动。

进入到系统的/bin 目录可以查看到我们刚才拷贝的触摸校准程序ts_calibrate。然后输入如下命令:

ts_calibrate

即可进行校准屏幕

 

 校准后需要重启一下,使触摸数据生效。

13.6 使用制作好QtE5.12文件系统

在网盘目录“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\02_制作好的文件系统镜像”下有制作好的文件系统镜像rootfs.ext4和文件系统源码rootfs.tar.gz,如下图所示:

若是我们需要烧写,则使用该rootfs.ext4镜像替换掉image烧写目录下的rootfs.ext4,然后进行烧写工具进行烧写即可,具体的烧写过程请查看“第八章 STM32MP157烧写系统”。

若是我们想要对改文件系统进行修改,则需要将rootfs.tar.gz文件拷贝到虚拟机ubuntu上进行解压,对文件进行修改之后根据13.4“生成文件系统”小节进行烧写镜像的生成,最后根据对应的章节进行烧写。

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

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

相关文章

内网中的RDP利用

学习参考 https://www.freebuf.com/articles/network/276242.html能跟着实操的都实操一下。熟悉一些命令,过程。 实验环境:win2008,192.168.72.139 两个用户: administrator,shizuru RDP服务 确定/开启 RDP服务确…

Chainlit集成Mem0使用一个拥有个性化AI记忆的网页聊天应用

前言 Mem0 简介,可以看我上一篇文章《解决LLM的永久记忆的解决方案-Mem0实现个性化AI永久记忆功能》。本篇文章是对Mem0 实战使用的一个示例。通过Chainlit 快速实现ui界面和open ai的接入,通过使用Mem0 实现对聊天者的对话记录的记忆。 设计实现基本原…

828华为云征文|部署多媒体流媒体平台 Plex

828华为云征文|部署多媒体流媒体平台 Plex 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 性能模式1.3 计费模式 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Plex3.1 Plex 介绍3.2 Docker 环境搭建3.3 Plex 部署3.4 Plex 使…

张家辉新作《重生》内地票房逆袭

由张家辉领衔主演的电影《重生》在票房大获成功,击败多部同期中西强片,成为今年暑期档的最大黑马。张家辉在片中饰演的角色原本拥有幸福家庭,为了复仇走上亡命之徒的道路,影片中他再度展现了影帝级别的演技,受到网民和…

CCF推荐A类会议和期刊总结(计算机网络领域)- 2022

CCF推荐A类会议和期刊总结(计算机网络领域)- 2022 在中国计算机学会(CCF)的推荐体系中,A类会议和期刊代表着计算机网络领域的顶尖水平。这些会议和期刊不仅汇集了全球顶尖的研究成果,还引领着该领域的前沿发…

合碳智能 × Milvus:探索化学合成新境界——逆合成路线设计

合碳智能(C12.ai)成立于2022年,致力于运用AI和具身智能技术,为药物研发实验室提供新一代智能化解决方案,推动实验室从自动化迈向智能化,突破传统实验模式与人员的依赖,解决效率和成本的瓶颈&…

解决浏览器自动将http网址转https

删除浏览器自动使用https的方式 在浏览器地址栏输入:chrome://net-internals/#hsts PS:如果是edge浏览器可输入:edge://net-internals/#hsts 在Delete domain security policies搜索框下,输入要删除的域名,然后点击delete 解决方法&#…

回收玻璃减薄中的氢氟酸

回收玻璃减薄中的氢氟酸是一个重要的环保和资源再利用环节。在玻璃减薄过程中,氢氟酸作为主要的化学蚀刻剂,与玻璃基板表面的二氧化硅等成分发生反应,实现玻璃的减薄。然而,随着反应的进行,氢氟酸的浓度会逐渐降低&…

MyQql性能诊断与实践

获取更多免费资料,见下图

证书学习(四)X.509数字证书整理

目录 一、X.509证书 介绍1.1 什么是 X.509证书?1.2 什么是 X.509标准?1.3 什么是 PKI?二、X.509证书 工作原理2.1 PKI 的基础——加密算法2.2 PKI 证书编码三、X.509证书 结构3.1 证书字段3.2 证书扩展背景: 我们在日常的开发过程中,经常会遇到各种各样的电子证书文件,其…

新电脑Win11系统想要降级为Win10怎么操作?

前言 现在的电脑大部分都是Windows 11系统,组装机还好一些,如果想要使用Windows 10,只需要在安装系统的时候选择Windows 10镜像即可。 但是对于新笔记本、厂商的成品机、一体机来说,只要是全新的电脑,基本上都是Wind…

快速入门游戏领域,开发游戏需要哪些技术?

在这个充满创意和技术的时代,游戏行业成为众多创新人才追求梦想的热土。对于准备踏入这个充满挑战与机遇的领域的新人来说,了解游戏开发流程是至关重要的。 游戏市场蓬勃发展,游戏行业未来行情可观,在这个充满创意和技术的时代&a…

8. GIS数据分析师岗位职责、技术要求和常见面试题

本系列文章目录: 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…

vue3 前端实现pdf打印预览 printjs

在utils建print.ts文件 interface PrintFunction {extendOptions: Function;getStyle: Function;setDomHeight: Function;toPrint: Function; }const Print function (dom, options?: object): PrintFunction {options options || {};// ts-expect-errorif (!(this instanc…

电脑技巧:如何在Win11电脑上调整设置,让屏幕更加护眼?

目录 一、调整屏幕亮度 二、启用夜间模式 三、调整色彩设置 四、使用第三方护眼软件 五、保持良好的用眼习惯 总结 随着长时间使用电脑的人越来越多,护眼问题也变得越来越重要。Win11作为更新的操作系统,提供了更多的设置选项来帮助我们保护眼睛。本文将详细介绍如何在…

清华计算几何--凸Polygon的相交问题

凸Polygon和相交定义 本节只讨论凸Polygon的问题,不涉及凹Polygon. 相交包含了边相交和完全包含。 凸Polygon相交的两个问题 Detection(检测) 判断两个凸Polygon是否相交,至于相交部分是什么不关心. Construction(构造) 求出两个凸Polygon具体相交…

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时&#x…

Linux:归档及压缩

tar命令 • tar 集成备份工具 – -c:创建归档 – -x:释放归档 – -f:指定归档文件名称,必须在所有选项的最后 – -z、-j、-J:调用 .gz、.bz2、.xz 格式工具进行处理 – -t:显示归档中的文件清单 – -C:指定…

MES的“尽头”是什么?

01 MES的发展历程 要了解MES首先需要知道其发展历程。制造执行系统(MES)是随着制造业的发展逐步演变和成熟起来的。以下是MES发展的几个主要阶段: 第一阶段:数据收集与报告(1980年代 - 1990年代) 制造业…

[苍穹外卖]-05Redis快速入门

Redis入门 Redis是一个基于内存的key-value结构数据库 基于内存存储, 读写性能高适合存储热点数据(热点商品,咨询,新闻)企业应用广泛中文官网: Redis中文网英文网: https://rsdis.io 下载安装: Redis安装包分为Windows版本和Linux版本, Redis的windows版属于绿色软件, 解压后…