参考链接

https://www.cnblogs.com/lialong1st/p/9174475.html

https://www.forlinx.com/article-new-c22/341.html

https://www.cnblogs.com/zlh840/archive/2012/08/01/2618819.html

https://blog.csdn.net/weixin_42569429/article/details/112950569

https://www.cnblogs.com/xahsxd/p/14682195.html

https://bbs.t-firefly.com/forum.php?mod=viewthread&tid=2726&extra=page%3D1

https://blog.csdn.net/wowo1109/article/details/8805045

https://blog.csdn.net/dearsq/article/details/75645480

http://www.atmcu.com/1200.html

https://usermanual.wiki/Document/RK3399ClockGuidelinux44.1970364756/html

https://blog.csdn.net/wuweidonggmail/article/details/112057675

一,得到屏幕的EDID

1.打开EDID调试信息(查看LCD参数)

# vi ./kernel/drivers/video/fbdev/core/fbmon.c

//#undef DEBUG  /* define this for verbose EDID parsing output */

#define DEBUG

失败

2.在ububtuPC上安装read-edid查看该LCD参数

# sudo get-edid | parse-edid
...

Section "Monitor"
    Identifier ""
    ModelName ""
    VendorName "ADA"
    # Monitor Manufactured week 1 of 2007
    # EDID version 1.3
    # Digital Display
    DisplaySize 150 100
    Gamma 1.00
    Option "DPMS" "false"
    Modeline     "Mode 0" 32.00 800 840 888 928 480 493 496 525 -hsync -vsync

二.尝试修改内核文件

1.在rockchip-hdmi.h (/kernel/drivers/video/rockchip/hdmi)

- enum hdmi_video_information_code 尾部增加vic枚举值

HDMI_800x480P_60HZ

2.在rockchip-hdmi-lcdc.c (/kernel/drivers/video/rockchip/hdmi)

-struct hdmi_video_timing hdmi_mode增加LCD参数(由上面modeline计算得到)

{
        .mode = {
            .name = "800x480p@60Hz",//名称
            .refresh = 60,        //刷新频率
            .xres = 800,        //行像素 thd
            .yres = 480,        //列像素 tvd
            .pixclock = 32000000,    //像素时钟
            .left_margin = 40,    //水平后沿hb
            .right_margin = 40,    //水平前沿hfb
            .upper_margin = 29,    //垂直后沿vb
            .lower_margin = 13,    //垂直前沿 vfb
            .hsync_len = 48,    //行同步脉宽hpw
            .vsync_len = 3,        //列同步脉宽vpw    
            .sync = 0,        //水平/垂直同步
            .vmode = 0,
            .flag = 0,
        },
        .vic = HDMI_800x480P_60HZ,
        .vic_2nd = 0,
        .pixelrepeat = 1,
        .interface = OUT_P888,
    },

3.增加LCD参数到drm edid_cea_modes (kernel\drivers\gpu\drm\drm_edid.c)

以上更改都不能成功驱动屏幕

4.继续测试,过程中发现是可以成功读到LEDedid的,顺便学习了一下

解析edid

[root@rk3328:/sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1]# od -x ./edid
0000000         ff00 ffff ffff 00ff 8104 0004 0001 0000
0000020         1101 0301 0f80 000a 000a 0000 0000 0000
0000040         0000 0000 0000 0101 0101 0101 0101 0101
0000060         0101 0101 0101 0c80 8020 e030 102d 3028
0000100         00d3 446c 0000 1800 0000 1000 0000 0000
0000120         0000 0000 0000 0000 0000 0000 1000 0000
0000140         0000 0000 0000 0000 0000 0000 0000 1000
0000160         0000 0000 0000 0000 0000 0000 0000 1700

解析128字节 (和pc读到的匹配)
0000000         ff00 ffff ffff 00ff 头 (大小端)8104 生产商0004 产品ID0001 0000 序列号
0000020(10)     1101 生产时间 17年1月0301 版本号80   信号类型0f   宽度 1600a   高度 100    00   gamma0a   DPMS属性00 0000 0000 //色度信息0000
0000040(20)     0000 00(23)    0000000101 0101 0101 0101 0101//
0000060(30)     0101 0101 0101//详细信息描述1 每18字节        0c80 //像素时钟  800*480(0320 01e0)8020 //水平像素低8(20),水平像素balnking  e030 //水平像素高4位(03)&水平像素balnking高四位 垂直像素低8(e0)102d //垂直像素balnking(2d) 垂直像素高4位(01)&垂直像素balnking高四位3028 //水平信号偏移 水平脉宽
0000100(40)     00d3 //垂直偏移+垂直脉宽446c   //水平像素低8 垂直像素低8 尺寸mm0000   //高4位1800    //标志位 水平垂直同步0000 1000 0000 0000  //详细信息描述2
0000120(50)     0000 0000 0000 0000 00000000 1000 0000     //详细信息描述3
0000140(60)     0000 0000 0000 0000 0000 00000000 1000      //详细信息描述4
0000160         0000 0000 0000 0000 0000 0000 000000 是否存在扩展edid17    校验和

