百问网imx6ullpro调试记录(linux+qt)

调试记录

文章目录

  • 调试记录
    • 进展
    • 1.开发板相关
      • 1.1百问网乌班图
        • 密码
      • 1.2 换设备开发环境搭建
        • 串口调试
        • 网络互通
        • nfs文件系统挂载
      • 1.3网络问题
      • 1.4系统启动
      • 1.5进程操作
    • 2.QT
      • 2.1tslib
        • 1.获取源码
        • 2.安装依赖文件
        • 3.编译
      • 2.2qt移植
        • 1.获取qt源码
        • 2.配置编译器
        • 3.编译
      • 2.3拷贝到开发板
        • 1.拷贝
        • 2.修改开发板配置文件
          • qt
          • tslib
        • 3.验证是否生效
      • 2.4安装Qt Creator
        • 1.获取安装包
        • 2.执行安装程序
        • 3.删除版本不对的IDE(选做)
        • 4.配置qtIDE环境
      • 2.5移除自带qtgui
      • 2.6添加字库
        • 1.本地字库
        • 2.中文乱码问题
      • 2.7运行qt程序
    • 3.QT编程
      • 3.1窗口大小

进展

下一步,qt实现一个自制工具程序自定义标题栏实现Qicon  涉及到的控件笔记,然后使用component组件框架重新整合两个驱动程序调试验证,测试c和c++混合编程,将摄像头模块添加进去几个重要模块优先调试: eeprom  DMA  iic相关

环境

开发板: 百问网imx6ullpro

1.开发板相关

1.1百问网乌班图

密码
book: 123456

1.2 换设备开发环境搭建

串口调试
黑色的usb+typec串口线插拔前后注意设备管理器中端口的变化,新增端口即为要使用的端口
注意:找到端口后需要连接数据线然后重启开发板,这样串口才会正常打印调试
网络互通

看指导手册配置下面内容

学习笔记——韦东山Imx6ul pro环境搭建_韦东山repo-CSDN博客

保证开发板 windows 虚拟机在同一网段
开发板 192.168.5.9
windows 192.168.5.10
虚拟机 192.168.5.11
配置完成后测试
三者互ping正常即可,另虚拟机需要ping 外网保证正常上网
nfs文件系统挂载
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt && cd /mnt

1.3网络问题

nfs网络失效,调试过程

日志查看网络报错
[root@imx6ull:/etc/network]# dmesg | grep -i eth
[    2.331430] 20b4000.ethernet supply phy not found, using dummy regulator
[    2.411339] fec 20b4000.ethernet eth0: registered PHC device 0
[    2.418876] 2188000.ethernet supply phy not found, using dummy regulator
[    2.483570] fec 2188000.ethernet eth1: registered PHC device 1
[    2.550222] usbcore: registered new interface driver cdc_ether
[    3.842954] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   67.458100] Generic PHY 20b4000.ethernet-1:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=20b4000.ethernet-1:01, irq=-1)
[   67.470533] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[root@imx6ull:/etc/network]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:01:3F:2D:3E:4Dinet addr:192.168.5.9  Bcast:0.0.0.0  Mask:255.255.255.0UP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)lo        Link encap:Local Loopbackinet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:502 errors:0 dropped:0 overruns:0 frame:0TX packets:502 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1RX bytes:37456 (36.5 KiB)  TX bytes:37456 (36.5 KiB)
网络接口没有连接到物理网络
[root@imx6ull:/etc/network]# ip link show eth0
3: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:01:3f:2d:3e:4d brd ff:ff:ff:ff:ff:ff

总结:

网络连接问题:
网线下方闪烁灯不闪烁,说明硬件连接有问题,需要调整
调整好的软件log打印:
[root@imx6ull:/etc/network]# [  801.735462] fec 20b4000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[  801.746055] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

1.4系统启动

启动动画相关:

探究IMX6ULL启动原理并学会优雅关闭GUI和启动动画(适用韦东山、正点原子、野火)_正点原子imx6出厂开机动画-CSDN博客

1.5进程操作

查看进程

ps auxtop找到对应的pid号kill pid号     ----------停掉该进程kill -9 pid号  ----------强制停掉

2.QT

移植参考:QT移植到imx6ull ARM板子上面_qml移植到arm-CSDN博客

2.1tslib

tslib是触控相关的
1.获取源码

链接: https://pan.baidu.com/s/1YQ3QKRJiZajrYvvD_ODBIA 提取码: eiq7

