自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Qt 软键盘的实现(QWidget),支持中文输入法、数字、英文切换

**出发点:由于Qt自带的软键盘是QML的,如果使用QWidget模式去编写调用自带的软键盘的话,在ARM下运行会全屏漆黑,并不是我们想要的效果,所以,在网上搜了很多的资料,自己去做了自制键盘,在项目中使用。 **新建一个keyboard的Demo以下是键盘的布局键盘初始化准备好26个输入的字符列表,用作大小写、数字切换 QMap<int,QList<QString>> modelMap; QList<QString> firstList,secor

2021-08-31 15:48:49 5861 23

原创 Qt中自定义提示框messageBox

自定义提示框样式

2020-12-29 15:53:49 11649

原创 Qt+opencv实现人脸识别检测

本文介绍了在RK3588平台上使用Qt和OpenCV实现人脸识别检测的方法。代码分为两部分:Qt界面部分使用QLabel显示视频帧,通过多线程处理视频流;OpenCV部分通过V4L2接口捕获摄像头数据,加载预训练的人脸检测模型进行识别。针对ARM64架构,需要在.pro文件中配置OpenCV库路径。文章还提到在buildroot中配置OpenCV4的编译选项,为嵌入式平台提供支持。该系统实现了实时视频捕获、人脸检测和标记功能,适用于嵌入式设备上的人脸识别应用开发。

2026-02-06 11:14:24 501

原创 ubuntu22.04部分分区挂载失败,进入紧急模式emergency mode

在ubuntu22.04文件系统启动过程中,如果某个分区在/etc/fstab定义了,但是某些原因导致分区损坏,致使在挂载过程中失败。修改/lib/systemd/system/local-fs.target文件,把OnFailure和OnFailureJobMode屏蔽掉。通过修改服务进程,让挂载失败后,不进入紧急模式emergency mode,然后通过手动修复分区,重新挂载的方式。通过上述的修改,系统启动过程中就算挂载失败也可以正常进入到系统。可以进行模拟分区损坏了,去破环分区,来复现是否有效修改。

2026-02-06 11:11:14 410

原创 在ubuntu下基于opencv实现人脸识别检测

本文介绍了在Ubuntu 22.04系统下基于OpenCV 4.5.4实现人脸检测的方法。首先搭建开发环境,安装必要的OpenCV库和摄像头工具,并解决虚拟机USB兼容性问题。然后通过编写C++代码调用OpenCV的人脸检测模型,实现了摄像头实时画面中的人脸识别功能,检测到的人脸会用绿色方框标记。文章详细说明了代码编译命令及OpenCV相关参数的含义,为在Linux环境下开发基于OpenCV的视觉应用提供了完整示例。

2026-01-13 10:43:27 310

原创 RK3576运行rkaiq_3A_server程序报段错误Segmentation fault

摘要:RK3576芯片运行rkaiq_3A_server服务时出现段错误(Segmentation fault)。错误分析显示系统缺少/etc/iqfiles/FakeCamera0.json配置文件,且检测到媒体拓扑结构异常。解决方法是将现有摄像头配置文件(如imx464_CMK-OT1980-PX1_SHG102.json)复制重命名为FakeCamera0.json。成功运行后服务加载了设备树指定的ov5670_ov5670-V1_default.json配置文件。该问题与设备树中摄像头模块名称和镜头

2026-01-13 10:42:16 467

原创 RK3576 调试ov2735 mipi-csi摄像头

摘要:本文记录了基于RK3576平台调试OV2735 MIPI摄像头的全过程。开发环境采用Linux 6.1内核和Buildroot文件系统。调试步骤包括:1)硬件检查(电源、晶振和引脚连接);2)驱动配置(设备树节点、ISP通道设置);3)驱动验证(通过ID检测和I2C工具测试);4)推流测试(使用v4l2和gstreamer工具)。重点解决了复位引脚配置、时钟命名匹配等关键问题,并通过寄存器检查确保初始化正常。最终实现了摄像头数据流的成功输出,为嵌入式视觉应用开发提供了完整参考方案。

