当前位置: 首页 > article >正文

Qt 相关 编译流程及交叉编译 部署所遇到的问题总结-持续更新

准备环境和工具

1、主机环境 ubuntu20
2、交叉编译器 gcc-linaro-6.3.1…arm-linux-gnuebihf
3、QT5源码包qt-5.11.3_sources
下载qt-5.11.3的包,自己想办法下载 网盘啥的 都ok,再访问下载目录就可以显示了。
Index of /archive/qt
4、依赖库安装

   sudo apt install g++ make qt3d5-dev-tools -ysudo apt install qml-module-qtquick-xmllistmodel -ysudo apt install qml-module-qtquick-virtualkeyboard qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs qml -ysudo apt install libqt53dquickscene2d5 libqt53dquickrender5 libqt53dquickinput5 libqt53dquickextras5 libqt53dquickanimation5 libqt53dquick5 -ysudo apt install qtdeclarative5-dev qml-module-qtwebengine qml-module-qtwebchannel qml-module-qtmultimedia qml-module-qtaudioengine -y

5、解包交叉编译器和qt源码

tar -xvf gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar

可以选择将gcc编译器,移动到opt目录下

tar -xvf qt-everywhere-src-5.11.3.tar.xz
cd qt-everywhere-src-5.11.3

5、修改qmake.conf
路径: qt-everywhere-src-5.11.3/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

这里需要先配置下交叉变异工具路径 本机qt程序编译也会调用

#
# qmake configuration for building with arm-linux-gnueabi-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
#交叉编译工具 带有-lts的会编译失败不知道为什么
#QMAKE_CC                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc -lts
#QMAKE_CXX               = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts
#QMAKE_LINK              = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts
#QMAKE_LINK_SHLIB        = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -ltsQMAKE_CC                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc 
QMAKE_CXX               = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ 
QMAKE_LINK              = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ 
QMAKE_LINK_SHLIB        = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ # modifications to linux.conf
#交叉编译工具
QMAKE_AR                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-strip
load(qt_config)#tslib路径(交叉编译库)
QMAKE_INCDIR=/opt/tslib-1.21/include
QMAKE_LIBDIR=/opt/tslib-1.21/lib

6、configure配置脚本文件

为了防止代码污染,可以先新建一个build目录

mkdir build && cd build  (特别说明 这个build 目录 不能在qt 源代码目录下,默认编译仅支持顶级编译,可以在其他目录 脱离qt源码目录随便创建一个文件夹编译)
#!/bin/sh
../configure \
-prefix /opt/rk3288/qt-5.11.3/ \
-xplatform linux-arm-gnueabi-g++ \
-gui \
-widgets \
-release \
-opensource \
-confirm-license \
-no-openssl \
-no-opengl \
-skip qtdeclarative #这行是可选的,加上会不编译qml quick模块,需要就删掉这一行

7、特别说下 -skip qtdeclarative这一条,名字很坑完全看不出和quick有什么关系,网上很多都说编译会报错就加上这个,也可能是因为用不到quick为了缩小体积,很多配置文件都把这个给加上了,但是这个是qml quick模块,需要这部分功能的一定不要加,而且我这边编译也没报错。
8、build (-j8 8指的是cpu核心数)

make -j8 
sudo make -j8 install

9、编译报错处理
1),error1 :qt-everywhere-src-5.11.3/qtbase/src/corelib/global/qrandom.cpp:455:62: error: no matching function for call to ‘std::mersenne_twister_engine

方法:在qrandom.cpp 的219行,增加一条定义
typedef quint32 result_type;

qsizetype fillBuffer(void *, qsizetype) Q_DECL_NOTHROW{// always use the fallbackreturn 0;}
#endif // Q_OS_WINRTtypedef quint32 result_type;static SystemGenerator &self();void generate(quint32 *begin, quint32 *end) Q_DECL_NOEXCEPT_EXPR(FillBufferNoexcept);

2),error: ‘SIOCGSTAMP’ undeclared (first use in this function); did you mean ‘SIOCGARP’?
解决:找到socketcanbackend.cpp并打开,添加头文件
#include <linux/sockios.h>
即可解决问题
3),python: not found
解决:在终端输入命令
sudo ln -s /usr/bin/python3 /usr/bin/python 将Python和Python3 连接到一起
4),缺少 libxcb*
解决:sudo apt-get install libxcb*

备注:

ubuntu20的 系统vi编辑器过老,需要升级下
1、打开终端。
2、更新软件包列表:

