[NXP i.MX 應用處理器教室] 如何在i.MX8M 的HDMI TX 新增客製化屏幕解析度

關鍵字 :i.MX8mNXP2560x1080

在 NXP i.mx8m 的平台上,支持了HDMI 2.0A TX的輸出。HDMI 2.0A的規範中,其解析度可以支持倒螢幕的最大解析度為4K@60。
由於屏幕解析度有很多種,相信許多NXP I.MX8M的使用者可能會遇到屏幕解析度被限制的問題,只能使用幾種標準的解析度,這在實際使用場景上會有相容性不足的限制在。

以下由SAC 支援團隊所提供的方式可以協助解決這項難題。
以下新增支援21:9 UltraWide螢幕解析度為例(2560x1080@60):
===================================================================
在預設模式下,i.MX8M會讀取屏幕或是顯示器的EDID,並同時在內部選擇出一個最適合的解析度做HDMI輸出。
輸出的pixal clock為: 594000; 297000; 148500; 74250; 27000 (KHz).
這些pixal clock 典型的解析度有以下幾種:
720x480@60Hz,
1280x720@60Hz,
1920x1080@60Hz,
3840x2160p@30Hz,
3840x2160p@60Hz, 等…

這時候如果需要指定不在上表的解析度時,可以依照以下方式做修改:
1. 將所需的解析度加入edid_cea_modes array中 :
        ./drivers/gpu/drm/imx/hdp/imx-hdp.c


2. 修改i.MX8M dts file 加入no-edid 描述.
          arch/arm64/boot/dts/freescale/fsl-imx8mq-evk.dts


3. 重新compile linux-imx 產生新的dtb file 以及kernel image.


#bitbake -c compile -f linux-imx
#bitbake linux-imx
編譯完成後,更新SD card 或EMMC內的dtb 以及kernel image.

4. 開機進入u-boot 模式並指定 mmcargs 參數內的video值


5. 進入kernel 確認目前的解析度


到目前為止已經可以確認i.MX8M的解析度可以完成客製化的需求了。

若需動態修改解析度來測試屏幕的話,可以使用modetest指令:
使用modetest前必須先關閉weston功能
#killall weston
取得connector的id:
#modetest -c (得知connector id 是46)


若有新增2560x1080@60解析度到edid_cea_modes後可以看到如下的顯示:


#modetest -s 46:2560x1080-60 (此解析度必須有定義在上述edid_cea_modes中,否則不會成功)



以上為介紹如何新增客製化屏幕解析度的說明。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論

山城

山城

2021年6月10日
它需要修改的地方嗎? 我照著修改這兩個地方,我們的面板是1366x768 針對你的文章修改外,另外設定下面兩個地方,HDMI還是無法輸出1366x768 1. u-boot=> setenv mmcargs 'setenv bootargs console=${console} root=${mmcroot} video=HDMI-A-1:1366x768-32@60' 2. vi /etc/xdg/weston/weston.ini
山城

山城

2021年6月10日
請問還有其它需要修改的地方嗎? 我照著修改這兩個地方,我們的面板是1366x768,HDMI還是無法輸出1366x768