亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何獲取HDMI接口EDID

發布時間:2021-10-09 14:53:17 來源:億速云 閱讀:1225 作者:iii 欄目:編程語言

本篇內容主要講解“如何獲取HDMI接口EDID”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何獲取HDMI接口EDID”吧!

一、EDID介紹

EDID(Extended display identification data):擴展顯示器識別數據,一般存儲在顯示器的EEPROM中。

EDID1.0->EDID1.3版本中,EDID的容量是128Byte,從EDID1.3版本以后,數據容量擴展到256Byte。

一般通過DDC(或I2C)通道讀取EDID,從設備地址是0x50

EDID1.3版本的數據結構見下圖:

如何獲取HDMI接口EDID

如何獲取HDMI接口EDID

如何獲取HDMI接口EDID

二、EDID獲取

應用程序調用libdrm代碼中的drmModeGetConnector()函數,通過ioctl傳遞宏DRM_IOCTL_MODE_GETCONNECTOR通知Linux內核要獲取相關數據(包括EDID)。

在Linux內核中,如果定義了宏CONFIG_DRM_LOAD_EDID_FIRMWARE,內核會先調用drm_load_edid_firmware()函數,從/lib/firmware路徑下的對應文件中讀取EDID數據;若讀取失敗或未定義宏CONFIG_DRM_LOAD_EDID_FIRMWARE,內核通過DDC通道和顯示器進行通信,獲取EDID數據。

1、EDID獲取流程

如何獲取HDMI接口EDID

注:上面流程圖中提到了DRM Connector的一些函數,后續介紹Connector的初始化過程。

2、DDC通信流程

如何獲取HDMI接口EDID

3、EDID調試

可通過下面兩種方法顯示EDID數據。

1)、系統dump

## 1、進入單板系統root@linaro-alip:/sys/class/drm/card0-HDMI-A-1# lsaudioformat         device  edid     mode   power   subsystemcontent_protection  dpms    enabled  modes  status  ueventroot@linaro-alip:/sys/class/drm/card0-HDMI-A-1# cat edid > edid.bin## 2、如果單板系統沒有hexdump命令,則拷貝到pcroot@ubuntu:/home/run/code# hexdump -C -n 256 edid.bin00000000  00 ff ff ff ff ff ff 00  41 0c 55 55 01 01 01 01  |........A.UU....|00000010  0a 19 01 03 80 79 44 78  2a 16 4d 9f 5a 52 9f 26  |.....yDx*.M.ZR.&|00000020  0e 47 4a a1 08 00 95 00  b3 00 01 01 01 01 01 01  |.GJ.............|00000030  01 01 01 01 01 01 02 3a  80 18 71 38 2d 40 58 2c  |.......:..q8-@X,|00000040  45 00 b9 a8 42 00 00 1e  66 21 50 b0 51 00 1b 30  |E...B...f!P.Q..0|00000050  40 70 36 00 b9 a8 42 00  00 18 00 00 00 fd 00 14  |@p6...B.........|00000060  4c 1e 53 0f 00 0a 20 20  20 20 20 20 00 00 00 fc  |L.S...      ....|00000070  00 50 68 69 6c 69 70 73  20 54 56 0a 20 20 01 2d  |.Philips TV.  .-|00000080  02 03 28 f1 4d 1f 90 14  05 13 04 02 03 20 01 12  |..(.M........ ..|00000090  06 07 29 09 07 07 15 07  50 57 06 00 83 01 00 00  |..).....PW......|000000a0  67 03 0c 00 10 00 b0 2d  02 3a 80 18 71 38 2d 40  |g......-.:..q8-@|000000b0  58 2c 25 00 b9 a8 42 00  00 1e 8c 0a a0 14 51 f0  |X,%...B.......Q.|000000c0  16 00 26 7c 43 00 b9 a8  42 00 00 98 01 1d 80 18  |..&|C...B.......|000000d0  71 1c 16 20 58 2c 25 00  b9 a8 42 00 00 9e 8c 0a  |q.. X,%...B.....|000000e0  d0 8a 20 e0 2d 10 10 3e  96 00 b9 a8 42 00 00 18  |.. .-..>....B...|000000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 3d  |...............=|00000100

2)、modetest命令

使用modetest命令前,先停止使用/dev/dri/card0節點的應用程序。

在“Linux DRM那些事-libdrm調試準備”中,提到使用killall命令,后續調試時發現比較麻煩(原因:系統會自啟動桌面顯示)。可以使用systemctl命令,停止桌面顯示服務,然后使用modetest命令測試。

## 1.停止桌面顯示root@linaro-alip:~# systemctl stop lightdm.service[  682.983722] rockchip-vop ff900000.vop: [drm:vop_crtc_enable] Update mode to 1024x768p60, type: 11## 2.modetest測試root@linaro-alip:~# ./modetesttrying to open device 'rockchip'...doneEncoders:id      crtc    type    possible crtcs  possible clones87      61      TMDS    0x00000001      0x00000000Connectors:id      encoder status          name            size (mm)       modes   encoders88      87      connected       HDMI-A-1        1210x680                26      87  modes:        name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: preferred, driver  1920x1080 60 1920 2008 2052 2200 1080 1082 1087 1125 148500 flags: phsync, pvsync; type: driver  ...  props:        1 EDID:                flags: immutable blob                blobs:                value:                        00ffffffffffff00410c555501010101                        0a190103807944782a164d9f5a529f26                        0e474aa108009500b300010101010101                        010101010101023a801871382d40582c                        4500b9a84200001e662150b051001b30                        40703600b9a842000018000000fd0014                        4c1e530f000a202020202020000000fc                        005068696c6970732054560a2020012d                        020328f14d1f90140513040203200112                        06072909070715075057060083010000                        67030c001000b02d023a801871382d40                        582c2500b9a84200001e8c0aa01451f0                        1600267c4300b9a842000098011d8018                        711c1620582c2500b9a84200009e8c0a                        d08a20e02d10103e9600b9a842000018                        0000000000000000000000000000003d...## 3.恢復桌面顯示root@linaro-alip:~# systemctl start lightdm.service

到此,相信大家對“如何獲取HDMI接口EDID”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梁山县| 江永县| 庄河市| 陆河县| 湘潭县| 河西区| 永川市| 抚松县| 秦安县| 集安市| 永修县| 元谋县| 凌源市| 黄冈市| 南木林县| 神池县| 玉林市| 泾川县| 温宿县| 崇仁县| 上杭县| 金门县| 顺昌县| 康保县| 新宾| 西盟| 筠连县| 武宣县| 进贤县| 讷河市| 九寨沟县| 天等县| 长兴县| 麻阳| 安义县| 清涧县| 新安县| 包头市| 营山县| 塔河县| 广东省|