sudo apt-get update  

3、安装或更新 vim:

sudo apt-get install --only-upgrade vim

或者直接升级所有软件包:

sudo apt-get upgrade vim

如果系统提示需要升级,输入 Y 确认。

admin1@admin:/opt/gcc-arm-linux-gnueabihf-8.3.0/bin$ find "$(pwd)" -maxdepth 1
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-addr2line
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/runtest
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gdb
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-c++filt
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-strip
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-c++
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-elfedit
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-readelf
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gprof
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-strings
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ld.gold
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcov
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ld
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc-6.3.1
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-size
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcov-tool
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-objdump
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-dwp
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-as
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc-ar
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ld.bfd
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/gdbserver
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ar
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ranlib
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-nm
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-objcopy
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-cpp
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc-nm
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc-ranlib
/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gfortran
下方为编译qt开发工具
../configure \
-prefix /opt/qt-5.11.3/ \
-gui \
-widgets \
-release \
-opensource \
-confirm-license \
-no-openssl \
-no-opengl

之后

make -j8 
sudo make -j8 install

上述编译完成之后

sudo apt install qtcreator

问题

可能遇到的问题
ubuntu安装qt时编译出现cstddef:50:10: fatal error: ‘stddef.h’ file not found
sudo apt-get install libclang-common-8-dev
,这条命令完美解决

补充 :

设置文件权限
sudo chmod -R 777 /home/
更改用户组权限
sudo chown admin1:admin1 /home

MAC M2下

当出现 版本不匹配 这样做

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.15CONFIG+=sdk_no_version_check   

如果 报错 不影响运行 可以关闭插件中

ClangCodeModel

这个配置是基于 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf
#
# qmake configuration for building with arm-linux-gnueabi-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
QMAKE_CC                = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-gcc
QMAKE_CXX               = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-g++
QMAKE_LINK              = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-g++QMAKE_CC                = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-gcc
QMAKE_CXX               = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-g++
QMAKE_LINK              = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-g++# modifications to linux.conf
QMAKE_AR                = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-strip
load(qt_config)

推荐几个主流 Linaro 工具链版本选择参考
Linaro 工具链版本GCC 版本对应 glibc 范围使用场景
6.3.1-2017.026.3.1glibc 2.23嵌入式 Linux 4.x 常见
7.5.0-2019.127.5.0glibc 2.27~2.28ARMv7 硬浮点常见
8.3.0-2019.038.3.0glibc 2.28~2.29新平台(如 RK3399)
aarch64-linux-gnu-9.x9.xglibc 2.31+64 位 ARM(Cortex-A72)

当嵌入式linux内置qt版本与开发机器编译版本不一致

  • 本机编译机器运行正常,但部署远端会发生异常
    处理
    在远端嵌入式linux机器上进入
/usr/lib/arm-linux-gnueabihf/qt5/qml/QtQuick/Controls.2

嵌入式linux机器qt相关东西一般在这里
随意打开一个 例如 menu.qml vi 编辑后查看内部 import 的相关版本

  • 此相关问题 导致的原因在于本地编译qt库与远端设备不同步导致的
  • 我是这么确定版本的,那位有更好的方式,可以评论分享下

注意

qt 库编译 - 路径禁止包含中文 --卡了一段时间没想到是因为这个

当开发机器选择远端编译环境运行部署的时候如果提示

qt.qpa.screen: QXcbConnection: Could not connect to display :0
Could not connect to any X display.
  • 1、先确认远端是否有
echo $DISPLAY    # 如果有输出则说明有图形界面

若上述条件满足 则直接登陆远端设备 直接执行下方指令

  • 临时放开所有本地用户的访问权限(不安全,只用于调试):
xhost +local:   

或者执行

  • (注意:这会放开所有访问权限,不建议在公共或生产环境使用)
xhost +    

成功再次编译项目运行到远端

2025-5-29 新增

  • 补充 远端登陆设置或许会失败,我是直接在远端机器上执行了( 接上边 xhost 执行结果)

调整设备方向 - 临时生效

xrandr -o normal   # 正常显示(默认)
xrandr -o left     # 逆时针旋转 90 度
xrandr -o right    # 顺时针旋转 90 度
xrandr -o inverted # 180 度旋转(上下颠倒)
含义
0正常方向
1顺时针旋转 90°
2旋转 180°
3逆时针旋转 90°

查看屏幕旋转方向
cat /sys/class/graphics/fb0/rotate