这里面都有
2.安装依赖文件
sudo apt-get install autoconf 
sudo apt-get install automake 
sudo apt-get install libtool 
3.编译
/home/book/temp/Qt/tslib-1.21
./configure --host=arm-buildroot-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-buildroot-linux-gnueabihf.cache -prefix=/home/book/temp/Qt/tslib-1.21/arm-tslibmake
make installcd arm-tslib/
file bin/ts_calibrate
tslib编译输出路径/home/book/temp/Qt/tslib-1.21/arm-tslib

2.2qt移植

1.获取qt源码

Index of / (qt.io)

编写代码的版本和移植时的版本要一致
2.配置编译器

在这里插入图片描述

#
# qmake configuration for building with arm-linux-gnueabi-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibQT_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=hardinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
QMAKE_CC                = arm-buildroot-linux-gnueabihf-gcc
QMAKE_CXX               = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK              = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-buildroot-linux-gnueabihf-g++# modifications to linux.conf
QMAKE_AR                = arm-buildroot-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-buildroot-linux-gnueabihf-objcopy
QMAKE_NM                = arm-buildroot-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-buildroot-linux-gnueabihf-strip
load(qt_config)
主要修改编译器名字就行,其他的除非使用的板子差异很大不是ARMV7的要改一下
3.编译

编译配置脚本

这是我的qt源码路径:
/home/book/temp/Qt/qt-everywhere-src-5.12.9
tslib源码路径:/home/book/temp/Qt/tslib-1.21
./configure -prefix /home/book/temp/Qt/qt-everywhere-src-5.12.9/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/book/temp/Qt/tslib-1.21/arm-tslib/include \
-L/home/book/temp/Qt/tslib-1.21/arm-tslib/lib \
-recheck-all

编译

make -j16
注意:之前编译过的这里可能会出错,需要make clean清除中间文件后再make

安装

make install

2.3拷贝到开发板

编译生成的arm平台qt环境目录:arm-qt
编译生成的arm平台tslib环境目录:tslib-arm

准备工作:

确保虚拟机和开发板可以通过nfs互传文件
或者使用u盘之类的去拷贝也行,我没搞,不介绍
1.拷贝
将生成的文件拷贝到nfs文件目录下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将开发板/mnt下的arm-qt 和 arm-tslib文件复制到 /usr/lib下面cp -r arm-tslib/ /usr/lib/
cp -r arm-qt/ /usr/lib/
2.修改开发板配置文件
qt
配置开发板qt的环境变量: vi /etc/profile
export QT_ROOT=/usr/lib/arm-qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event4
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1
保存,执行source /etc/profile 
使其生效
tslib
vi /etc/profile
export TSLIB_ROOT=/usr/lib/arm-tslib 
export TSLIB_CONSOLEDEVICE=none 
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_TSDEVICE=/dev/input/event1 
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf 
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts 
export  LD_PRELOAD=$TSLIB_ROOT/lib/libts.so
电阻屏请加上
export TSLIB_CALIBFILE=/etc/pointercal 
3.验证是否生效

qt测试

cd /usr/lib/arm-qt/examples/widgets/animation/animatedtiles
./animatedtiles

tslib测试

cd /usr/lib/arm-tslib/bin
./ts_test

ok,移植成功

2.4安装Qt Creator

1.获取安装包

安装包:

链接: https://pan.baidu.com/s/1YQ3QKRJiZajrYvvD_ODBIA 提取码: eiq7

拷贝到虚拟机中

2.执行安装程序
chmod u+x qt-opensource-linux-x64-5.12.9.run 
sudo ./qt-opensource-linux-x64-5.12.9.run // 建议加sudo,否则安装在当前目录下。

按照指引安装就好,一般都是默认,第一次安装的话,建议搜个博客

3.删除版本不对的IDE(选做)
找到安装目录删除就是
4.配置qtIDE环境

配置编译器

Arm-GCC
这个是我的开发板用的编译器
gcc:
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-gcc
g++:
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-g++
正点原子教程里面的编译器,搞混会导致编译出错
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

配置qmake

按照上面给的那个博客搞就好了,这里不写了,不做重复工作

2.5移除自带qtgui

启动动画相关:

探究IMX6ULL启动原理并学会优雅关闭GUI和启动动画(适用韦东山、正点原子、野火)_正点原子imx6出厂开机动画-CSDN博客

把启动目录里面文件换地方

mv /etc/init.d/S99myirhmi2 /root &&reboot
建议备份

恢复

mv /root/S99myirhmi2 /etc/init.d &&reboot

2.6添加字库

1.本地字库
C:\Windows\Fonts

将字库文件cp到nfs目录