2025-12-25 11:11:47 876

原创 基于RK3588调试WiFi模块AIC8800

本文介绍了在RK3588平台上移植AIC8800 WiFi模块驱动的过程。开发环境基于Linux 6.1内核和Buildroot文件系统。驱动移植步骤包括:将驱动包放入SDK指定目录、修改Makefile、编译内核、放置固件文件、手动加载驱动模块等。文章还分析了两种常见异常情况:无法识别模块(检查USB信号线路和供电)和偶发断连(检查硬件连接和调整PHY寄存器)。成功加载后可通过ifconfig看到wlan0节点。

2025-12-25 11:08:38 453

原创 瑞芯微RK35xx升级RGA驱动版本和API版本

本文介绍了瑞芯微RK35xx系列芯片升级RGA驱动和API版本的详细步骤。开发环境使用Ubuntu 20.04系统,内核版本5.10。升级过程分为两部分:RGA内核驱动升级通过替换SDK中的驱动文件并修改相关配置;RGA API库升级则需下载最新库文件,修改编译工具链后编译生成动态库。文章还提供了版本验证方法和测试命令,并针对RK3568升级中可能出现的异常情况给出了解决方案,即修改Uboot中关于内存管理的参数配置。整个过程需注意版本兼容性,确保驱动和API版本匹配。

2025-10-31 14:34:18 794

原创 RK35xx系列 TF卡驱动能识别正常,但无法自动挂载的异常问题

4、查看mmcblk1p1是否有ID_FS_TYPE的变量参数,同样可以使用udevadm info /dev/mmcblk1p1查看,从对比图来看,确实不正常的SD卡缺少ID_FS_TYPE的参数变量,导致触发了ENV{ID_FS_TYPE}==“”, GOTO="usbmount_end"规则。执行指令的结果如下,打印出系统的所有规则,并且能看到/dev/mmcblk1p1设备节点能触发到的事件,具体可以看红框标注的打印信息,能触发到的事件的文件以及行数。问题就来了,那为什么不能触发?

2025-10-31 14:32:11 732

原创 Linux配置vlan及验证方法

本文介绍了在RK3588主控芯片(Ubuntu 20.04,Kernel 5.10)上搭建VLAN环境的方法。主要内容包括:VLAN技术定义(通过软件逻辑划分网络)、内核需支持802.1Q协议、使用ip命令创建VLAN虚拟接口(示例创建eth0_20和eth0_30)、通过netplan配置持久化VLAN设置,以及跨设备验证方法(需保持相同VLAN ID和网段)。最后解释了普通IP无法跨VLAN通信的原因在于帧格式不同。该方案实现了在二层网络上的逻辑隔离,适用于需要网络分段管理的场景。

2025-09-22 09:31:06 534

原创 Linux LT8912b调试记录(MIPI转LVDS/HDMI)

本文记录了在RK3588平台上使用LT8912B芯片实现MIPI转LVDS/HDMI的调试过程。主要包含设备树配置、驱动代码实现及常见问题解决。调试重点包括:1)正确配置1280x800分辨率的LVDS屏幕参数;2)确保I2C总线正常通信;3)解决花屏、图像抖动、黑屏等问题,涉及lane-rate计算、同步信号极性调整及MIPI模式选择。文中提供了详细的寄存器配置代码和故障排查方法,特别强调了I2C通信验证和电压匹配的重要性。通过参数优化和多种模式测试,最终实现了稳定的视频输出转换。

2025-09-22 09:29:59 896 2

原创 RK35xx cpu无法调频的可能原因

