- 博客(76)
- 资源 (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
5523
23
原创 ubuntu中xrandr多屏幕设置
ubuntu下可以在/etc/X11/xorg.conf.d/路径下新建文件,那么每次系统启动都能执行该配置。HDMI为主屏且向右旋转+eDP在HDMI的右扩展屏。设置EDP屏幕为HDMI的复制屏。设置EDP为HDMI的右边扩展屏。单个屏幕控制,以HDMI为例。也可以使用语句去总结上述语句。控制HDMI屏幕向左转。设置HDMI为主屏幕。
2025-01-22 17:19:49
294
原创 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
496
原创 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
603
原创 瑞芯微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
564
原创 Linux 编写I2C驱动简单模板
{}//设备树匹配{}},#ifdef#endif为了方便以后写关于I2C的驱动和调试驱动。后面调试和编写遇到不同的情况再继续完善吧。
2024-09-01 15:01:22
676
1
原创 瑞芯微rk356x TF卡烧写选择指定的屏幕打印烧写的过程
如果只需要单屏显示的话,可以在内核设备树上把那些多余的显示节点屏蔽了disabled。这样就不需要进行源码的修改。也可以通过理解刚刚的代码解析去进行其他的显示动作。
2024-07-07 17:49:27
638
原创 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
1229
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
230
原创 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
461
原创 RK3568基于openHarmony3.2版本之GT911触摸屏调试成功
瑞芯微rk3568基于openharmony3.2版本调试触摸屏gt911
2024-03-22 09:36:26
712
原创 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
727
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
532
原创 瑞芯微RK356x烧写失败分析原因
可以看出在第一个打印信息在DDR初始化,EMMC出现了通信问题,第二个在内核阶段依然报错。按照这个理论判断EMMC出现了问题,更换一块新的EMMC测试一下我的想法对不对。在一批板子中总有几个会出现一些小问题,比如烧写失败,启动不了等现象问题。EMMC如果出现问题会出现USB烧写的时候烧不进去,烧进去了在EMMC启动的时候会报一些mmc报错的打印信息出来。很明显,在这个log打印信息下,DDR初始化失败,我们可以尝试更换DDR去查看。更换之后,这以上两种情况都没有再出现,可以正常烧写并运行。
2023-12-17 16:32:03
1544
原创 RK3568基于openharmony3.2版本之MIPI屏幕调试
由于工作需要,RK3568需要支持openharmony3.2系统版本,需要重新移植下载源码并且适配自家公司的核心板。在开发的过程中,可谓是真滴难!!!原本openharmony系统就没有多少开源的资料了,然后整个架构跟linux和Android的SDK不一样,导致开发过程十分缓慢。。。就以MIPI屏幕为例接下来。
2023-11-23 09:44:26
1613
原创 linux arm64 Debian12移植操作手册
2023年6月10号Debian官方出了debian12 arm64版本的。如果需要完全适配这个系统的话,需要linux6.10版本。应客户的需求,需要在Debian11升级为Debian12版本。
2023-10-27 15:39:22
1324
原创 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
1425
原创 linux uboot制作自定义菜单指令menu
由于有时候需要不同类型的屏幕显示,但是来回烧写又显得非常的麻烦,遇到上述问题的话,我们可以采取以下方法去解决刚刚的问题。尝试过在STM32MP157,RK356X,RK3588里使用。U_BOOT_CMD()函数。
2023-09-12 11:37:56
460
原创 RK356x Android11更换默认的Launcher
ubuntu版本:18.04开发平台:RK356xAndroid版本:android11。
2023-08-03 19:51:13
1347
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
747
原创 Window和linux使用samba实现文件共享
开启Samba的守护进程(mnbd是Samba服务器中负责处理NetBIOS名称解析服务的守护进程,而smbd是负责处理SMB/CIFS协议请求的核心组件。它们分别提供了不同的功能和服务,但都是为了实现Samba服务器的文件共享和网络访问功能)实现无论IMX6作为客户端还是服务端,IMX6系统下与window系统、ubuntu系统文件共享。如果输入以下指令能正常输出的话,证明已经设置了。这就成功连接上了,可以在这个目录下共享文件了。如果连接的时候报,window报以下错误的话。apt-get下载软件包。
2023-07-26 13:59:56
287
原创 瑞芯微 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
1724
3
原创 Android11 设置系统时间遇到的问题
Android 11 系统中确实有一个机制,会比较系统时间和编译时间的大小,如果系统时间小于等于编译时间,系统会将时间自动设置为编译时间。不过需要注意的是,这个机制针对的是系统级别的时间,而不是应用程序级别的时间。如果把设置的时间点大于编译时间,重启后就是刚才设置的时间。通过在android系统的界面上设置时间我发现了个问题,如果往后设置时间就会出现重启后,时间不是上次设置的时间。问题:android11 系统时间一定要大于编译的时间才能有效,否者重启后,系统时间会自动变成编译时间。
2023-06-13 11:22:50
507
原创 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
1065
原创 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
1905
原创 RK356x之HDMI显示出现输出信号不稳定、花屏、出现红条纹现象
PHY_VLEVCTRL寄存器 (0x0e) 值用于调整 HDMI 的信号幅度,具体定义如下:Bit[0:4] : tmds_clk +/- 信号幅度,值越低,信号幅度越大;HDMI显示器接到控制板上可以显示,但是会出现时不时出现闪烁,红条纹(就好像之前我们家里大块电视上的条纹)。Bit[5:9]: tmds_data +/- 信号幅度,值越低,信号幅度越大。Bit[4:5]:DATA 信号sloop boost。Bit[0:2]:值越大,端接电阻值越大。Bit[3:1]:DATA 信号预加重。
2023-03-23 08:57:48
2702
5
原创 linux上USB检测异常,报错usb 7-1: device descriptor read/8, error -71
USB设备插入检测打印信息,如下。
2023-03-17 09:26:05
4307
原创 STM32Cube STM32MP157 M4端CAN通讯实战
这里非常关键一步就是Parameter Setting重点!!!!!!!:Norminal xxxx这四个参数的设置直接决定了CAN波特率是多少!!!CAN波特率的计算方式 :CAN波特率 = 系统时钟/Norminal prescaler/ (Nominal Sync Jump Width+Nominal Time Seg1+Nominal Time Seg1)数据段也跟仲裁段一样的配置就好了。
2023-03-10 11:55:42
2191
9
原创 RK356x 在uboot下设置GPIO引脚默认电平
首先打开RK356X的SDK软件包,查看一下uboot源码,这次我先在u-boot/common/board_f.c和board_r.c文件上添加GPIO口设置,虽然添加了gpio_direction_output()或者gpio_set_value()类似的GPIO设置的函数,但是用万用表测量了一下,怎么都不起效果。例如你需要先在系统上设置你刚才的设置参数是否生效,输入指令,用万用表测量,等测量无误后再到uboot上进行修改,这样效率大大增大。
2023-02-14 11:30:44
4365
6
原创 linux armhf ubuntu18.04搭建docker
这次搭建docker的环境过程非常的坎坷,一波三折,docker的报错信息一大堆,然后发现这一大堆基本上都是内核没有配置导致的,网上的资料也有限,基本上没有描述docker的报错解决问题。为什么第二步在安装docker的时候会报各种的错误提示呢,这些错误提示的根源就是linux内核,正常来说,有好多配置内核都是默认屏蔽的,所以,需要我们去手动打开,重新去编译。但是往往安装完第四步后,docker的服务是无法正常启动的,会报一堆的错误提示。如果完成第二步和第三步的话,应该docker是能正常运行的了。
2022-12-23 14:38:20
2552
原创 Qt 常用控件样式
做了几个项目之后,发现经常用的几个控件每次都需要设置样式,而且每次都是翻以前的项目样式粘贴复制,很麻烦,还不如直接统一做一下笔记,以后直接粘贴复制得了。省得东找西找。效果如下效果如下:声音滑动条进度滑动条QtableWidget、QTextEdit、QtableView等控件都有滚动条效果如下:效果如下效果如下:
2022-12-08 13:53:40
991
2
原创 Qt 制作圆弧型提示框QDialog
2、如果你该程序是在嵌入式端运行的话,需要有GPU,然后在运行的时候执行在EGLFS模式下,这样圆弧形提示框才生效,否者setAttribute(Qt::WA_TranslucentBackground);
2022-12-02 09:16:46
953
原创 linux驱动 usb转串口ch344 改变读取缓冲区大小
首先客户提出这个问题,我的第一个想法是这是个正常现象,因为我在做应用APP的时候,其实串口发送数据指令的时候,也会偶尔出现一条指令突然截断,先接收到帧头+命令字+类型,然后再接收到长度+数据内容+帧尾这类的情况,就此我们常常会在接收串口的函数中加以判断是否是一条完整的指令。果不其然,看到acm->readsize=128,跟现象截断的字节数刚好一样,然后我尝试单单修改acm->readsize=256,串口无法正常使用,证明readsize肯定跟其他值相关联的,仔细看了下代码,我认为跟这个有关系。
2022-11-29 09:37:12
1720
原创 Qt中QPropertyAnimation动画效果展示
偶然的机会发现Qwidget其实可以通过动画的方式也可以做到QML程序一样的过渡效果,使用QPropertyAnimation类。
2022-10-28 15:20:07
796
原创 基于imx6ul调试DP83848以太网PHY控制器笔记
感觉是没有信号传输到PHY控制器上,一开始我是还以底板上的差分信号线的问题,然后看了下原理图,看到了DP83848芯片中X1引脚是使用外部晶振的同时还用了CPU内部输出时钟频率,有可能导致了两个频率冲突了。最后,就是在MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2替换成MX6UL_PAD_ENET2_TX_CLK__ENET2_TX_CLK。首先是用示波器测量一下X1处的时钟频率,发现虽然有50MHZ输出,但是波形却有点杂乱,更加让我觉得是这个影响了网口通信。
2022-10-26 16:29:04
1081
原创 基于imx6ul下调试tlv320aic3x声卡
因为这次声卡芯片是tlv320aic3101,从网上搜相关的资料可谓是少之又少,基本上都是有linux2.6版本的,基本上都是没有用到设备树DTB去适配,看了一下内核源码linux4.1.15只有sound/soc/codecs有tlv320aic3x.c和tlv320aic3x.h这两个文件,而sound/soc/fsl/就没有驱动tlv320aic3x的驱动文件。需要自己从网上去下载或者参照imx-sgtl5000.c去重新写一个。内核版本:linux4.1.15。核心板:imx6ul。
2022-10-21 17:18:00
1145
原创 开发板串口终端shell中文或者其他国家语言显示乱码或者问号?的解决办法
从window端创建的文件名在window端显示正常,但是将文件拷入U盘,开发板通过U盘挂载的方式查看里面的文件名或者文件夹,显示都是?查看文件系统是否有locale、localedef指令,如果没有这条指令,可以将交叉编译器中的指令locale移植进来。首先需要查看文件系统是否有/usr/share/i18n/文件夹,没有的话,需要从交叉编译器中的软件包拷贝过来,如下图。如果成功环境都配置成功的话,重新查看ls,如下图所示,会显示中文或者其他国家语言文字了,而不是乱码。1、首先配置内核,新增。
2022-10-09 16:02:37
1501
1
基于imx6ul 去调试的tlv320aic3101的驱动
2022-10-21
RK3568 linux端如何能做到多屏异显?有赏
2022-07-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人