依次设置

1 就是上边的值echo 1 | sudo tee /sys/class/graphics/fb0/rotate  运行机器黑屏了

此方案 部分机器不兼容 设置后 屏幕黑屏 比如我这边的 因此暂时用的是临时生效方案

  • 如何让设备永久生效的方法 我还没找到 ,有那位大佬知道的 麻烦评论下

Qt串口

.pro 文件 QT+= serialport 追加上
大概长下边这个样子

QT += quick serialport
  • 新建串口管理类
    SerialManager.h
#ifndef SERIALMANAGER_H
#define SERIALMANAGER_H#include <QObject>
#include <QSerialPort>
#include <QSerialPortInfo>class SerialManager : public QObject {Q_OBJECTQ_PROPERTY(QString receivedData READ receivedData NOTIFY receivedDataChanged)public:explicit SerialManager(QObject *parent = nullptr);~SerialManager();Q_INVOKABLE QStringList availablePorts();Q_INVOKABLE bool openPort(const QString &portName, int baudRate);Q_INVOKABLE void sendData(const QString &data);Q_INVOKABLE void sendHexData(const QString &hexString);Q_INVOKABLE void closePort();QString receivedData() const;Q_INVOKABLE void clearReceivedData();signals:void receivedDataChanged();private slots:void handleReadyRead();private:QSerialPort *serial;QString m_receivedData;
};#endif // SERIALMANAGER_H

.cpp