RK3568 CPU无法调频问题排查:在Linux 4.19内核环境下,发现/sys/cpufreq目录缺失。通过对比内核日志,发现设备树中cpu-supply节点配置错误,实际电源芯片已更换为TCS4525但未更新配置。解决方法:1)修改设备树vdd_cpu节点为实际芯片型号;2)在内核配置中启用CONFIG_REGULATOR_FAN53555驱动。验证确认后,CPU频率调节功能恢复正常。该问题本质是硬件变更后未同步更新软件配置所致。

2025-07-10 14:51:04 773

原创 imx6ul Qt运行qml报错This plugin does not support createPlatformOpenGLContext!

摘要:在imx6ul开发板上运行Qt QML程序时出现"This plugin does not support createPlatformOpenGLContext!"错误。该问题是由于imx6ul无GPU硬件支持导致。提供了两种解决方案:1) 在Qt编译时添加-no-opengl选项跳过OpenGL相关库;2) 通过设置环境变量QT_QUICK_BACKEND="software"强制使用软件渲染。采用其中任一方法后,Qt虚拟键盘示例程序basic可正常运行。该

2025-07-10 14:48:53 552

原创 ubuntu中xrandr多屏幕设置

ubuntu下可以在/etc/X11/xorg.conf.d/路径下新建文件,那么每次系统启动都能执行该配置。HDMI为主屏且向右旋转+eDP在HDMI的右扩展屏。设置EDP屏幕为HDMI的复制屏。设置EDP为HDMI的右边扩展屏。单个屏幕控制,以HDMI为例。也可以使用语句去总结上述语句。控制HDMI屏幕向左转。设置HDMI为主屏幕。

2025-01-22 17:19:49 623

原创 RK3588 eDP屏幕调试及问题解决

3588默认有两个EDP接口,与HDMI接口公用同一组引脚,所以在设置HDMI时或者EDP时,需要把另一个功能屏蔽掉。这次我这边是由于AUX无法通信导致的,查看了硬件电路,是AUX_P和AUX_N接反了。问题3:lane数量可以是1,2,4,此次是2个lane,不需要额外配置也可以。解答:查看屏幕的电压是否正常,线路有无有对不上等,主要是查看硬件电路。如果还是不行的话,可以检查一下屏幕是否对时序有要求。屏幕类型:EDP,分辨率:1920x1080。解答:查看设备树是否使能了对应的phy。

2025-01-22 16:12:21 1580 2

原创 4G、5G移远模块SIM卡热插拔问题解决

问题1:插上SIM卡上电,模块可以正常拨号使用,但是拔掉SIM卡后,过了十几秒才打印出来“+QSIMSTAT: 1,0”信息,再次插上SIM卡无法识别到,SIM_DET引脚测量出1.8V,SIM_VDD引脚测量出为0V,证明4G模块无法识别出SIM卡。检测一下SIM卡的SIM_DET的串联电阻两边插拔电压变化,由于串联电阻电路图是100K的,导致拔掉SIM卡后,模块的SIM_DET依然是1.8V左右,导致不能实时检测到拔掉SIM的动作。启动热插拔后,拨号后插拔SIM卡会自动重新进行拨号动作。

2025-01-10 09:44:57 1775

原创 瑞芯微RK35xx系列修改分区大小和新增分区

在编译打包成固件的时候,会将IMG文件夹中的镜像拷贝到rockdev目录下。假设需要把rootfs的分区大小修改为0x01d00000,那么分区表中rootfs后面的oem和userdata分区就需要相对应的修改起始位置了。文件路径:/SDK/tools/linux/Linux_Pack_Firmware/rockdev/rk3588-package-file。需要查看一下SDK/rockdev有无有相关的镜像文件/或者分区写得有无有错。为什么有时候相应的分区在df指令查看下,没有达到分区表分配的大小?

2024-12-10 10:55:47 1867

原创 Linux 编写I2C驱动简单模板

{}//设备树匹配{}},#ifdef#endif为了方便以后写关于I2C的驱动和调试驱动。后面调试和编写遇到不同的情况再继续完善吧。

2024-09-01 15:01:22 873 1