5.查看drm相关的dmesg 发现有CLOCK_RANGE(时钟频率出错)报错

//打开drm调试开关echo 0x1f > /sys/module/drm/parameters/debug dmesg | grep drm
[ 7500.812744] [drm:drm_helper_hpd_irq_event] [CONNECTOR:69:HDMI-A-1] status updated from disconnected to connected
[ 7500.812771] [drm:drm_sysfs_hotplug_event] generating hotplug event
[ 7500.812876] [drm:drm_fb_helper_hotplug_event]
[ 7500.812899] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:69:HDMI-A-1]
[ 7500.919079] [drm:drm_edid_to_eld] ELD: no CEA Extension found
[ 7500.919113] [drm:drm_property_unreference_blob] ffffffc07cd62a80: blob ID: 117 (1)
[ 7500.919168] [drm:drm_mode_debug_printmodeline] Modeline 77:"800x480" 66 32000 800 840 888 928 480 493 496 525 0x48 0xa
[ 7500.919188] [drm:drm_mode_prune_invalid] Not using 800x480 mode: CLOCK_RANGE
[ 7500.919216] [drm:drm_setup_crtcs]
[ 7500.919237] [drm:drm_enable_connectors] connector 69 enabled? yes
[ 7500.919258] [drm:drm_target_preferred] looking for cmdline mode on connector 69
[ 7500.919341] [drm:drm_target_preferred] looking for preferred mode on connector 69 0
[ 7500.919359] [drm:drm_target_preferred] found mode none
[ 7500.919378] [drm:drm_setup_crtcs] picking CRTCs for 8192x8192 config
[ 7500.920372] [drm:drm_atomic_state_init] Allocated atomic state ffffffc07cd62280
[ 7500.920404] [drm:drm_atomic_get_plane_state] Added [PLANE:58] ffffffc05d7c8200 state to ffffffc07cd62280
[ 7500.920429] [drm:drm_atomic_get_plane_state] Added [PLANE:61] ffffffc05d7c8300 state to ffffffc07cd62280
[ 7500.920449] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ffffffc05d7c8300
[ 7500.920473] [drm:drm_atomic_get_plane_state] Added [PLANE:65] ffffffc05d7c8d00 state to ffffffc07cd62280
[ 7500.920492] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ffffffc05d7c8d00
[ 7500.920518] [drm:drm_atomic_get_crtc_state] Added [CRTC:64] ffffffc07b54a400 state to ffffffc07cd62280
[ 7500.920538] [drm:drm_atomic_set_mode_for_crtc] Set [NOMODE] for CRTC state ffffffc07b54a400
[ 7500.920556] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ffffffc05d7c8200
[ 7500.920578] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:64] to ffffffc07cd62280
[ 7500.920598] [drm:drm_atomic_check_only] checking ffffffc07cd62280
[ 7500.920634] [drm:drm_atomic_commit] commiting ffffffc07cd62280
[ 7500.920678] [drm:drm_atomic_state_default_clear] Clearing atomic state ffffffc07cd62280
[ 7500.920703] [drm:drm_atomic_state_free] Freeing atomic state ffffffc07cd62280

CLOCK_RANGE报错对应的接口添加打印信息发现申请32M得到的时钟是24M

drivers/gpu/drm/rockchip/rockchip_drm_vop.c-vop_crtc_mode_valid

三.修改hdmi时钟配置

查看系统时钟

[root@rk3328:~]# cat /sys/kernel/debug/clk/clk_summary

1.尝试新增hdmiphy频率到  pre_pll_cfg_table(kernel\drivers\phy\rockchip\phy-rockchip-inno-hdmi-phy.c )添加频率32M

{ 32000000,  32000000, 1,  64, 2, 2, 2, 12, 2, 2,  2, 0, 0}, //自行尝试 可以成功驱动屏幕

2.咨询厂商,根据RK提供的分频工具得到分频参数

