EDID读取学习
简介
Video BIOS可以被认为是一个具有独立硬件抽象层的操作系统。它不会阻止或监视操作系统、应用程序或设备驱动程序对硬件的直接访问。虽然不推荐,但一些DOS应用程序确实可以改变基本的硬件设置,而根本不需要通过视频BIOS。大多数现代应用程序和操作系统都避免直接使用硬件。他们可以使用传统的VGA入口点来实现基本功能,这是最低标准的,或者他们可以使用VESA入口点来访问扩展功能,而不需要设备特定驱动程序的支持。它们可以利用设备特定驱动程序的功能来访问硬件的所有特性。反过来,设备特定的驱动程序可以直接访问硬件,也可以访问视频BIOS提供的任何入口点。
一般来说,视频BIOS是作为英特尔图形控制器抽象层的软件,VBIOS的主要目标如下:
1)初始化硬件-Intel Graphics Accelerator。
2)设置支持的硬件状态并返回硬件状态信息。
3)公开VESA/VGA功能接口和Intel专有函数调用功能接口,使其他应用程序能够访问Graphics hardware。
4)修复硬件/软件接口问题。
Video BIOS可以看作是一个独立于操作系统的硬件抽象层。传统上,**视频BIOS位于物理内存位置C0000h。VBIOS通过响应Int 10h调用与外部组件(如OS、System BIOS和DOS应用程序)进行交互。**它不阻止或监视操作系统、应用程序或设备驱动程序对硬件的直接访问。大多数现代应用程序和操作系统避免直接连接硬件,而是使用视频BIOS来实现VGA, VESA或英特尔特定功能。然后,设备特定的驱动程序直接访问视频BIOS入口点或硬件。

