欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > rk3399 的 HDMI 热插拔的问题

rk3399 的 HDMI 热插拔的问题

2024/12/1 0:37:51 来源:https://blog.csdn.net/weixin_44767571/article/details/142265440  浏览:    关键词:rk3399 的 HDMI 热插拔的问题

问题: 客户的3399 的板子上,烧写ubuntu 发现, 没有热插拔。

测试情况: 系统在第一次烧写完成之后,是有热插拔的,但是第二次启动就没有了。

还有一个情况,就是 ,如果我一开始 上电的时候就不接上 HDMI 的话,等系统启动之后,再 街上HDMI , 那么 这时候 就有了 热插拔了。很奇怪。

开始我的调试:

先来看看网上的资料,这个资料给了我很多的启发。

    firefly@firefly:/etc/udev/rules.d$ cat /usr/local/bin/hdmi-toggle#!/usr/bin/env bashUSER="$(who | grep :0\) | cut -f 1 -d ' ')"export XAUTHORITY=/home/$USER/.Xauthorityexport DISPLAY=:0########### Settings ############ Use 'xrandr' to find theseDP="DP-1"VGA="VGA-1"HDMI="HDMI-1"INTERNAL_DISPLAY="LVDS-1"# Check /sys/class/drm for the exact locationDP_STATUS="$(cat /sys/class/drm/card0-DP-1/status)"VGA_STATUS="$(cat /sys/class/drm/card0-VGA-1/status)"HDMI_STATUS="$(cat /sys/class/drm/card0-HDMI-A-1/status)"# Do no change!EXTERNAL_DISPLAY=""# Check to see if the external display is connectedif [ "${DP_STATUS}" = connected ]; thenEXTERNAL_DISPLAY=$DPfiif [ "${VGA_STATUS}" = connected ]; thenEXTERNAL_DISPLAY=$VGAfiif [ "${HDMI_STATUS}" = connected ]; thenEXTERNAL_DISPLAY=$HDMIfi# The external display is connectedif [ "$EXTERNAL_DISPLAY" != "" ]; then# Set the display settingsxrandrxrandr  --output $EXTERNAL_DISPLAY --autoelse# Restore to single displayxrandr --output $EXTERNAL_DISPLAY --offfiexit 0

------------------------------------------------------------------------------------------------------------------

什么是 lightdm  , startx  , xrandr

这个我单独写一篇文章, 不混在一起。

------------------------------------------------------------------------------------------------------------

什么是 systemctl , systemd  , 自启动脚本。

这个我单独写一篇文章, 不混在一起。

------------------------------------------------------------------------------------------------------

我自己对于硬件的测试。

这里涉及到 HPD 这个引脚。

这个脚 ,当我插入HDMI 的时候, 为5V,当我 拔掉HDMI 的时候为0V。

无论 热插拔 是正常,还是不正常,都是这个情况。

所以可能跟硬件是没有关系的。

所以我去看一下,源码中的 Linux 的设备树吧。

这里就没有热插拔 什么事儿。可能3399 本身就不支持热插拔。

也去看一下, uboot 的设备树吧。

uboot 里面的设备树 也是一样的。

---------------------------------------------------------------------------------------------------------------

我自己对于永远 默认插上HDMI 的源码修改。

我参考的是网上的资料

我就是这么改的。

-----------------------------------------------------------------------------------------------------------------------

我自己的调试。

我尝试 重启一下, lightdm 发现竟然有了热插拔。

情况是这样的,

已经没有热插拔了。

我重启 lightdm , 屏幕点亮。

然后继续插拔接口, 发现有了热插拔。

然后断电重启,有没有了热插拔。

那问题就简单了,直接写个 自启动脚本那就可以了。

自启动脚本是我从网上抄的。

无论我 插上HDMI ,还是 拔出HDMI 永远都是 connected .

我本想使用xrandr 查看一下 系统的屏幕, 但是系统有这个命令,但是 无法执行。

这是我的自启动服务。

[Unit]
After=multi-user.target[Service]
Type=oneshot
User=root
ExecStart=/usr/bin/openttyTHS1.sh[Install]
WantedBy=multi-user.target

这是那个脚本。

为什么这里有个 sleep 函数呢?

我发现如果没有这个函数的话,即便是 启动了,服务, 也不会有 重启桌面的这个操作。

所以干脆延时,知道系统完完全全的启动,在启动这个服务。

这样 问题就解决了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com