hdmi配置指引和工具(https://download.csdn.net/download/mialo163/21130511)

总结: 对于我这个情况,只要添加一个pll配置即可驱动hdmi屏幕(800x480)

尝试新增特殊分辨率(800x480)HDMI屏到RK3328(记录)相关推荐

  1. 电脑调分辨率黑屏了怎么办_调整分辨率后黑屏 怎么调整显卡分辨率解决电脑黑屏...

    分辨率过高也是导致电脑黑屏的一个隐形因素,调整显卡分辨率可以解决电脑黑屏.下面是小编为大家介绍调整显卡分辨率解决电脑黑屏的方法,欢迎大家阅读. 调整显卡分辨率解决电脑黑屏的方法 可以尝试选择" ...

  2. windows开机出现GNU GRUB黑屏解决方法记录

    windows开机出现GNU GRUB黑屏解决方法记录 电脑情况 我的电脑是组装机,系统为WIN10+UBUNTU16.04, 一块240G固态,一块750G机械硬盘.固态平分为两部分,各120G安装 ...

  3. UBuntu18.04 Qt之双HDMI接2个4K屏并分别设置分辨率、主屏、副屏

    一.设置HDMI-2为主屏 在main函数里面添加: #include "mainwindow.h" #include <QApplication>int main(i ...

  4. 双显示器 启动黑屏 黑苹果_黑苹果修改分辨率之后黑屏(频率超出显示器范围)...

    我使用nuc8i5beh安装黑苹果后,因为疫情原因一直在家,显示器只有一台08年的老古董,某宝买了一条HDMI转vag的转接线,准备用古董显示器来玩nuc,那台显示器应该是1366*xxx,具体记得不 ...

  5. [VNC] 分辨率, 退出全屏,

    2019独角兽企业重金招聘Python工程师标准>>> 我的显示器查看VNC的配置: vncserver -geometry 800x600 [root@localhost robo ...

  6. c# 再次尝试 连接失败_手机投屏电视连接不上怎么回事?

    现在的智能设备功能越来越多了,以家庭用户为单位,很多设备功能都是可以共享的.但基于用户对使用设备的不了解,在使用过程中会遇到很多解决不了的问题.本期文章就说说"手机投屏电视"连接不 ...

  7. 树莓派自定义分辨率适配带鱼屏(2560*1080)

    家里的显示器是带鱼屏,分辨率是2560*1080,接上树莓派总是无法正常显示,几经周折,终于在官方论坛里找到了解决方法: 是在boot分区中找到config.txt 把以下内容复制进去. hdmi_d ...

  8. layui之layer根据分辨率调整全屏(js判断分辨率)

    问题背景 使用layer作为后台CRUD UI体系的时候,大多数 添加/编辑 功能我是使用了layer.open来打开一个模态页面框.该方案在高分辨率的时候十分友好,但是在低分辨率特别是笔记本上显示效 ...

  9. Airtest新增iOS、Windows录屏功能,真香

    1. 前言 在录屏这块,Airtest之前一直仅支持了Android设备,但Airtest1.2.9的新版录屏功能里,新增了iOS和Windows的录屏支持. 下文我们将详细了解这个新的录屏功能,以及 ...

最新文章

  1. CMenu类的使用方法
  2. nginx不记录指定文件类型的日志
  3. Nacos 发布 v0.8.0 Pre-GA版本,安全稳定上生产
  4. 从STL中查找、统计和过滤重复(相同)的数据
  5. 《深入理解Elasticsearch(原书第2版)》一2.2 查询改写
  6. 通达信公式大全_通达信MACD金叉的选股公式大全
  7. 因为知道了30+款在线工具,我的工作效率提升500%!
  8. Linux和Windows下使用指定的JDK运行jar包
  9. sublime text c++ mac 怎么用_Mac 地址是什么,怎么用
  10. python学了有什么用-python学来有什么用
  11. Lucene和ES的关系
  12. OpenSSL源码分析—MD4算法实现
  13. [NOI2015]荷马史诗
  14. 若干思考:从如何确定投资者是风险偏好者、风险中性者还是风险规避者 到 上学真的无用吗的思考?
  15. c++求三个数中的最大值和最小值
  16. Vue Echarts绘制世界地图
  17. 网站 502 解决方法
  18. JavaBeans分类
  19. [python] paramiko实现SSH和SFTP
  20. 3.7V降压3V超低功耗稳压芯片,外围简单

热门文章

  1. 【HTML】重点知识内容~快速上手
  2. 论文阅读:social lstm:Human Trajectory Prediction in Crowded Spaces
  3. 阿里云“7天实践训练营”入门班第二期学习笔记 第五天 在线编程挑战
  4. 66万新购奔驰漏油,车主欲暂停还贷,奔驰金融:贷款必须还!
  5. Java:Lterator迭代器
  6. opencv图片旋转90°/-90°/180°
  7. 2018年90后薪资报告出炉:看看你被甩了多远!
  8. win10系统还原被组策略关闭怎么解决
  9. 使用你的linux系统下载BT
  10. 学无止境中的曙光----维伯英语