DDC协议和EDID
DDC传输协议以及显示器EDID结构介绍_vga输出ddc功能-CSDN博客
DDC
Display Data Channel (显示数据通道)是显示器与电脑主机进行通信的一个总线标准。它的基本功能就是将显示器的电子档案资料信息,诸如可接收行场频范围、生产厂商、生产日期、产品序列号、产品型号、标准显示模式及其参数、所支持的DDC标准类别、EDID的版本信息等等,高版本的DDC标准总线还可以允许电脑主机直接调节显示器的基本参数,诸如亮度、对比度、行场幅度的大 小、行场中心位置、色温参数等等。
基于End-user 的即插即用功能的需求,VESA 定义了DDC 标准。包含
DDC1/DDC2B/DDC2B+ 等方式DDC1是主机与显示设备单向通讯,以V-Sync为Clock。显示器不停的向主机发送EDID资料。
DDC2B是主机与显示设备准双向通讯,基于I2C 通讯协议。只有主机向显示器发出需求信号,并得到显示器的响应后,显示器才送出EDID 资料。
目前DDC1 基本上已经不再使用,主要是采用DDC2B 方式。PC2001 规定不能再使用DDC1。
EDID
EDID是由VESA——视频电子标准协会定义的,并在1994年和DDC标准1.0版一起推出了1.0版本。在EDID开发之前,VGA接口的针脚4、11、12和15有时被用于定义显示器的性能。这些ID针脚带有高的或低的值用于定义不同的屏幕分辨率。VESA通过重新定义VGA接口的针脚9、12和15,以DDC——显示数据通道的形式作为一个系列母线,扩展了这一体系。这使更多的信息得以交换,因此显示器和信号源之间能够以EDID或其他的形式进行交流。原始的DDC协议定义了从显示器发送到视频信号源的128个字节的EDID格式的数据。 由于显示类型和功能的不断增加,128个字节变得捉襟见肘起来,EDID和DDC都进行了扩展,因此多重128字节的数据块可以进行交换。这就是在众多消费品上所用到的E-EDID。实际上,CEA——美国消费电子产品协会以及国内定义了自己的EDID扩展包来包含额外的视频格式并支持先进的多声道音频功能。 在2007年12月,VESA发布了DisplayID,作为第二代EDID。其目的是取代所有旧版本。DisplayID是一个长度可变的数据结构,最高可达256字节,向信号源传输显示器的相关信息。这意味着包括PC显示设备、消费级电视机以及像笔记本电脑上的液晶屏这样的嵌入式显示器已近不需要多重扩展模块。
EDID数据标准:EDID(Extended Display Identification Data Standard) 就是显示器通过DDC传输给电脑主机的标准数据信息,至今已发布到第三版本,即EDID Version 3,前面分别有EDID Version 1.0,Revision 0,EDID Version 1,Revision 1,EDID Version 2,Revision 0,EDID Version 2,Revision 1等版本。就数据信息量而分,EDID分为128 BYTE和256 BYTE。这种通讯是为了使显示器可以发送自身的性能特征——比如原始分辨率——到信号源设备,使这个设备生成适合于显示器要求的视频特性。用户不需要手动调节,就能最大限度地提升设备之间的兼容性,从而减少了因为不正确的设置和调整对显示图像和系统的整体可靠性所造成的影响。 一般来说,信号源设备可能是一台桌面计算机或笔记本电脑的显卡,但是现在又多了许多不同的设备,包括高清电视接收机和数字录像机、DVD和蓝光播放器,甚至还有游戏机,这就需要读取EDID并输出相应的视频。EDID最初是为了计算机模拟视频设备上的VGA接口而开发的,现在能够用于DVI、HDMI和DisplayPort。
EDID版本定义的结构
供应商/产品标识块——起始的18字节表明了显示器的制造商和产品信息,包括序列号和生产日期。
EDID结构版本以及修订号——随后的2字节用于识别EDID数据结构的版本号和修订号。显示器的基本参数/特性——接下来的5字节用于特性,比如显示器接收的是模拟还是数字信号、同步的类型、水平和垂直的最大尺寸、伽玛传输特性、电源管理功能、色彩空间、默认的视频定时。
色彩特性——随后的10字节定义了显示器所使用的RGB色彩空间转换技术。
确定的频率——随后的3字节定义了显示器支持的VESA确定的视频分辨率/刷新率。每比特代表一个确定的频率,就像640×480/60。如果有的话,那么这3个字节的最后部分定义了厂商的保留频率。
确定的标准频率——随后的16字节定义了显示器支持的8个额外的视频分辨率。这些分辨率必须遵循VESA定义的标准频率。
详细的频率描述——之后的72字节被分为4个18字节块,用于详细描述额外的视频分辨率,以支持自定义的视频刷新率/分辨率。第1块用于描述显示器的首选频率。频率数据的结构既可以是VESA的GTF——一般程序时间也可以是CVT——协同视频时间标准。
EDID的问题
显示设备可以有不同程度的EDID执行,在某些情况下,它们可能完全没有EDID信息。这些不一致可能导致运行问题,包括过扫描和分辨率问题,甚至可能使显示设备完全不能显示信号源的内容。以下是EDID通讯中一些潜在问题的实例,以及可能会导致的后果:1、问题:显示器上没有图像。
可能的原因:信号源设备,比如PC的显卡或是笔记本电脑无法读取显示器的EDID信息。因此,在某些情况下,PC就不会输出任何的视频信号。
2、问题:在选择一个新的信号源后显示器丢失了这个图像。可能的原因:这通常发生在VGA接口的设备上,因为不支持热插拔。如果是支持热插拔的DVI、HDMI或DisplayPort,EDID通讯问题是由于不同厂商设备之间的HPD信号问题。这经常成为一个需要专业知识的综合问题,因为转换数字视频信号的能力是必须的。3、问题:显示了图像,但信号源和显示器的分辨率不匹配。可能的原因:电脑无法读取EDID信息,所以它默认显示为640×480的标准分辨率。如果用户试图手动设置分辨率以便和显示器匹配,某些显卡驱动可能会强制执行较低的默认分辨率,造成桌面滚动/抖动,实际上视频分辨率并没有变化。电脑能够读取EDID信息,但是显卡把输出分辨率限制到XGA的1024×768,这是绝大多数显示器都能够支持的分辨率,确保能够有一个可用的图像并减少无图像显示的可能性。如果这和显示器的当前分辨率不匹配的话,字体就可能不规则地变大、变小或者模糊。
电脑连接到多个具有不同分辨率的显示器。因为它只能从一台显示器上读取EDID,因此输出与其他显示器就不匹配了,这就导致了得不到最佳图像质量,或者根本没有图像显示。在专业系统中,当需要把数字视频信号分配或路由到多个显示器时,这个问题是很常见的。
EDID/DDC协议
DDC使用了I2C总线的标准串行信号计划。因为I2C简单、针脚少、具有双向功能,所以它被广泛地应用于需要交换信息的电子设备和元件中。<font style="color:rgb(51, 51, 51);">EDID/DDC协议中有3条线:SDA——数据、SCL——时钟以及一条逻辑上的“高”直流电压。对于DDC来说,这个逻辑“高”电压被定义为+5伏。</font>EDID信息通常在视频设备启动的时候就进行了交换。DDC规范定义了一个+5伏的电源连接,以提供电源给显示器的EDID电路,**这样就算不打开显示器的电源也可以进行通讯。在启动时,视频源设备会通过DDC发送一个EDID请求。EDID/DDC规范支持热插拔,因此显示器和视频源设备重新连接的时候EDID信息也可以进行交换。热插拔检测不支持VGA,但支持包括DVI、HDMI以及DisplayPort在内的数字接口。**对于这些接口,显示设备可以通过HPD——热插拔检测针脚提供电压,同步到它所连接的视频源设备上去。如果这个针脚上没有电压那么就会显示为断开。视频源设备监控这个HPD针脚上的电压,一旦检测到电压那么它就会启动EDID请求。
DEBUG32基本命令
r
简单的输入-r时就是查看当前各项寄存器的值,并由当前的地址,存储的指令等等。
并且,我们可以用-r命令来对寄存器的值进行修改,如:-r cs 1000, r ip 0000。
a
a指令可以让我们依次对内存单元直接写入汇编语言,如:
a 1000:0
mov ax,0
mov ax,1
d
我们可以用-d命令来查看内存中的内容,和-r类似,我们可以简单地-d来查看当前地址下往下16x8个内存单元存储的内容,同时,我们还可以通过如-d 1000:0来查看指定地址(1000:0)下的内存单元的内容,或者是用如-d 1000:0 f来查看这个地址下指定长度( f )的内容。
u
和其它指令,类似,-u分为两种用法,-u可以查看当前地址(cs:ip)下16个内存单元所存储的汇编语言,而-u 1000:0可以查看指定地址下16个内存单元存储的汇编语言。
p
一般是调试程序的时候用到,可以让计算机直接执行循环到结束(可类比-g)用法是遇到循环的时候直接-p
t
让cpu执行当前地址(cs:ip)所存储的命令
g
一般是调试程序的时候用到,可以让计算机执行到指定地点,如-g 0012(0012是目的ip)
e
简单的-e 1000:00 01 02 03 04命令是可以依次从这个地址开始写入数据进内存单元(本行要一次完成,写完再摁enter之类的),或者是一个一个来,此时就是-e 1000:0之后直接摁空格,这时debug会显示当前内存的值如12.,其中12是内存单元的值,而.后的内容是你准备写入的,此时我们就写一个摁一次空格,而当我们不想输入这个单元时则可以空摁一次空格,需要退出-e时只需要摁一次enter。
q
退出debug。
Video BIOS读取EDIE
查看连接设备
Video BIOS一次只能访问一条管道。5F1Ch用于设置或获取管道访问权限。以下是视频BIOS中双显示支持的使用模型:

