首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从EEPROM读取EDID

从EEPROM读取EDID
EN

Stack Overflow用户
提问于 2011-02-21 19:03:29
回答 3查看 8K关注 0票数 1

来自链接:http://en.wikipedia.org/wiki/Extended_display_identification_data

“EDID通常存储在监视器中称为串行PROM (可编程只读存储器)或EEPROM (电可擦除PROM)的存储设备中,并可通过I²C总线地址0x50.1访问。即使显示器本身关闭,EDID PROM通常也可由主机读取。”

但我不知道该如何阅读这些信息。

有人在这方面帮我吗?

萨蒂什

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-17 07:24:28

使用Linux包monitor- edid,您可以读取edid数据。

默认情况下,它不会安装,也不会包含在我的标准存储库(CentOS 6)中。安装repo (如果不是您的发行版repos的一部分)

代码语言:javascript
复制
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release*rpm

然后就可以安装monitor-edid了。

代码语言:javascript
复制
yum install monitor-edid

使用该命令的典型方法是通过解析器通过管道传输原始edid数据

代码语言:javascript
复制
monitor-get-edid | monitor-parse-edid

您的输出将如下所示:

代码语言:javascript
复制
Name: SyncMaster
EISA ID: SAM049b
EDID version: 1.3
EDID extension blocks: 0
Screen size: 47.7 cm x 26.8 cm (21.54 inches, aspect ratio 16/9 = 1.78)
Gamma: 2.2
Digital signal
Max video bandwidth: 170 MHz

        HorizSync 30-75
        VertRefresh 56-61

        # Monitor preferred modeline (59.9 Hz vsync, 66.6 kHz hsync, ratio 16/9, 102 dpi)
        ModeLine "1920x1080" 138.5 1920 1968 2000 2080 1080 1083 1088 1111 -hsync +vsync
票数 2
EN

Stack Overflow用户

发布于 2011-11-18 18:00:01

如果此问题仍然相关,请尝试使用以下程序read-edid-i2c。它扫描i2c总线并从中读取EDID数据。您可以选择给它一个总线编号进行检查,因为它会在找到的第一个EDID处停止(在多监视器设置的情况下)。您可能想要modprobe一个相关的i2c驱动程序,比如i2c-dev。

票数 1
EN

Stack Overflow用户

发布于 2011-08-26 08:00:28

与您所引用的完全匹配的代码如下- Linux内核源代码使用i2c接口实现了对EDID (0x80字节)的读取。

驱动程序/gpu/drm/drm_edid.c:

代码语言:javascript
复制
/**
 * drm_get_edid - get EDID data, if available
 * @connector: connector we're probing
 * @adapter: i2c adapter to use for DDC
 *
 * Poke the given i2c channel to grab EDID data if possible.  If found,
 * attach it to the connector.
 *
 * Return edid data or NULL if we couldn't find any.
 */
struct edid *drm_get_edid(struct drm_connector *connector,
                          struct i2c_adapter *adapter)
{
    struct edid *edid = NULL;

    if (drm_probe_ddc(adapter))
            edid = (struct edid *)drm_do_get_edid(connector, adapter);

    connector->display_info.raw_edid = (char *)edid;

    return edid;
}     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5065159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档