Linux DRM(六) -- EDID

  • 了解Extended Display Identification Data

1.EDID 工作原理

  The EDID of a sink is read by a source device in response to a connection event—called a hot plug—downstream at the display. The EDID is transmitted over the Display Data Channel (DDC) for CE products using VGA, DVI and HDMI, or over the auxiliary channel for monitors with DisplayPort interfaces. In the simple case with a source directly connected to a display device, the EDID is read when the hot plug lead is asserted. The following is a depiction of this operation. 
在这里插入图片描述

  EDID数据交换是显示器与信号源设备通讯说明自身性能的一种标准化方法。这种通讯是为了使显示器可以发送自身的性能特征——比如原始分辨率——到信号源设备,使这个设备生成适合于显示器要求的视频特性。用户不需要手动调节,就能最大限度地提升设备之间的兼容性,从而减少了因为不正确的设置和调整对显示图像和系统的整体可靠性所造成的影响。

  一般来说,信号源设备可能是一台桌面计算机或笔记本电脑的显卡。EDID最初是为了计算机模拟视频设备上的VGA接口而开发的,现在能够用于DVI、HDMI和DP接口。EDID是由VESA——视频电子标准协会定义的。VESA通过重新定义VGA接口的针脚9、12和15,以DDC——显示数据通道的形式作为一个系列母线,扩展了这一体系。这使更多的信息得以交换,因此显示器和信号源之间能够以EDID或其他的形式进行交流。

  EDID一般存在于显示器的EEPROM中,读取EDID 采用I2C协议。DDC使用了一个叫做I2C总线的标准串行信号计划。因为I2C简单、针脚少、具有双向功能,所以它被广泛地应用于需要交换信息的电子设备和元件中。一个I2C总线中有3条线:SDA——数据、SCL——时钟以及一条逻辑上的“高”直流电压。对于DDC来说,这个逻辑“高”电压被定义为+5伏。EDID信息通常在视频设备启动的时候就进行了交换。DDC规范定义了一个+5伏的电源连接,以提供电源给显示器的EDID电路,这样就算不打开显示器的电源也可以进行通讯。在启动时,视频源设备会通过DDC发送一个EDID请求。

  EDID/DDC规范支持热插拔,因此显示器和视频源设备重新连接的时候EDID信息也可以进行交换。 要说明的是热插拔检测不支持VGA,但支持包括DVI、HDMI以及DisplayPort在内的数字接口。对于这些接口,显示设备可以通过HPD——热插拔检测针脚提供电压,同步到它所连接的视频源设备上去。如果这个针脚上没有电压那么就会显示为断开。视频源设备监控这个HPD针脚上的电压,一旦检测到电压那么它就会启动EDID请求。一般来说 ,使用哪个接口,PC读到的就是哪个接口的EDID。

2.EDID解析

  Extended Display Identification Data(扩展显示标识数据)是一种VESA (Video Electronics Standards Association)标准数据格式,其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串。Host Device通过读取Display中的EDID数据来“知道”Display的一些属性。简而言之,EDID就是Display的一个铭牌。EDID数据通常是由DDC通道来传输。

  一份EDID数据是由128个字节的基本数据块(Block 0)和拓展数据块(Block 1)组成,Block 0是必须要有的,而Block 1是可选的。每一个字节都代表Display的相关信息,下面就详细讲一下里面数据的含义。
在这里插入图片描述
2.1.EDID Format Overview
在这里插入图片描述
上图是Block 0中的相关信息,最左边一列是数据的地址。

2.2.Header: 8 Bytes

  这8个字节中的值是固定的,不能做任何更改,内容如下图所示:
在这里插入图片描述

2.3.Vendor & Product ID:10 Bytes(08H-11H)

  这10个字节中包含一些厂商和产品的一些信息,由分为几个代表不同信息的部分,如下图所示:

在这里插入图片描述

  • ID Manufacturer Name:2 Bytes(08H-09H)

    这两个字节表示的是厂商ID,由微软注册管理,共有16bit,代表三个字母,这16bit是采用6+5+5的方式来划分的。例如, 【0x36, 0x74】表示的内容是:0011 0110 0111 0100.即 001101 + 10011 + 10100 = “M” + “S” + “T”. 即表示MSTAR公司。其中“00001”表示字母A,“00010”表示字母B,“00011”表示字母C,依次类推,“11010”表示Z。

  • ID Product Code:2 Bytes(0AH-0BH)
    这两个字节表示产品ID,由厂商分配。

  • ID Serial Number:4 Bytes(0CH-0FH)
    这两个字节表示产品序列号,有厂商分配。

  • ID Manufacturer Name:2 Bytes(10H-11H)
    产品的制造日期,第一个字节表示一年中的第几周,第二个字节表示年份,这个年份是相对于1990年来说的。比如里面的数据为0AH,16H,十进制为10和22,则表示1990+22=2012年的第10周。

2.4.EDID Structure Version & Revision:2 Bytes(12H-13H)

  这两个字节表示EDID的版本,比如其中值为01H,03H就表示version1.3。目前EDID最高版本为1.4,下图是不同版本之间的区别。
在这里插入图片描述
2.5.Basic Display Parameter and Features:5Bytes(14H-18H)
在这里插入图片描述
2.6.Display x, y Chromaticity Coordinates: 10 Bytes(19H-22H)
在这里插入图片描述
2.7.Established Timings I & II: 3 bytes(23H-25H)
在这里插入图片描述
  相应位置置1,表示支持这个Timing。这个时序块中定义的时序是EDID标准出现还早的一些时序。

2.8.Standard Timing:16Bytes(26H-35H)
在这里插入图片描述
  这里面定义了从Standard Timing 1- Standard Timing 8总共8个Standard Timing,每个Timing用两个字节来描述,Timing的格式参照表中Standard Timing 1。里面包括宽高像素值,宽高比,刷新率等参数。如果不是用,则将第一个字节设置为01H第二个为0。

2.9.Detailed Timing Blocks - 72 Bytes(36H-7DH)
在这里插入图片描述
  这72个字节分为4组,每18个字节用来描述一个Timing。第一个18Bytes block必须用来表示详细时序(Detailed Timing),第二到第四个除了可以表示Detailed Timing之外,还可以用来表示显示器描述符(Display Description)。

2.10.Timing Information Priority Order

  在EDID中定义了四种Timing,分别是Established Timing、Standard Timing、Preferred Timing还有一些额外的Timing,比如GTF和CVT Timing。对于显示器来说,支持的这些Timing有一个优先级,如下图:
在这里插入图片描述
  优先级:Preferred Timing > Detailed Timing > Extension Block中的Detailed Timing>CVT > Standard Timing > Established Timing

2.11.Extension Block Count N - 1 Bytes(7EH)

  这一个字节表示除了Block 0之外还有多少个拓展的Block,一般为1,即还存在Block 1.

2.12.Checksum - 1 Bytes(7F)

  校验和

3.EDID Extensions

目前常见的EDID extension block 采用的是version 1.3.
在这里插入图片描述

refer to

  • https://www.extron.com/article/uedid
  • https://github.com/linuxhw/write-edid
  • https://en.wikipedia.org/wiki/Extended_Display_Identification_Data
  • https://blog.csdn.net/Gplusplus/article/details/52597033

猜你喜欢

转载自blog.csdn.net/weixin_41028621/article/details/113659038