百問網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.pswp.cn/news/895272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開發中用到的設計模式

目錄 開發中用到的設計模式 工廠模式 設計理念 好處 體現的編程思想 適配器模式 概念 策略模式和適配器模式的區別 選擇策略模式而非適配器模式的原因 設計模式的開發原則 開發中用到的設計模式 在開發過程中&#xff0c;常見的設計模式會根據不同的業務場景和需求被…

1064 - You have an error in your SQL syntax;

在創建數據庫表建立外鍵是遇到了如下報錯 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near position(position_id) ) at line 8 數據庫表sql如下&#xff1a; --職位表 CR…

無人機 ,遙控器與接收機之前的通信

目錄 1、信號類型 2、工作頻率 3、通信協議 3.1、PPM 協議 3.2、SBUS 協議 3.3、CRSF 協議 無人機的遙控器和接收機之間常用的信號、頻率、協議等相關信息如下&#xff1a; 1、信號類型 模擬信號 特點&#xff1a;信號的幅度、頻率或相位等參數是連續變化的&#xff0c…

【c++】四種類型轉換形式

【c】四種類型轉換形式 編譯時: static_cast&#xff08;靜態轉換&#xff09; const_cast&#xff08;去常性轉換&#xff09; reinterpret_cast&#xff08;重新解釋轉換&#xff0c;直接轉換地址&#xff09; 運行時: dynamic_cast&#xff08;動態轉換&#xff0c;運行時類…

Cisco ASR1002查看資源占用的幾條命令

查看平臺資源 show platform resource 該命令用于顯示整個平臺的資源使用情況&#xff0c;包括 CPU、內存等 example: ASR1002# show platform resources **State Acronym: H - Healthy, W - Warning, C - Critical Resource…

Day 1:認知革命與DeepSeek生態定位

目標&#xff1a;建立對大模型技術范式的系統性認知&#xff0c;掌握DeepSeek的核心技術特性與生態價值 一、大模型技術演進&#xff1a;從GPT到DeepSeek 1.1 技術發展里程碑 2017-Transformer突破&#xff1a;Self-Attention機制如何突破RNN的序列建模瓶頸 2018-GPT初代&…

Python自動化辦公之Excel拆分

在日常辦公中&#xff0c;我們經常需要將包含多個Sheet頁的Excel文件拆分成多個獨立的Excel文件。例如&#xff0c;在發送Excel表給各部門確認時&#xff0c;出于控制知悉范圍最小等保密性考慮&#xff0c;每個部門只需要查看和確認自己部門對應的Sheet頁。手動拆分Excel文件非…

【CXX-Qt】1.1 Rust中的QObjects

本文涉及到了使用CXX-Qt將Rust、C和QML集成到Qt應用程序中的各個方面。下面&#xff0c;我將提供一個簡單的示例&#xff0c;演示如何使用CXX-Qt來創建一個Rust結構體并將其作為QObject子類暴露給C和QML。 一、設置CXX-Qt環境 首先&#xff0c;確保您已經安裝了Rust、CXX和CX…

Conda命令整理

Conda 是一個功能強大的包和環境管理工具&#xff0c;廣泛用于 Python 開發中。除了基本的包和環境管理功能外&#xff0c;Conda 還提供了許多高級用法和技巧&#xff0c;幫助用戶更高效地管理和維護 Python 環境。 1. 管理 Conda 本身 命令描述示例conda --version查看 Cond…

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&…

研發管理知識

定義 研發管理是對研發活動進行有效的計劃、組織、領導和控制的過程&#xff0c;旨在通過合理配置資源、協調團隊工作、監控項目進度和質量等&#xff0c;確保研發項目能夠按時、按質、按量完成&#xff0c;實現企業的技術創新和產品升級目標&#xff0c;增強企業的核心競爭力。…

HarmonyOS 5.0應用開發——全局自定義彈出框openCustomDialog

【高心星出品】 文章目錄 全局自定義彈出框openCustomDialog案例開發步驟完整代碼 全局自定義彈出框openCustomDialog CustomDialog是自定義彈出框&#xff0c;可用于廣告、中獎、警告、軟件更新等與用戶交互響應操作。開發者可以通過CustomDialogController類顯示自定義彈出框…

AOS安裝及操作演示

文章目錄 一、安裝node1.1 在 macOS 上管理 Node版本1.1.1 安裝 nvm1.1.2 驗證 nvm 是否安裝成功1.1.3 使用 nvm 安裝/切換 Node.js 版本1.1.4 卸載 Node.js 版本 1.2 在 windows 上管理 Node版本1.2.1 安裝 nvm-windows1.2.2 安裝 Node.js 版本1.2.3 切換 Node.js 版本1.2.4 卸…

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…

CSS 性能優化全攻略:提升網站加載速度與流暢度

系列文章目錄 01-從零開始學CSS選擇器&#xff1a;屬性選擇器與偽類選擇器完全指南 02-避免樣式沖突&#xff1a;掌握CSS選擇器優先級與層疊規則的終極指南 03-如何精確掌控網頁布局&#xff1f;深入解析 CSS 樣式與盒模型 04-CSS 布局全面解析&#xff1a;從傳統浮動到現代 F…