原创 瑞芯微rk356x TF卡烧写选择指定的屏幕打印烧写的过程

如果只需要单屏显示的话,可以在内核设备树上把那些多余的显示节点屏蔽了disabled。这样就不需要进行源码的修改。也可以通过理解刚刚的代码解析去进行其他的显示动作。

2024-07-07 17:49:27 814

原创 linux RTC时钟时间出现了明显的偏移

最近发现一款RTC芯片PCF85063,稍微运行个3-4个小时,就会跟系统时间出现明显的时间偏移(大概是2-3秒),按这个计算一天就12秒左右了。不同的晶振输出的频率都会有所差异,比如同样是32.768KZ的不同型号的晶振,在同一个板子上,分别会出现快了5秒和慢了3秒的情况。经过实验,分别换电路图中晶振的负载电容,比如5pf,7pf,12.5pf,15pf,22pf。将芯片放在其他不同型号,封装一样,稳定的板子上测试,这里我推荐是pcf8563,这里基本上可以推测出是晶振还是芯片的问题了。

2024-07-07 17:48:29 1849 1

原创 IMX6Q基于kernel3.0.35版本调试GT9xx触摸屏

第二个需要注意的点是:中断获取触摸坐标点后,需要往寄存器中清0,不然 会出现一种问题,中断函数不断在打印。而linux3.0.35是没有设备树,需要通过加载板级初始化文件board-mx6q_sabresd.c来初始化各个总线接口,串口,网口,GPIO等。linux内核高版本都是在设备树DTB中配置好节点,然后驱动加载时device_id和设备树的compatible是否匹配得上。由于qt版本的原因,上报的事件只能识别到ABS_X,ABS_Y事件。这是第一个需要注意的点:设置设备的输入参数类型。

2024-05-29 13:55:13 377

原创 IMX6Q基于linux4.1.15调试音频芯片tas2505

获取时钟频率,因为我这边用的是外部晶振,不是使用CPU引脚MX6QDL_PAD_GPIO_0__CCM_CLKO1输出时钟的。如果上面of_match_table 的字符串跟设备树匹配上的话,接下来进入imx_tas2505_probe函数,这里我想说说设置ssi和audmux的方向问题,要么是由CPU输出BCLK,WCLK给音频芯片;tas2505_dai中的name变量名需要跟imx-tas2505.c中struct snd_soc_dai_link中的codec_dai_name变量名一样。

2024-05-29 13:53:18 609

原创 RK3568基于openHarmony3.2版本之GT911触摸屏调试成功

瑞芯微rk3568基于openharmony3.2版本调试触摸屏gt911

2024-03-22 09:36:26 975

原创 rotary-encoder旋钮编码器驱动

按照这个思路,得出了下面encoder_interrupt_handler中断处理函数。如果of_match_table与设备树中的节点compatible匹配上的话,就进入到probe函数中。可以从上述规律中得出:只有第一、三阶段有不一样,第二、四阶段都是一样的电平。顺时针的时候:channelA电平变化:1–>1–>0–>0。逆时针的时候:channelA电平变化:0–>1–>1–>0。channelB电平变化:0–>1–>1–>0。channelB电平变化:1–>1–>0–>0。

2024-01-19 09:04:12 1217 2

原创 RK356x基于Ubuntu20.04搭建ROS开发环境

一开始我以为Qt的plugin没有设置到export的环境变量导致的,其实不是,只需以下指令。然后重新执行就可以了。网上大多数是去执行乌龟那个程序。安装ros-noetic-desktop-full。操作系统:arm64 Ubuntu20.04。1、首先确保开发板是可以联网的。5、向系统导入ROS环境变量。可能会出现以下错误打印信息。4、安装ros完整的依赖项。6、启动roscore。有可能出现以下报错信息。有可能出现以下报错信息。7、启动rviz工具。

2024-01-18 09:12:17 728

原创 瑞芯微RK356x烧写失败分析原因

