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

news2025/2/12 5:51:51

调试记录

文章目录

  • 调试记录
    • 进展
    • 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:4D
          inet addr:192.168.5.9  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:502 errors:0 dropped:0 overruns:0 frame:0
          TX packets:502 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX 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 1000
    link/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 aux

top

找到对应的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-tslib

make
make install

cd 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 = sublib

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

include(../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-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/

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


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.coloradmin.cn/o/2296679.html

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

相关文章

人脸识别与人脸检测技术

人脸识别技术,作为一种基于人的脸部特征信息进行身份识别的生物识别技术,近年来在人工智能和计算机视觉技术的推动下取得了显著进展。它利用摄像机或摄像头采集含有人脸的图像或视频流,自动在图像中检测和跟踪人脸,进而对检测到的人脸进行一系列计算和分别判断。这一技术不…

ansible使用学习

一、查询手册 1、官网 ansible官网地址&#xff1a;https://docs.ansible.com 模块查看路径&#xff1a;https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin 2、命令 ansible-doc -s command二、相关脚本 1、服务…

基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试

基于 PyTorch 的树叶分类任务&#xff1a;从数据准备到模型训练与测试 1. 引言 在计算机视觉领域&#xff0c;图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始&#xff0c;逐步构建模型、训练模型&#xff0c;并在测试…

【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计FIR数字滤波器可以看这里&#xff1a;利用MATLAB配合ARM-DSP库设计FIR数字滤波器&#xff08;保姆级教程&#xff09; 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner"&#xff0c;接着就会跳出以下界面&#xf…

如何在本地部署deepseek?

1、打开ollama官网&#xff0c;点download&#xff08;下载需要翻墙 https://ollama.com/ 2、双击下载好的OllamaSetup.exe&#xff0c;一直点下一步即可。 3、winR 输入cmd&#xff0c;打开命令提示符&#xff0c;输入ollama。有以下提示即安装完成。 4、可以根据 nvidia-…

AJAX项目——数据管理平台

黑马程序员视频地址&#xff1a; 黑马程序员——数据管理平台 前言 功能&#xff1a; 1.登录和权限判断 2.查看文章内容列表&#xff08;筛选&#xff0c;分页&#xff09; 3.编辑文章&#xff08;数据回显&#xff09; 4.删除文章 5.发布文章&#xff08;图片上传&#xff0…

MarsCode AI插件在IntelliJ IDEA中使用

文章目录 前言一、MarsCode是什么&#xff1f;二、下载三、使用1、登录2、操作界面3、生成代码4、解释代码5、注释代码6、生成单测7、智能修复8、代码补全 总结 前言 随着 AI 技术浪潮席卷而来&#xff0c;各类 AI 工具呈爆发式涌现&#xff0c;深度融入我们的日常与职场&…

如何将网站提交百度收录完整SEO教程

百度收录是中文网站获取流量的重要渠道。本文以我的网站&#xff0c;www.mnxz.fun&#xff08;当然现在没啥流量&#xff09; 为例&#xff0c;详细讲解从提交收录到自动化维护的全流程。 一、百度收录提交方法 1. 验证网站所有权 1、登录百度搜索资源平台 2、选择「用户中心…

C# OpenCV机器视觉:SoftNMS非极大值抑制

嘿&#xff0c;你知道吗&#xff1f;阿强最近可忙啦&#xff01;他正在处理一个超级棘手的问题呢&#xff0c;就好像在一个混乱的战场里&#xff0c;到处都是乱糟糟的候选框&#xff0c;这些候选框就像一群调皮的小精灵&#xff0c;有的重叠在一起&#xff0c;让阿强头疼不已。…

生信云服务器:让生物信息学分析更高效、更简单【附带西柚云优惠码】

随着生物信息学的快速发展&#xff0c;基因组测序、单细胞分析等复杂任务逐渐成为研究者们的日常工作。然而&#xff0c;个人电脑在处理这些任务时往往面临性能瓶颈&#xff0c;如内存不足、运算速度慢等问题&#xff0c;导致分析任务频繁失败或崩溃。为了解决这一难题&#xf…

【清晰教程】通过Docker为本地DeepSeek-r1部署WebUI界面

【清晰教程】本地部署DeepSeek-r1模型-CSDN博客 目录 安装Docker 配置&检查 Open WebUI 部署Open WebUI 安装Docker 完成本地DeepSeek-r1的部署后【清晰教程】本地部署DeepSeek-r1模型-CSDN博客&#xff0c;通过Docker为本地DeepSeek-r1部署WebUI界面。 访问Docker官…

Flink-序列化

一、概述 几乎每个Flink作业都必须在其运算符之间交换数据&#xff0c;由于这些记录不仅可以发送到同一JVM中的另一个实例&#xff0c;还可以发送到单独的进程&#xff0c;因此需要先将记录序列化为字节。类似地&#xff0c;Flink的堆外状态后端基于本地嵌入式RocksDB实例&…

快速部署 DeepSeek R1 模型

1. DeepSeek R1 模型的介绍 DeepSeek R1 模型是专为自然语言处理&#xff08;NLP&#xff09;和其他复杂任务设计的先进大规模深度学习模型 &#xff0c;其高效的架构设计是一大亮点&#xff0c;能够更高效地提取特征&#xff0c;减少冗余计算。这意味着在处理海量数据时&…

数据库系统概念第六版记录 四

1.sql组成 SQL 是最有影响力的商用市场化的关系查询语言。SQL 语言包括几个部分: 数据定义语言(DDL) &#xff0c;它提供了定义关系模式、删除关系以及修改关系模式的命令。 数据操纵语言(DML) &#xff0c;它包括查询语言&#xff0c;以及往数据库中插入元组、从数据库中删…

DeepSeek在FPGA/IC开发中的创新应用与未来潜力

随着人工智能技术的飞速发展&#xff0c;以DeepSeek为代表的大语言模型&#xff08;LLM&#xff09;正在逐步渗透到传统硬件开发领域。在FPGA&#xff08;现场可编程门阵列&#xff09;和IC&#xff08;集成电路&#xff09;开发这一技术密集型行业中&#xff0c;DeepSeek凭借其…

DeepSeek-V3 的核心技术创新

DeepSeek-V3 的核心技术创新 flyfish DeepSeek-V3 的核心技术创新主要体现在其架构设计和训练目标上&#xff0c;通过 多头潜在注意力&#xff08;MLA&#xff09;、DeepSeekMoE 架构、无辅助损失的负载均衡策略 和 多 Token 预测训练目标&#xff08;MTP&#xff09; 1. 多…

【Elasticsearch】监控与管理:集群监控指标

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

鸿蒙接入支付宝SDK后模拟器无法运行,报错error: install parse native so failed.

鸿蒙项目接入支付宝后&#xff0c;运行提示error: install parse native so failed. 该问题可能由于设备支持的 Abi 类型与 C 工程中的不匹配导致. 官网error: install parse native so failed.错误解决办法 根据官网提示在模块build-profile.json5中添加“x86_64”依然报错 问…

react redux用法学习

参考资料&#xff1a; https://www.bilibili.com/video/BV1ZB4y1Z7o8 https://cn.redux.js.org/tutorials/essentials/part-5-async-logic AI工具&#xff1a;deepseek&#xff0c;通义灵码 第一天 安装相关依赖&#xff1a; 使用redux的中间件&#xff1a; npm i react-redu…

【Matlab优化算法-第13期】基于多目标优化算法的水库流量调度

一、前言 水库流量优化是水资源管理中的一个重要环节&#xff0c;通过合理调度水库流量&#xff0c;可以有效平衡防洪、发电和水资源利用等多方面的需求。本文将介绍一个水库流量优化模型&#xff0c;包括其约束条件、目标函数以及应用场景。 二、模型概述 水库流量优化模型…