2. EDID标准规范:EDID 1.3与EDID 1.4的区别、EDID结构体详解、EDID版本号与修订号
好,咱们进入实战前的核心理论环节。
EDID这东西,说白了就是显示器的「身份证」。你想想看,电脑插上显示器,怎么知道它能支持多大分辨率?刷新率多少?支持HDMI还是DP?这些信息,全都写在这128字节的数据块里。
我最早接触EDID是在做一款嵌入式工控机的时候。客户说屏幕闪,我查了三天硬件,最后发现是EDID里刷新率字段写错了。嗯,从那以后,我对EDID的每个字节都格外敏感。
2.1 EDID 1.3 与 EDID 1.4 的核心区别
EDID 1.3和1.4,本质上都是128字节的基础块。但1.4做了一些关键升级。我习惯把它们比作「基础版」和「增强版」。
| 对比项 | EDID 1.3 | EDID 1.4 |
|---|---|---|
| 发布时间 | 1990年代 | 2000年代 |
| 色域描述 | 仅支持sRGB | 支持Adobe RGB、DCI-P3等 |
| 色彩深度 | 6bit/8bit | 支持10bit/12bit |
| 支持分辨率 | 最高1080p | 支持4K、8K |
| 扩展块支持 | 无 | 支持CEA-861扩展块 |
我个人觉得,1.4最大的进步是引入了「色彩管理」的概念。以前做显示,大家默认都是sRGB,现在你买个专业显示器,它得告诉你它能覆盖多少P3色域,对吧?
避坑指南:我曾经遇到过一块4K屏,EDID版本写的是1.3,但实际支持4K分辨率。后来发现是厂商偷懒,没更新版本号。所以读EDID时,别只看版本号,要结合详细时序描述来判断。
2.2 EDID结构体详解
EDID的128字节,分成了几个固定区域。我习惯把它画成一张图来记。
这张图我建议你存下来。每次解析EDID时,对照着看,不容易漏字段。
2.3 版本号与修订号
版本号和修订号位于字节18和字节19。这是EDID解析的「入口」。
我的小技巧:解析EDID时,我习惯先读字节18和19。如果版本号是01,修订号是03,那就是EDID 1.3。如果是01,修订号是04,那就是EDID 1.4。但注意,有些厂商会写01 00,那是EDID 1.0,非常古老了。
为什么版本号这么重要?因为不同版本的EDID,后续字段的解析方式不一样。比如1.3的详细时序描述,只有18字节;而1.4的详细时序描述,可以扩展到24字节,支持更高的分辨率。
注意:我曾经遇到一个坑——某款显示器的EDID版本号写的是01 04,但实际内容却是1.3的格式。后来发现是厂商的固件bug。所以解析时,我建议做双重校验:既看版本号,也检查时序描述的长度是否匹配。
2.4 实战:如何读取EDID版本号
在Linux下,读取EDID非常简单。我常用的命令是:
# 读取显示器0的EDID
sudo cat /sys/class/drm/card0-HDMI-A-1/edid | hexdump -C
# 只看版本号和修订号(字节18和19)
sudo cat /sys/class/drm/card0-HDMI-A-1/edid | dd bs=1 skip=18 count=2 | hexdump
输出示例:
00000000 00 ff ff ff ff ff ff 00 10 ac 05 41 31 32 33 34 |...........A1234|
00000010 01 04 95 22 13 78 02 31 a5 55 4e 9f 27 12 50 54 |...".x.1.UN.'.PT|
...
# 注意:字节18=01,字节19=04,表示EDID 1.4
你看,字节18是01,字节19是04,这就是EDID 1.4。我每次拿到新显示器,第一件事就是跑这个命令,确认版本号对不对。
2.5 总结一下
EDID 1.3和1.4的区别,核心在于对高分辨率和高色域的支持。1.4是主流,但1.3在老旧设备上依然常见。解析时,版本号是入口,但别迷信它——实际内容才是王道。
嗯,这一节的内容就到这。记住:EDID是显示器的「身份证」,读懂了它,你就掌握了显示调试的主动权。
核心要点:
- EDID 1.3 vs 1.4:色域、色彩深度、分辨率支持不同
- 版本号在字节18,修订号在字节19
- 解析时做双重校验:版本号 + 实际内容
- Linux下用
cat /sys/class/drm/*/edid读取
可可精品资料库