可以看出在第一个打印信息在DDR初始化,EMMC出现了通信问题,第二个在内核阶段依然报错。按照这个理论判断EMMC出现了问题,更换一块新的EMMC测试一下我的想法对不对。在一批板子中总有几个会出现一些小问题,比如烧写失败,启动不了等现象问题。EMMC如果出现问题会出现USB烧写的时候烧不进去,烧进去了在EMMC启动的时候会报一些mmc报错的打印信息出来。很明显,在这个log打印信息下,DDR初始化失败,我们可以尝试更换DDR去查看。更换之后,这以上两种情况都没有再出现,可以正常烧写并运行。

2023-12-17 16:32:03 2263

原创 RK3568基于openharmony3.2版本之MIPI屏幕调试

由于工作需要,RK3568需要支持openharmony3.2系统版本,需要重新移植下载源码并且适配自家公司的核心板。在开发的过程中,可谓是真滴难!!!原本openharmony系统就没有多少开源的资料了,然后整个架构跟linux和Android的SDK不一样,导致开发过程十分缓慢。。。就以MIPI屏幕为例接下来。

2023-11-23 09:44:26 1921

原创 linux arm64 Debian12移植操作手册

2023年6月10号Debian官方出了debian12 arm64版本的。如果需要完全适配这个系统的话,需要linux6.10版本。应客户的需求,需要在Debian11升级为Debian12版本。

2023-10-27 15:39:22 2035

原创 RK356x 修改uboot和kernel,让固件支持多个设备树DTB选择

这一点非常重要,为什么这么说呢,因为如果不把按照下面修改的话,会出现启动的时候直接进入recovery的文件系统。由于瑞芯微默认把uboot的环境变量设置成了CONFIG_ENV_IS_NOWHERE ,意思是环境变量将不会存储在任何地方,因此无法使用和修改环境变量。如何需要维持上一次上电前选择的配置的话,我们需要改成CONFIG_ENV_IS_IN_MMC。需要将多个设备树DTB文件一起打包到resource.img镜像中,让uboot启动阶段时选择不同的设备树以达到不同的配置。

2023-09-15 11:39:41 2159

原创 linux uboot制作自定义菜单指令menu

由于有时候需要不同类型的屏幕显示,但是来回烧写又显得非常的麻烦,遇到上述问题的话,我们可以采取以下方法去解决刚刚的问题。尝试过在STM32MP157,RK356X,RK3588里使用。U_BOOT_CMD()函数。

2023-09-12 11:37:56 607

原创 RK356x Android11更换默认的Launcher

ubuntu版本:18.04开发平台:RK356xAndroid版本:android11。

2023-08-03 19:51:13 1673 2

原创 在瑞芯微SDK源码上构建自己的356x编译固件

在旧的SDK编译的时候也没有这个报错信息,然后通过编译脚本查找:build.sh —> device/rockchip/common/mk-fitimage.sh —>提及到device/rockchip/.BoardConfig.mk–>这个文件是软链接到我们一开始创建的device/rockchip/rk356x/hyb-rk356x.mk。默认的内核配置:sdk源码/kernel/arch/arm664/configs/rockchip_rk3568_defconfig。

2023-07-26 16:00:41 994

原创 Window和linux使用samba实现文件共享

开启Samba的守护进程(mnbd是Samba服务器中负责处理NetBIOS名称解析服务的守护进程,而smbd是负责处理SMB/CIFS协议请求的核心组件。它们分别提供了不同的功能和服务,但都是为了实现Samba服务器的文件共享和网络访问功能)实现无论IMX6作为客户端还是服务端,IMX6系统下与window系统、ubuntu系统文件共享。如果输入以下指令能正常输出的话,证明已经设置了。这就成功连接上了,可以在这个目录下共享文件了。如果连接的时候报,window报以下错误的话。apt-get下载软件包。

2023-07-26 13:59:56 383