再cp到 /usr/share/fonts注意:使用中文的话,建议找一个支持中文的字库文件进行拷贝
2.中文乱码问题
main函数中添加头文件
#include <QTextCodec>QTextCodec *codec = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForLocale(codec);忽略不计,试过了不生效

2.7运行qt程序

点击构建
在对应的构建目录下有生成的arm程序
cp到nfs目录中
./执行
cd /home/book/QT/projects/build-button_test-Arm_Qt5_12_9-Debugcp button_test ~/nfs_rootfs/cd /home/book/QT/projects/build-work_tools-Arm_Qt5_12_9-Debugcp /home/book/QT/projects/build-work_tools-Arm_Qt5_12_9-Debug/work_tools ~/nfs_rootfs/目前问题:最大最小功能无法使用

3.QT编程

3.1窗口大小

窗口完全适应不同的屏幕大小

#include <QGuiApplication>
#include <QScreen>QList <QScreen *> list_screen =  QGuiApplication::screens();/* 重设大小 */this->resize(list_screen.at(0)->geometry().width(),list_screen.at(0)->geometry().height());

./执行


cd /home/book/QT/projects/build-button_test-Arm_Qt5_12_9-Debug

cp button_test ~/nfs_rootfs/

cd /home/book/QT/projects/build-work_tools-Arm_Qt5_12_9-Debug

cp /home/book/QT/projects/build-work_tools-Arm_Qt5_12_9-Debug/work_tools ~/nfs_rootfs/

目前问题:最大最小功能无法使用

暂不更新,后续使用qml做界面了

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

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

相关文章

C++模拟实现AVL树

目录 1.文章概括 2.AVL树概念 3.AVL树的性质 4.AVL树的插入 5.旋转控制 1.左单旋 2. 右单旋 3.左右双旋 4.右左双旋 6.全部代码 1.文章概括 本文适合理解平衡二叉树的读者阅读&#xff0c;因为AVL树是平衡二叉树的一种优化&#xff0c;其大部分实现逻辑与平衡二叉树是…

opc da 服务器数据 转 EtherCAT项目案例

目录 1 案例说明 2 VFBOX网关工作原理 3 应用条件 4 查看OPC DA服务器的相关参数 5 配置网关采集opc da数据 6 启动EtherCAT从站转发采集的数据 7 在服务器上运行仰科OPC DA采集软件 8 案例总结 1 案例说明 在OPC DA服务器上运行OPC DA client软件查看OPC DA服务器的相…

实验9 基于WebGoat平台的SQL注入攻击

实验9 基于WebGoat平台的SQL注入攻击 1.实验目的 熟悉WebGoat平台&#xff0c;在该平台上实现SQL注入攻击。 2.实验内容 &#xff08;1&#xff09;下载webgoat-server-8.2.2.jar。 &#xff08;2&#xff09;搭建java环境。 &#xff08;3&#xff09;运行webgoat。 &#xf…

StochSync:可在任意空间中生成360°全景图和3D网格纹理

StochSync方法可以用于在任意空间中生成图像&#xff0c;尤其是360全景图和3D网格纹理。该方法利用了预训练的图像扩散模型&#xff0c;以实现零-shot生成&#xff0c;消除了对新数据收集和单独训练生成模型的需求。StochSync 结合了 Diffusion Synchronization&#xff08;DS&…

HarmonyOS 5.0应用开发——全局自定义弹出框openCustomDialog

【高心星出品】 文章目录 全局自定义弹出框openCustomDialog案例开发步骤完整代码 全局自定义弹出框openCustomDialog CustomDialog是自定义弹出框&#xff0c;可用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹出框…

DeepSeek模型R1服务器繁忙,怎么解决?

在当今科技飞速发展的时代&#xff0c;人工智能领域不断涌现出令人瞩目的创新成果&#xff0c;其中DeepSeek模型无疑成为了众多关注焦点。它凭借着先进的技术和卓越的性能&#xff0c;在行业内掀起了一股热潮&#xff0c;吸引了无数目光。然而&#xff0c;如同许多前沿技术在发…

AIGC-微头条爆款文案创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列AIGC(GPT、DeepSeek、豆包、千问、Kimi)👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资…

[LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别

一、提示调整(Prompt Tuning) Prompt Tuning是一种通过改变输入提示语&#xff08;input prompt&#xff09;以获得更优模型效果的技术。举个例子&#xff0c;如果我们想将一条英语句子翻译成德语&#xff0c;可以采用多种不同的方式向模型提问&#xff0c;如下图所示&#xf…

自主项目面试点总结

1、许苑–OJ判题系统 技术栈&#xff1a;Spring BootSpring Cloud AlibabaRedisMybatisMQDocker 项目地址: https://github.com/xuyuan-upward/xyoj-backend-microservice 1.1、项目介绍: 一个基于微服务的OJ系统&#xff0c;具备能够根据管理员预设的题目用例对用户提交的代…

【py】python安装教程(Windows系统,python3.13.2版本为例)

1.下载地址 官网&#xff1a;https://www.python.org/ 官网下载地址&#xff1a;https://www.python.org/downloads/ 2.64版本或者32位选择 【Stable Releases】&#xff1a;稳定发布版本&#xff0c;指的是已经测试过的版本&#xff0c;相对稳定。 【Pre-releases】&#…

CEF132 编译指南 MacOS 篇 - depot_tools 安装与配置 (四)

1. 引言 在 CEF132&#xff08;Chromium Embedded Framework&#xff09;的编译过程中&#xff0c;depot_tools 扮演着举足轻重的角色。这套由 Chromium 项目精心打造的脚本和工具集&#xff0c;专门用于获取、管理和更新 Chromium 及其相关项目&#xff08;包括 CEF&#xff…

1312:【例3.4】昆虫繁殖

1312&#xff1a;【例3.4】昆虫繁殖 时间限制: 1000 ms 内存限制: 65536 KB 提交数:60386 通过数: 29787 【题目描述】 科学家在热带森林中发现了一种特殊的昆虫&#xff0c;这种昆虫的繁殖能力很强。每对成虫过xx个月产yy对卵&#xff0c;每对卵要过两个月长成成虫…

单片机上SPI和IIC的区别

SPI&#xff08;Serial Peripheral Interface&#xff09;和IC&#xff08;Inter-Integrated Circuit&#xff09;是两种常用的嵌入式外设通信协议&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的详细对比&#xff1a; — 1. 基本概念 SPI&#xff0…

SQL Server安装流程

SQL Server 2022在安全性、可用性和性能方面不断创新&#xff0c;是现在最支持Azure的SQL Server版本。 SQL Server发展史 SQL Server的历史始于1989年&#xff0c;当时是由微软与Sybase合作的产品&#xff0c;旨在为Windows NT操作系统提供一个高性能的数据库解决方案。随着…

从零开始认识大语言模型(LLM)

“AI小美好——聚焦科技、商业、职场。前沿资讯&#xff0c;实用干货&#xff0c;邂逅更美好的自己&#xff01;” 在当今数字化时代&#xff0c;语言不仅是人类交流的工具&#xff0c;更是信息传递的核心。随着人工智能技术的飞速发展&#xff0c;大语言模型逐渐走进了我们的…

安装OpenJDK21(linux、macos)

文章目录 安装OpenJDK21java21linux下安装配置mac下安装 安装OpenJDK21 java21 封神&#xff01;Java 21正式发布了&#xff0c;迎来了史诗级新特性&#xff0c;堪称版本最强&#xff01;&#xff01;&#xff01; 视频链接&#xff1a;https://www.bilibili.com/video/BV1E8…

基于Java的自助多张图片合成拼接实战

目录 前言 一、图片合成需求描述 二、图片合成设计与实现 1、编程语言 2、基础数据准备 3、图片合成流程 4、图片合成实现 三、总结 前言 在当今数字化时代&#xff0c;图像处理技术在各个领域都发挥着至关重要的作用。从社交媒体到电子商务&#xff0c;从在线教育到虚拟…

计算机网络结课设计:通过思科Cisco进行中小型校园网搭建

上学期计算机网络课程的结课设计是使用思科模拟器搭建一个中小型校园网&#xff0c;当时花了几天时间查阅相关博客总算是做出来了&#xff0c;在验收后一直没管&#xff0c;在寒假想起来了简单分享一下&#xff0c;希望可以给有需求的小伙伴一些帮助 目录 一、设计要求 二、…

在npm上传属于自己的包

最近在整理代码&#xff0c;上传到npm方便使用&#xff0c;所以学习了如何在npm发布一个包&#xff0c;整理写成一篇文章和大家一起交流。 1、注册npm账号 npm | Home 2、确保是登录状态 &#xff08;在包目录下&#xff0c;终端执行 npm login) 按enter键自动打开页面&…

物联网(IoT)详解

物联网&#xff08;IoT&#xff09;详解 1. IoT定义简介2. IoT工作原理3. IoT关键技术4. 物联网与互联网区别5. IoT使用场景6. 开源物联网平台7. 参考资料 1. IoT定义简介 首先第一个问题&#xff0c;什么是物联网&#xff08;IoT&#xff09;? 物联网&#xff08;英文&#…