LFP:专门用于设备内置显示屏,使用LVDS或eDP内部接口。
EFP: 适用于外部平板显示器,比如笔记本电脑外接显示器,通常支持多种数字接口 。
TV: 适用于电视机连接,通常是通过S-Video、复合视频或分量视频接口。
CRT:传统阴极射线管显示器,适用VGA接口连接。
首先我们需要确定函数调用成功,反回状态AX查看是否执行成功,不同的EDID/DDC协议对应的返回值不同,需要查看具体的CPU spec,也就是AX的值为5F,再根据SPEC,只需要调用5F64函数以及配置指定参数即可根据查看连接的显示设备,根据下图中CX=487C知道CH的值为48,对应的显示设备为EFP和LFP。选择哪个连接,还需要结合硬件原理图看是否对接口做了转换.


读取EDID值


要想知道设备的EDID的值,根据spec中的函数4f15传入相关参数,ES为4f15函数执行存储EDID信息的地址,可以指定,也可以不指定,这里我们指定为4000,读取连接LFP的显示器EDID信息,执行结果中AX为函数执行状态,根据芯片手册,知道4F即函数执行成功,只需要映射对应内存地址中的信息即可得到EDID信息。

debug32使用d ES:DI即可映射对应128Byte字节的信息,得到EDID值。