原创 瑞芯微 RK356x 基于Android11移植usb接口rtl8723du wifi和蓝牙一体化

Realtek RTL8723DU是一个高度集成的单片机802.11b/g/n 1T1R WLAN,和一个集成的蓝牙2.1/4.2单片机,USB 2.0多功能。它将一个WLAN MAC、一个支持1T1R的WLAN基带、BT协议栈(LM、LL和LE)、BT基带、调制解调器和WLAN/BT RF结合在单个芯片中。RTL8723DU为一个高性能集成的无线局域网和蓝牙控制器提供了一个完整的解决方案。RTL8723DU WLAN基带实现了1发射和1接收路径的正交频分多路复用(OFDM),并与802.11n规范兼容。

2023-07-10 14:06:15 2224 3

原创 Android 开关机POWER键 长按短按代码分析

如果想取消短按熄屏如何做呢?接下来是我的做法如下。

2023-06-29 17:08:08 1155

原创 Android11 设置系统时间遇到的问题

Android 11 系统中确实有一个机制,会比较系统时间和编译时间的大小,如果系统时间小于等于编译时间,系统会将时间自动设置为编译时间。不过需要注意的是,这个机制针对的是系统级别的时间,而不是应用程序级别的时间。如果把设置的时间点大于编译时间,重启后就是刚才设置的时间。通过在android系统的界面上设置时间我发现了个问题,如果往后设置时间就会出现重启后,时间不是上次设置的时间。问题:android11 系统时间一定要大于编译的时间才能有效,否者重启后,系统时间会自动变成编译时间。

2023-06-13 11:22:50 771

原创 linux usb摄像头反复插拔出现Unable to handle kernel NULL pointer内核错误

这个是内核中的调用顺序,可能是尝试启用摄像头设备的视频流时出现问题(是由于分配 USB 带宽失败或设置 USB 接口时出现问题导致的。然后经过反复测试,最终在usb_ifnum_to_if(const struct usb_device *dev,适当的在怀疑会出现报错的地方添加一些打印信息,我个人比较喜欢使用“printk()”,很明显这个问题是由于出现访问空指针导致了内核出现崩溃。unsigned ifnum)函数上添加以下语句。查看打印信息,定位到了这个函数。

2023-06-01 09:51:56 1177

原创 RK356x在Android11只显示4k分辨率3840x2160

原来在Android系统中,有一个文件是有过滤分辨率的功能,该文件位于Android\device\rockchip\rk356x\common\resolution_white.xml或者Android\device\rockchip\rk356x\rk356x\rk356xxx\resolution_white.xml。如果不做这一步的话,需要驱动是显示了3840x2160的分辨率,但是显示的界面大小还是1920x1080分辨率,需要修改以下系统柜默认的尺寸。调试方法,可以通过查看VOP的状态。

2023-05-29 10:25:05 2167

原创 linux CAN通讯基于Qt代码编写

由于工作需要,将linux中的can通讯编写到Qt上,通过图形界面的方式演示出来。

2023-05-11 10:32:44 3455 4

7-zip和AXMLPrinter2.jar

里面包含7-zip和AXMLPrinter2.jar包

2023-08-03

USB rtl8723du wifi驱动程序

在linux4.19内核上移植成功

2023-07-10

Android 系统 rtl8723du 蓝牙驱动

在Android11 系统上成功调通过

2023-07-10

基于imx6ul 去调试的tlv320aic3101的驱动

基于imx6ul 去调试的tlv320aic3101的驱动,里面含有tlv320aic3x.c,tlv320aic3x.h和imx-tlv320aic3x.c三个文件,在内核4.1.15版本调试成功的

2022-10-21

wm8960驱动文件及asound.conf配置

wm8960驱动文件和asound.conf配置文件

2021-09-16

wifi(ap6212、cyw43438)驱动及固件.rar

里面是ap6212(cyw43438)驱动及wifi固件和蓝牙固件,亲测都可以使用

2021-11-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除