#include "serialmanager.h"
#include <QDebug>
#include <QSerialPortInfo>
#include <QRegularExpression>SerialManager::SerialManager(QObject *parent): QObject(parent), serial(new QSerialPort(this)) {connect(serial, &QSerialPort::readyRead, this, &SerialManager::handleReadyRead);
}SerialManager::~SerialManager() {closePort();
}QStringList SerialManager::availablePorts() {QStringList list;for (const QSerialPortInfo &info : QSerialPortInfo::availablePorts()) {list << info.portName(); // 示例:ttyUSB0、ttyXRUSB1 等}return list;
}bool SerialManager::openPort(const QString &portName, int baudRate) {if (serial->isOpen())serial->close();QString fullName = portName;if (!portName.startsWith("/dev/"))fullName = "/dev/" + portName;serial->setPortName(fullName);bool okRate = serial->setBaudRate(baudRate);qDebug() << "[串口] 设置波特率结果:" << okRate;serial->setDataBits(QSerialPort::Data8);serial->setParity(QSerialPort::NoParity);serial->setStopBits(QSerialPort::OneStop);serial->setFlowControl(QSerialPort::NoFlowControl);bool success = serial->open(QIODevice::ReadWrite);if (success) {qDebug() << "[串口] 打开成功:" << fullName << "波特率:" << baudRate;} else {qWarning() << "[串口] 打开失败:" << fullName << serial->errorString();}return success;
}void SerialManager::sendData(const QString &data) {if (serial->isOpen()) {QByteArray sendBytes = data.toUtf8();serial->write(sendBytes);qDebug() << "[串口] 发送数据:" << sendBytes.toHex(' ').toUpper();} else {qWarning() << "[串口] 发送失败,串口未打开";}
}
void SerialManager::sendHexData(const QString &hexString) {if (!serial->isOpen()) {qWarning() << "[串口] 串口未打开,无法发送";return;}QString cleaned = hexString;cleaned.remove(QRegularExpression("[\\s:]")); // 去掉空格、冒号等QByteArray bytes;for (int i = 0; i < cleaned.length(); i += 2) {QString byteStr = cleaned.mid(i, 2);bool ok;char byte = byteStr.toUInt(&ok, 16);if (ok) {bytes.append(byte);} else {qWarning() << "[串口] 无效HEX:" << byteStr;}}// 计算异或校验值char xorChecksum = 0;for (char b : bytes) {xorChecksum ^= b;}bytes.append(xorChecksum); // 添加校验值serial->write(bytes);qDebug() << "[串口] 发送HEX:" << bytes.toHex(' ').toUpper();
}void SerialManager::closePort() {if (serial->isOpen()) {serial->close();qDebug() << "[串口] 已关闭";}
}void SerialManager::handleReadyRead() {
//    QByteArray buffer = serial->readAll();
//    m_receivedData += QString::fromUtf8(buffer); // 累加缓存
//    qDebug() << "[串口] 收到数据:" << buffer.toHex(' ').toUpper();
//    emit receivedDataChanged();QByteArray raw = serial->readAll();m_receivedData += QString::fromUtf8(raw.toHex(' ').toUpper());emit receivedDataChanged();qDebug() << "[串口] 收到数据 HEX:" << raw.toHex(' ').toUpper();
}QString SerialManager::receivedData() const {return m_receivedData;
}void SerialManager::clearReceivedData(){SerialManager::m_receivedData.clear();
}

代码处理完成后
main.cpp 先导包

#include "serialmanager.h"

然后 main 方法里 - 这个位置应该是有要求的 似乎要注册在 QQmlApplicationEngine engine后,至于为啥,暂时我还不知道 看样子 跟什么引擎加载执行顺序有点关系,不大懂

SerialManager serial;
engine.rootContext()->setContextProperty("SerialManager", &serial);

查询系统版本

市面上常用的一般 rk3288 3399 3568 等 使用一些三方sdk时候对系统版本可能会有一定要求 因此

  • 注意 这个东西 其实就跟检查 android系统版本一个道理,看sdk是否兼容你手头android机器 (只是这里是linux设备)
dmesg | grep -i rockchip
查询结果
linaro@linaro-alip:~$ dmesg | grep -i rockchip
[    0.000000] Machine model: rockchip,rk3288w
[    1.362200] rockchip-system-monitor rockchip-system-monitor: system monitor probe
[    1.432715] [drm] Rockchip DRM driver version: v1.0.1
[    1.438287] rockchip-drm display-subsystem: devfreq is not set
[    1.445867] rockchip-drm display-subsystem: bound ff930000.vop (ops 0xc0b66d80)
[    1.454484] rockchip-drm display-subsystem: bound ff940000.vop (ops 0xc0b66d80)
[    1.468904] dwhdmi-rockchip ff980000.hdmi: registered DesignWare HDMI I2C bus driver
[    1.476830] dwhdmi-rockchip ff980000.hdmi: Detected HDMI TX controller v2.01a with HDCP (DWC HDMI 2.0 TX PHY)
[    1.488432] rockchip-drm display-subsystem: bound ff980000.hdmi (ops 0xc0b5d7e0)
[    1.495929] rockchip-drm display-subsystem: failed to bind ff960000.dsi (ops 0xc0b5dc40): -517
[    1.506020] rockchip-drm display-subsystem: master bind failed: -517
[    1.831657] Rockchip WiFi SYS interface (V1.00) ... 
[    3.166007] rockchip-iodomain ff770000.syscon:io-domains: wifi supplied by 1800000 uV
[    3.174444] rockchip-iodomain ff770000.syscon:io-domains: sdcard supplied by 3300000 uV
[    3.188498] rockchip-thermal ff280000.tsadc: Missing rockchip,grf property
[    3.195872] rockchip-thermal ff280000.tsadc: tsadc is probed successfully!
[    3.282915] rockchip_cpuclk_pre_rate_change: Invalid rate : 500000000 for cpuclk
[    3.347270] dwmmc_rockchip ff0c0000.dwmmc: IDMAC supports 32-bit address mode.
[    3.354582] dwmmc_rockchip ff0c0000.dwmmc: Using internal DMA controller.
[    3.361374] dwmmc_rockchip ff0c0000.dwmmc: Version ID is 270a
[    3.367172] dwmmc_rockchip ff0c0000.dwmmc: DW MMC controller at irq 29,32 bit host data width,256 deep fifo
[    3.376928] dwmmc_rockchip ff0c0000.dwmmc: 'clock-freq-min-max' property was deprecated.
[    3.392435] dwmmc_rockchip ff0c0000.dwmmc: GPIO lookup for consumer cd
[    3.392444] dwmmc_rockchip ff0c0000.dwmmc: using device tree for GPIO lookup
[    3.392469] dwmmc_rockchip ff0c0000.dwmmc: using lookup tables for GPIO lookup
[    3.392477] dwmmc_rockchip ff0c0000.dwmmc: lookup for GPIO cd failed
[    3.392486] dwmmc_rockchip ff0c0000.dwmmc: GPIO lookup for consumer wp
[    3.392493] dwmmc_rockchip ff0c0000.dwmmc: using device tree for GPIO lookup
[    3.392515] dwmmc_rockchip ff0c0000.dwmmc: using lookup tables for GPIO lookup
[    3.392522] dwmmc_rockchip ff0c0000.dwmmc: lookup for GPIO wp failed
[    3.393713] rockchip-iodomain ff770000.syscon:io-domains: Setting to 3300000 done
[    3.401326] rockchip-iodomain ff770000.syscon:io-domains: Setting to 3300000 done
[    3.441675] dwmmc_rockchip ff0c0000.dwmmc: 1 slots initialized
[    3.447804] dwmmc_rockchip ff0d0000.dwmmc: IDMAC supports 32-bit address mode.
[    3.455056] dwmmc_rockchip ff0d0000.dwmmc: Using internal DMA controller.
[    3.461838] dwmmc_rockchip ff0d0000.dwmmc: Version ID is 270a
[    3.467619] dwmmc_rockchip ff0d0000.dwmmc: DW MMC controller at irq 30,32 bit host data width,256 deep fifo
[    3.477364] dwmmc_rockchip ff0d0000.dwmmc: 'clock-freq-min-max' property was deprecated.
[    3.485474] dwmmc_rockchip ff0d0000.dwmmc: No vmmc regulator found
[    3.491650] dwmmc_rockchip ff0d0000.dwmmc: No vqmmc regulator found
[    3.497927] dwmmc_rockchip ff0d0000.dwmmc: GPIO lookup for consumer wp
[    3.497933] dwmmc_rockchip ff0d0000.dwmmc: using device tree for GPIO lookup
[    3.497951] dwmmc_rockchip ff0d0000.dwmmc: using lookup tables for GPIO lookup
[    3.497957] dwmmc_rockchip ff0d0000.dwmmc: lookup for GPIO wp failed
[    3.498096] dwmmc_rockchip ff0d0000.dwmmc: allocated mmc-pwrseq
[    3.529250] dwmmc_rockchip ff0d0000.dwmmc: 1 slots initialized
[    3.529531] dwmmc_rockchip ff0f0000.dwmmc: IDMAC supports 32-bit address mode.
[    3.529559] dwmmc_rockchip ff0f0000.dwmmc: Using internal DMA controller.
[    3.529566] dwmmc_rockchip ff0f0000.dwmmc: Version ID is 270a
[    3.529591] dwmmc_rockchip ff0f0000.dwmmc: DW MMC controller at irq 31,32 bit host data width,256 deep fifo
[    3.529600] dwmmc_rockchip ff0f0000.dwmmc: 'clock-freq-min-max' property was deprecated.
[    3.529619] dwmmc_rockchip ff0f0000.dwmmc: No vmmc regulator found
[    3.529622] dwmmc_rockchip ff0f0000.dwmmc: No vqmmc regulator found
[    3.529628] dwmmc_rockchip ff0f0000.dwmmc: GPIO lookup for consumer wp
[    3.529630] dwmmc_rockchip ff0f0000.dwmmc: using device tree for GPIO lookup
[    3.529639] dwmmc_rockchip ff0f0000.dwmmc: using lookup tables for GPIO lookup
[    3.529642] dwmmc_rockchip ff0f0000.dwmmc: lookup for GPIO wp failed
[    3.535202] dwmmc_rockchip ff0d0000.dwmmc: card claims to support voltages below defined range
[    3.554856] dwmmc_rockchip ff0f0000.dwmmc: 1 slots initialized
[    3.556632] rockchip-dmc dmc: unable to get devfreq-event device : dfi
[    3.563689] rockchip-pinctrl pinctrl: pin gpio4-30 already requested by ff0d0000.dwmmc; cannot claim for wireless-wlan
[    3.563693] rockchip-pinctrl pinctrl: pin-150 (wireless-wlan) status -22
[    3.563697] rockchip-pinctrl pinctrl: could not request pin 150 (gpio4-30) from group wifi-wake-host  on device rockchip-pinctrl
[    3.566081] [drm] Rockchip DRM driver version: v1.0.1
[    3.566263] rockchip-drm display-subsystem: devfreq is not set
[    3.566819] rockchip-drm display-subsystem: bound ff930000.vop (ops 0xc0b66d80)
[    3.567187] rockchip-drm display-subsystem: bound ff940000.vop (ops 0xc0b66d80)
[    3.567435] dwhdmi-rockchip ff980000.hdmi: registered DesignWare HDMI I2C bus driver
[    3.567487] dwhdmi-rockchip ff980000.hdmi: Detected HDMI TX controller v2.01a with HDCP (DWC HDMI 2.0 TX PHY)
[    3.568395] rockchip-drm display-subsystem: bound ff980000.hdmi (ops 0xc0b5d7e0)
[    3.568404] rockchip-drm display-subsystem: failed to bind ff960000.dsi (ops 0xc0b5dc40): -517
[    3.569175] rockchip-drm display-subsystem: master bind failed: -517
[    3.572078] rockchip-dmc dmc: Get drm_device fail
[    3.572481] [drm] Rockchip DRM driver version: v1.0.1
[    3.572668] rockchip-drm display-subsystem: devfreq is not set
[    3.573209] rockchip-drm display-subsystem: bound ff930000.vop (ops 0xc0b66d80)
[    3.573581] rockchip-drm display-subsystem: bound ff940000.vop (ops 0xc0b66d80)
[    3.573824] dwhdmi-rockchip ff980000.hdmi: registered DesignWare HDMI I2C bus driver
[    3.573870] dwhdmi-rockchip ff980000.hdmi: Detected HDMI TX controller v2.01a with HDCP (DWC HDMI 2.0 TX PHY)
[    3.574777] rockchip-drm display-subsystem: bound ff980000.hdmi (ops 0xc0b5d7e0)
[    3.574824] rockchip-drm display-subsystem: bound ff960000.dsi (ops 0xc0b5dc40)
[    3.575000] rockchip-drm display-subsystem: connector[HDMI-A-1] can't found any modes
[    3.777747] dwmmc_rockchip ff0f0000.dwmmc: Successfully tuned phase to 191
[    4.273160] rockchip-drm display-subsystem: fb0:  frame buffer device
[    4.373526] rockchip-dmc dmc: Failed to get leakage
[    4.378641] rockchip-dmc dmc: Failed to get pvtm
[    4.383518] rockchip-dmc dmc: avs=0
[    4.387030] rockchip-dmc dmc: failed to get vop bandwidth to dmc rate
[    4.393490] rockchip-dmc dmc: failed to get vop pn to msch rl
[    4.399376] rockchip-dmc dmc: l=-2147483648 h=2147483647 hyst=0 l_limit=0 h_limit=0 h_table=0
[    4.407930] rockchip-dmc dmc: could not find power_model node
[    4.883456]   #0: rockchip,es8388-codec
[   15.444750] ==== Launching Wi-Fi driver! (Powered by Rockchip) ====
[   15.457506] Realtek 8723DS SDIO WiFi driver (Powered by Rockchip,Ver v5.13.5-15-gc1c3092fe.20210421_beta) init.
[   15.467630] [WLAN_RFKILL]: rockchip_wifi_power: 1
[ 1803.422903] rockchip-vop ff940000.vop: [drm:vop_crtc_enable] Update mode to 800x1280p0, type: 16
linaro@linaro-alip:~$ 
http://www.lryc.cn/news/2395137.html

相关文章:

  • 前端面经 DNSxieyi1
  • 如何通过ES实现SQL风格的查询?
  • ​​知识图谱:重构认知的智能革命​
  • 【计算机网络】4网络层①
  • MATLAB中的table数据类型:高效数据管理的利器
  • Dropout 在大语言模型中的应用:以 GPT 和 BERT 为例
  • CentOS 7 如何安装libsndfile?
  • 基于深度学习的语音识别系统设计与实现
  • gitLab 切换中文模式
  • 133.在 Vue3 中使用 OpenLayers 实现画多边形、任意编辑、遮罩与剪切处理功能
  • 4.8.4 利用Spark SQL实现分组排行榜
  • 40. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(类写法)
  • 【五子棋在线对战】一.前置知识的了解
  • 历年中国科学技术大学计算机保研上机真题
  • 内联盒模型基本概念?——前端面试中的隐形考点剖析
  • HackMyVM-Art
  • 网页前端开发(基础进阶1)
  • const ‘不可变’到底是值不变还是地址不变
  • 如何找到一条适合自己企业的发展之路?
  • Vue-数据监听
  • 当前用户的Git全局配置情况:git config --global --list
  • AI生态警报:MCP协议风险与应对指南(中)——MCP Server运行时安全​​
  • day15 leetcode-hot100-29(链表8)
  • DeepSeek 赋能文化遗产数字化修复:AI 重构千年文明密码
  • MonitorSDK_性能监控(从Web Vital性能指标、PerformanceObserver API和具体代码实现)
  • Spring Boot整合JWT实现认证与授权
  • 在 Linux 系统上连接 GitHub 的方法 (适用2025年)
  • 解决matlab两个库文件名冲突的问题
  • PHP 垃圾回收机制解析与应用案例
  • es6 函数解构