WIN/Ubunt下获取EDID方法
sudo get-edid | hexdump -C

下载链接 Download M
相关文章:
EDID读取学习
简介 Video BIOS可以被认为是一个具有独立硬件抽象层的操作系统。它不会阻止或监视操作系统、应用程序或设备驱动程序对硬件的直接访问。虽然不推荐,但一些DOS应用程序确实可以改变基本的硬件设置,而根本不需要通过视频BIOS。大多数现代应用程序和操作系统都避免直接使用硬件…...
【笔记】深度学习模型训练的 GPU 内存优化之旅:综述篇
开设此专题,目的一是梳理文献,目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化,所以最初思考的专题名称是“显存突围:深度学习模型训练的 GPU 内存优化之旅”,英文缩写是 “MLSys_GPU_Memory_Opt”。…...
车载以太网测试-13【网络层-IGMP协议】
目录 1 摘要2 IGMP协议概述2.1 IGMP 在 TCP/IP 协议栈中的位置2.2 IGMP 与以太网的关系2.3 为什么需要IGMP协议?2.4 IGMP报文结构2.4.1 IGMPv1 报文结构2.4.2 IGMPv2 报文结构2.4.3 IGMPv3 报文结构 3 IGMP通信原理3.1 GMP 的通信流程3.2 IGMP协议完整流程示例 4 总…...
2024山东大学计算机复试上机真题
2024山东大学计算机复试上机真题 2024山东大学计算机复试机试真题 历年山东大学计算机复试上机真题 历年山东大学计算机复试机试真题 在线评测:传动门:pgcode.cn 最长递减子序列 题目描述 输入数字 n,和 n 个整数,输出该数字…...
Vue 计算属性与 Data 属性同名问题深度解析
文章目录 1. 问题背景与核心概念1.1 Vue 响应式系统架构1.2 核心概念定义 2. 同名问题的技术分析2.1 同名场景示例2.2 问题发生机制 3. 底层原理剖析3.1 Vue 初始化流程3.2 响应式系统关键代码 4. 问题解决方案4.1 最佳实践建议4.2 错误处理机制 5. 性能影响分析5.1 递归调用性…...
深入理解 Xtensa 架构 ESP32 内存架构(SRAM、IRAM、IROM、DRAM、DROM详解)
在 ESP32 及其他 Xtensa 架构 MCU 中,内存被划分为不同的区域,以优化性能和存储管理。这些内存区域包括 SRAM, IRAM, DRAM, IROM, DROM,它们各有用途。 1. 内存区域总览 ESP32 的内存架构主要由: SRAM(Static RAM&am…...
每日一题——63. 不同路径 II
题目链接:63. 不同路径 II - 力扣(LeetCode) 代码: class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m obstacleGrid.size();int n obstacleGrid[0].size();…...
如何配置 Docker 以实现无需 sudo 使用
1. 背景知识:为什么需要 sudo? Docker 是一个容器化平台,其核心组件包括: Docker 守护进程(dockerd):负责管理容器的创建、运行和销毁。Docker CLI:用户通过命令行工具(…...
[文献阅读] 可变形卷积DCN - Deformable Convolutional Networks
**文献信息:**Deformable Convolutional Networks arxiv.org/abs/1703.06211 发表于ICCV 2017,提出了可变形卷积DCN(Deformable ConvNets) 摘要 卷积神经网络(CNN)由于其构建模块固定的几何结构天然地局限…...
【统计学相关笔记】2. 多元正态的Cochran定理
fisher 引理 如何说明一个线性变换和二次型独立: 二次型矩阵和线性变换阵乘积0即可。...
蓝桥杯刷题——第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
一、0握手问题 - 蓝桥云课 算法代码: #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力,题意很清晰,累加即可。 二、0小球反弹 - 蓝…...
Canoe Panel常用控件
文章目录 一、Panel 中控件分类1. 指示类控件2. 功能类控件3. 信号值交互类控件4. 其他类控件 二、控件使用方法1. Group Box 控件2. Input/Output Box控件3. Static Text控件4. Button控件5. Switch/Indicator 控件 提示:Button 和 Switch 的区别参考 一、Panel 中…...
【软考-架构】11.3、设计模式-新
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 项目中的应用设计模式创建型设计模式结构型设计模式行为型设计模式 💯考试真题题外话 项目中的应用 在实际项目中,我应用过多种设计模式来解决不同…...
【后端】【django】Django 自带的用户系统与 RBAC 机制
Django 自带的用户系统与 RBAC 机制 Django 自带的用户系统(django.contrib.auth)提供了 身份验证(Authentication) 和 权限管理(Authorization),能够快速实现 用户管理、权限控制、管理员后台…...
洛谷每日1题-------Day20__P1401 [入门赛 #18] 禁止在 int 乘 int 时不开 long long
题目描述 在比赛中,根据数据范围,分析清楚变量的取值范围,是非常重要的。int 类型变量与 int 类型变量相乘,往往可能超出 int 类型可以表示的取值范围。 现在,给出两个 int 类型变量 x,y 及其取值范围,请…...
【大模型(LLMs)RAG 检索增强生成 面经】
1 RAG 基础面 1.1 为什么大模型需要外挂 (向量) 知识库? 如何将外部知识注入大模型,最直接的方法:利用外部知识对大模型进行微调。 思路: 构建几十万量级的数据,然后利用这些数据 对大模型进行微调,以将 额外知识注入大模型 优点: 简单粗暴 缺点: 这几十万量级的数据…...
Centos 7 安装达梦数据库
一、环境准备 1. 确认操作系统的版本和数据库的版本是否一致 cat /etc/redhat-release 2. 关闭防火墙 查看防火墙状态 firewall-cmd --state 停止firewall systemctl stop firewalld.service 禁止firewall开机启动 systemctl disable firewalld.service 3. 修改文件l…...
@Autowired 注解在构造器上的使用规则(字段注入也挺好的)
背景 在看Spring Framework官方文档时,看到这样一段描述: As of Spring Framework 4.3, an Autowired annotation on such a constructor is no longer necessary if the target bean defines only one constructor to begin with. However, if seve…...
深度学习视觉2D检测算法综述
目录 一、两阶段目标检测算法 1.1 R-CNN(Region-based CNN,2014) 1.2 Fast R-CNN(Fast Region-based CNN,2015) 1.3 Faster R-CNN(Faster Region-based CNN,2016) 1…...
复试不难,西电马克思主义学院—考研录取情况
01、马克思主义学院各个方向 02、24马克思主义学院近三年复试分数线对比 PS:马院24年院线相对于23年院线增加15分,反映了大家对于马克思主义理论学习与研究的热情高涨,也彰显了学院在人才培养、学科建设及学术研究等方面的不断进步与成就。 6…...
Axios 请求取消:从原理到实践
Axios 请求取消:从原理到实践 在现代前端开发中,网络请求是不可或缺的一部分。Axios 是一个基于 Promise 的 HTTP 客户端,广泛应用于浏览器和 Node.js 环境中。然而,在某些场景下,我们可能需要取消正在进行的请求&…...
【Leetcode 每日一题】3306. 元音辅音字符串计数 I
问题背景 给你一个字符串 w o r d word word 和一个 非负 整数 k k k。 返回 w o r d word word 的 子字符串 中,每个元音字母(‘a’、‘e’、‘i’、‘o’、‘u’)至少 出现一次,并且 恰好 包含 k k k 个辅音字母的子字符串…...
【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求
目录 一、模式支持要求 1.1 发现模式 1.2 连接模式 1.3 绑定模式 1.4 模式间依赖关系总结 1.5 注意事项 1.6 协议设计深层逻辑 二、安全机制(Security Aspects) 三、空闲模式操作(Idle Mode Procedures) 3.1 支持要求 …...
分享一个免费的CKA认证学习资料
关于CKA考试 CKA(Certified Kubernetes Administrator)是CNCF基金会(Cloud Native Computing Foundation)官方推出的Kubernetes管理员认证计划,用于证明持有人有履行Kubernetes管理的知识,技能等相关的能力…...
观成科技:加密C2框架Platypus流量分析
一、工具介绍 Platypus 是一款支持多会话的交互式反向 Shell 管理器。在实际的渗透测试中,为了解决 Netcat/Socat 等工具在文件传输、多会话管理方面的不足,该工具在多会话管理的基础上增加了在渗透测试中能更好发挥作用的功能(如:交互式 Sh…...
Jetson Nano NX 重装系统
本篇记录了自己刚拿到Jetson板子后,刻意去学习给板子重刷系统的过程,学会重装系统是玩嵌入式开发板的基操。 注意:我使用的是 Nvidia 官方 SDK Manager 给 Jetson 刷系统的,需要额外准备一台 linux 电脑(双系统或者虚拟…...
注解+AOP实现权限控制
注解与AOP实战:实现权限控制 在现代Java开发中,注解(Annotation)和面向切面编程(AOP)是两种强大的技术,它们能够帮助我们实现代码的解耦,提高代码的可读性和可维护性。本文将通过一…...
Java数据结构第二十三期:Map与Set的高效应用之道(二)
专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、哈希表 1.1. 概念 1.2. 冲突 1.3. 避免冲突 1.4. 解决冲突 1.5. 实现 二、OJ练习 2.1. 只出现一次的数字 2.2. 随机链表的复制 2.3. 宝石与石头 一、哈希表 1.1. 概念 顺序结构以及平衡树中…...
linux系统命令——权限
一、有哪些权限 读(r)——对应数字4 写(w)——对应数字2 执行(x)——对应数字1 二、权限及数字的对应 4对应r-- 2对应-w- 1对应--x 5对应r-x 6对应rw- 7对应rwx 三、文件的基本属性 如图&#…...
设计模式-工厂模式、策略模式、代理模式、责任链模式
目录 1 工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 1.3 抽象工厂模式 1.4 工厂模式适用的场合 1.5 三种工厂模式的使用选择 2 策略模式 2.1 定义 2.2 结构 3 代理模式 3.1 啥是代理模式 3.2 为啥要用代理模式 3.3 代理模式分类 3.3.1 静态代理 3.3.2 动态代理…...
