韦东山二期驱动视频-热拔插驱动——RK3399自制linux系统不支持HDMI热拔插问题分析

本文探讨了一款基于RK3399的Linux系统在HDMI热拔插时无法检测新设备的问题。作者分析了可能的原因,包括设备树配置错误和驱动问题,并学习了韦东山的视频教程。通过研究HDMI接口的原理,特别是HDMI的HPD引脚、DDC通道和EDID信息,作者发现硬件本身没有问题,问题可能出在驱动层或系统设置。最后,作者通过修改udev规则文件实现了热插拔支持,解决了显示问题。
摘要由CSDN通过智能技术生成

背景:

公司的板子,对于HDMI的显示器热拔插不支持,只能在插入HDMI时启动才能输出,而当开机之后,再插入HDMI显示器则无输出,不知道原因。

推测如下:

1、设备树的引脚配置有误,导致插入HDMI显示器时,系统无法检测到新设备;

2、系统驱动有问题。

因此借着这个机会,学习下韦东山视频,看是否能够有所帮助。

————————————————————————————————————————————————————————

当注册了设备之后,为什么还要注册类和类设备?

是为了让mdev根据这些信息来创建设备节点。

下面分析class_device_create函数,

调用到了kobject_uevent

具体的调用暂时先不去细看,先看下思路

其中,在打印环境变量时,由于不能确定有多少个环境变量,所以使用了一个技巧

for(i=0; envp[i];i++)

    do something;

即只要envp[i]存在就能判断成功,从而执行打印。

envp是char**类型的变量,打印时只写写字符串地址即可,即%s, envp[i]

总结:

当创建一个设备的时候,会导致mdev用户程序的运行,根据环境变量创建设备节点。

 

而当插入U盘,是如何自动挂载的。

分析:

插入U盘后的现象,自动在/dev/路径下创建sda等设备节点。

分析/etc/mdev.conf配置文件,发现配置文件正则表达式如下:

mdev.conf的格式:

: [<@||∗>]@Runaftercreatingthedevice.|∗>]@Runaftercreatingthedevice. Run before removing the device.
* Run both after creating and before removing the device.

device regex: 正则表达试,表示哪一个设备
uid: onwer
gid: 组ID
octal permissions: 以八进制表示的属性,权限

@: 创建设备节点之后执行命令
$: 删除设备节点之前执行命令
*: 创建设备节点之后 和 删除设备节点之前 执行命令

常用正则:
. 表示任意字符,(换行符除外)
* 重复0次或者更多次
+ 重复1次或者更多次
? 重复0次或1次
[abc] 表示这些字符里的某一个
————————————————
版权声明:本文为CSDN博主「dotafast」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012617366/article/details/73557068

综上,也就是说,在韦东山的视频教程中,相当于讲解了系统在识别出设备之后做的操作,而没有去详细讲解系统如何检测到有新设备热插拔了。

而目前的问题,可能很大程度上是由于系统没有检测到新设备,或者说系统没有去检测是否有新设备。

不过,视频教程还是有帮助的,可以快速的有个入门的概念。

下面就要从HDMI入手,去尝试分析和解决问题。

首先,要先去了解HDMI接口的概念,参考博客:

https://blog.csdn.net/wurifeng0531_201702/article/details/59212811

得知,板子的HDMI接口是标准型,共19pin。但是每个pin的作用是什么,并未有详细说明,只是从图中可以看出,有3组数据传输接口,每组分为data +,data shield ,data -三个引脚。另有一组时钟引脚clock +, clock shield, clock -

以上四组引脚,均有前缀TMDS,百度百科如下:

https://baike.baidu.com/item/%E6%9C%80%E5%B0%8F%E5%8C%96%E4%BC%A0%E8%BE%93%E5%B7%AE%E5%88%86%E8%AE%AF%E5%8F%B7/23227083?fr=aladdin

个人推测如下:

每组引脚中,data + 和data -传输的信号是相反的,这样可以避免外部干扰引起的数据错误,因为差值是一定的,shield引脚起保护作用,接地。

以上共有12个引脚(pin1~pin12),其他的7个引脚作用:

https://www.cnblogs.com/cute/archive/2011/05/25/2056417.html

pin19,hot plug detect 很明显

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值