相关文章

调试,是一件有挑战的事情

这篇文章的题目应该写做 - 我又被LCD艹了一个晚上。写个文档简单总结下

#LCD显示的一些基本概念

数字视频的基本概念源自于模拟视频。对于模拟视频我们可以这样理解:视频可以分解为若干个基本视点(像素),每个像素都有独立的色彩信息,在屏幕上依次将 这些点用电子枪按照行和列打出来,就形成了一幅完整画面,连续的打出画面,利用人眼的延迟特点就可以“显示”动态的图像了。

水平消隐:电子枪从左到右画出象素,它每次只能画一条扫描线,画下一条之前要先回到左边并做好画下一条扫描线的准备,这之间有一段时间叫做水平消隐(HBlank)。

垂直消隐:在画完全部256条扫描线之后它又回到屏幕左上角准备下一次画屏幕(帧),这之间的一段时间就是垂直消隐(VBlank)。电子枪就是在不断的走‘之’字形。

  • 行同步(HSYNC):行同步就是让电子枪控制器知道下面要开始新的一行像素

  • 场同步(VSYNC: 场同步就是告诉电子枪控制器下面要开始新的画面

  • 数据使能(DE):在数据使能区是有效的色彩数据,不在使能范围内的都显示黑色。

  • 前肩(Front Porch)/后肩 (Back Porch) :行同步或场同步信号发出后,视频数据不能立即使能,要留出电子枪回扫的时间。以行扫描为例,从HSYNC结束到DE开始的区间成为行扫描的后肩(绿色区域),从DE结束到HSYNC开始称为前肩(紫色区域)。同样对于场扫面也可以由类似的定义。

  • Pixel clock:像素时脉(Pixel clock)指的是用来划分进来的影像水平线里的个别画素, Pixel clock 会将每一条水平线分成取样的样本,越高频率的 Pixel clock,每条扫瞄线会有越多的样本画素。

  • HFP: Horizon front porch

  • HBP: Horizon back porch

  • VFP: Vertical front porch

  • VBP: Vertical back porch

  • HDP:Horizon display period

  • VDP:  Vertical display period

HTP = HSYNC + HDP + HFP + HBP

VTR = VSYNC + VDP + VFP + VBP

f dot _ clk = pixel clock f dot _ clk = f v * VTR * HTP f v = vertical frequency  (这个是频率,平时见到的很多时候是60HZ)

pixel clock = () 制式          总扫描线       图像区域扫描线       水平总象素       图像区域水平象素       采样频率 1080I/60Hz       1125       1080                      2200             1920            74.25MHz 1080I/50Hz       1125       1080                      2640             1920            74.25MHz 720P/60Hz       750         720                       1650             1280            74.25MHz 720P/50Hz       750         720                       1980             1280            74.25MHz

带宽:视频带宽代表显示器显示能力的一个综合指标,指每秒钟所扫描的图素个数,即单位时间内每条扫描线上显示的频点数总和,在模拟视频中以MHz为单位,图1的视频模拟带宽计算如下:

Analog BandWidth=165075060=74.25MHz 含义为每个时钟要传输74.25M个模拟视频数据。所以720p60 的pclk为74.25Mhz,同理1080P60的P CLOCK为148.5MHz

但是在数字视频中由于每个像素都是由3种不同的颜色来表示,每种颜色右由一定数量的比特来传输,因此通常会用bps来表示数字带宽,如果图1中使用了RGB传输,每种颜色用1个字节来输出,那么该视频的数字带宽为:

Digital BandWidth= 模拟带宽8bit3=1.782Gbps 含义为每秒要传输1.782G个比特数据

#DSI Clock计算

目前主流的lcd都是使用mipi总线,涉及到的一些clock在这里整理一下:

H-total = HorizontalActive + HorizontalFrontPorch + HorizontalBackPorch + HorizontalSyncPulse + HorizontalSyncSkew

V-total = VerticalActive + VerticalFrontPorch + VerticalBackPorch + VerticalSyncPulse + VerticalSyncSkew

Total pixel = H-total * V-total * 60(Hz通常都是这个,当然可以变).

Bitclk = Total pixel * bpp(byte) *8/lane number(有几路mipi data lane).

Byteclk = bitclk/8

Dsipclk(Dsi pixel clock) = (Byteclk * lane number)/bpp(byte) = Total pixel * 8

Byteclk = pclk * pixel depth / lane number

#调试过程描述

这个是一个新平台旧屏幕的调试,我们在rk平台上已经能点亮,这个是新的项目,我们满怀信心的时候,却发现怎么都不能让这个该死的屏幕正常亮起来。

这个过程是一个非常血腥的,我们从早上10点就开始搞,到晚上12点还没有搞通,我们领导这时候突然走到我们身边,我跟他说了一句,我们先回去休息明天再搞了。我确实觉得有点累,而且继续搞可能也没有机会搞好。所以我们就下班回去了,今天早上过来,就把问题给解决了。

#解决思路

##烧录BIST模式测试屏幕

BIST模式是LCD的一个测试模式,如果MIPI通信正确,我们发送BIST模式后,LCD会循环显示测试的颜色界面。这一步我们测试了,确实可以进入BIST,说明我们的MIPI通信是正常的。应该从其他部分寻找问题。

##找LCD模组厂确认参数

LCD的参数肯定是模组厂的技术最专业,所以在微信群里发了下LCD的参数配置给他们看了下,马上就发现了问题所在。如下图

##排查硬件

排查硬件这一步应该在拿到样机就开始搞了,我们这个屏幕用的是另外项目的,所以理论上硬件是没有问题的。点不亮的原因应该只有一个,那就是软件有问题,俗话说,人在路上走,锅从天山来,就是这个意思。

整个调试有点惊险也有点刺激,文章中还没有谈到LCD的休眠唤醒流程,调试中也遇到一些平台性的问题。因为对平台不熟悉也成了我们都阻碍,其中非常感谢一个MTK的大牛,虽然最终不是他的思路解决问题,但是在过程中给我们提了非常有效的建议。

完…

……

如果想讨论人生~就点击下面~

你不知道在我的小蜜圈会发现什么好东西

回复「 篮球的大肚子」进入技术群聊

回复「1024」获取1000G学习资料

调试LCD反被调戏了相关推荐

  1. 高通安卓调试LCD几方面总结

    来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...

  2. 64位内核开发第五讲,调试与反调试

    目录 反调试与反反调试 一丶反调试的几种方法 1.DebugPort端口清零 2.KdDisableDebugger 3.ring3下的 isDebuggerpresent和CheckRemoteDe ...

  3. android 反调试 方案,【木马分析】使用高级反调试与反HOOK的安卓恶意ROOT软件的深度分析(一):NATIVE层的调试...

    预估稿费:180RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 前言 最近,我们发现了一个新的Android rootnik恶意软件,它使用开源的Android root ...

  4. 防止静态反编译及动态反反调试,反外挂

    发布程序前一定要做加密,不然会被破的体无完肤.推荐几款加密产品. Virbox Protector Standalone 加壳工具 效果:代码加密,防止静态反编译 加密技术:代码混淆/虚拟化/代码加密 ...

  5. ko文件卸载 linux_调试lcd时候给linux单板移植tslib

    点击"蓝字"关注我吧 作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述  tslib背景: 在采用触摸屏的移动终端中,触摸屏性能的调 ...

  6. 6410调试LCD屏AT050TN22遇到的问题

    问题如下: 1.eboot的背景色本来是黑色的,但显示的是淡蓝色 2.进入WINCE标注界面后,本来是蓝色的,如果从垂直的角度来看显示的是白色,从倾斜,比如是20°(以水平线为基准)来看却是深蓝色,越 ...

  7. android 修改编译内核源码 对抗反调试

    0×00  写在前面 攻防对立.程序调试与反调试之间的对抗是一个永恒的主题.在安卓逆向工程实践中,通过修改和编译安卓内核源码来对抗反调试是一种常见的方法.但网上关于此类的资料比较少,且都是基于AOSP ...

  8. 反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......

    反调试技巧总结-原理和实现 -------------------------------------------------------------------------------------- ...

  9. 如何配置LCD背光和LED,调试方法

    LCD背光和LED配置文件 alps/custom/<proj name>lk/cust_leds.c alps/custom/<proj name>/kernel/leds/ ...

最新文章

  1. 公司 表名规则 TN基础表 TR关系表 TL定义表
  2. viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序
  3. window10 运行linux软件,现在你可以直接在Windows 10平台上运行带用户界面的Linux桌面软件...
  4. [原]FreeSWITCH uuid_transfer both转移失败(三方通话),如何解决?
  5. 说说python程序的执行过程_表示说的词语
  6. 十一、python生成器和迭代器
  7. Open Flash Chart 图表组件
  8. PyTorch 深度学习:30分钟快速入门
  9. 091117 T else if 的写法
  10. Java—图书管理系统
  11. sqlplus配置连接mysql_sqlplus连接远程数据库
  12. FineReport.10 一(帆软)(报表基础练习)
  13. linux 串口驱动解析之2440
  14. M语言简单示例--网页数据抓取
  15. 中国大学MOOC电影鉴赏题库(含答案)
  16. (C语言代码分享):车辆信息管理系统源代码来了。
  17. 为什么毕业后五年,你们的贫富差距越拉越大
  18. Audio2Face-语音驱动虚拟人表情
  19. DUMeter图形直观显示网络流量的监视器
  20. mac虚拟机不能识别 iphone或u盘

热门文章

  1. 云数据库·ApsaraDB 产品6月刊
  2. SQL Server2008R2查询数据库的物理路径
  3. windows2003安全设置
  4. 今天研究了一下关于Asp.net文件上传时的内存消耗问题
  5. 真格量化——50期权历史波动率策略
  6. 开源个小工具simple-repo
  7. Flask--读取配置参数的方式
  8. android打印intent flag,Android flag详解
  9. vue 用key拿对象value_利用 WeakMap 对 Vue 新建数组中的对象赋予 :key
  10. 基于django和vue的xdh官网设计