Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1371820
  • 博文数量: 478
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4833
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 11:12
文章分类

全部博文(478)

文章存档

2019年(1)

2018年(27)

2017年(21)

2016年(171)

2015年(258)

我的朋友

分类: Android平台

2016-10-27 21:02:42

在公司调试展讯MIPI接口的屏驱动已经有好几个月的时间了,现在总结一下调试的流程的技巧和经验,一来可以帮助自己记录一些调试的流程和方法,二来可以帮助那些调试屏驱动的码工尽快将屏调试成功,下面先简单的介绍一下MIPI吧!

MIPI联盟,即移动产业处理器接口(MobileIndustry Processor Interface简称MIPI)联盟。MIPI(移动产业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。MIPI联盟鼓励所有行业内的公司加入,包括:手机设备制造商、厂商、厂商、供应商、制造商、提供商、其他公司。随着越来越多的移动终端元器件提供商支持MIPI接口,MIPI接口的调试也显得更加重要和实用!

MIPI接口的屏支持以下两种工作模式:

 

DSI(VideoMode)视频模式.
这种工作模式与传统RGB接口相似,主机需要持续刷新显示器。由于不使用专用的数据信号传输同步信息,控制信号和RGB数据是以报文的形式通过MIPI总线传输的。因为主机需要定期刷新显示器,显示器就不需要帧缓冲器。RAM的屏一般比不带RAM的屏要贵一些,对于一些控制成本的方案,选择屏供应商需要格外关注这个!
  DCS(Command mode)命令模式
MIPI总线控制器使用显示命令报文来向显示器发送像素数据流。显示器应该有一个全帧长的帧缓冲器来存储所有的像素数据。一旦数据被放在显示器的帧缓冲器中,定时控制器就从帧缓冲器中取出数据,并自动把它们显示在屏幕上。MIPI总线控制器不需要定期刷新显示器。

两种模式的优缺点
     在成本和功耗方面,每个工作模式都有优点和缺点。视频模式显示架构无须帧缓冲器。然而,主机定期以高速模式发送DSI视频报文却消耗了大量的平均能量。
     在理想情况,当显示内容不改变时(或不经常改变时),显示系统的中央处理器就应该切换到低功耗模式,而处理器和显示器之间的链路会在需要的时候激活。由于主机定期刷新的需要,部分中央处理器和存储器接口也需要保持激活状态,这可以使系统不会达到最好的功率预算。
     另一方面,命令模式显示架构允许显示器直接对整个帧缓冲器进行自刷新。然而,在显示器中集成全帧长帧缓冲器总是需要成本的,特别是今天的大多数用户所需求的高分辨率显示器。这就要求接口芯片有更大的管芯尺寸。显示器制造商也不得不为每种显示分辨率提供具有特定容量帧缓冲器的显示控制器。
  对于视频模式和命令模式显示架构,通常都需要对显示控制器的寄存器编程来设置相应的显示分辨率、外观比率和工作模式。MIPI并不定义任何标准协议来访问这些内部寄存器,因此,不同的显示器制造商可以定制自己专用的命令集。
     为了摆脱不同制造商专用显示命令之间的冲突,有些制造商更愿意让显示器能够自己进行初始化,以使显示器不需要MIPI主机控制器的配置就可以正常工作。在这种情况下,显示器通常有一个存储显示参数的PROM存储器。这是非常方便的,但PROM也占据了比较大的存储器空间。


展讯6825平台已经可以支持MIPI接口的屏,可以在展讯6825上正常使用MIPI接口的屏!

在展讯平台上点亮MIPI接口屏正常显示需要满足以下几条就可以:

1:确认Lcd的驱动文件被正常编译编译进去,并且lcd board name里面注册一质,我有一次就是因为编译出现问题了,导致在kernel中无法正确读取LCD的ic的id,导致系统加载屏的驱动失败,造成系统进入kernel显示花屏,这部分是非常重要的,假如未能正确的编译进系统,你再怎么调试,屏照样无法正常的显示,这非常的关键!

2. 必须保证数据能够正确的传输到屏上,我有一次调试屏驱动时,发现屏上的显示始终是一些横竖条纹,或者直接灰屏,通过在示波器上检测屏引脚的波形,发现屏上的数据不正常,根本没有切换到hp下刷数据,导致屏无法正常的显示,一般在读取ic 的id和初始化设置指令时,都是在mipi的低速(lp)模式下,在初始化完成后,需要切换到高速(hp)状态下,才能正常的显示!

3. 必须保证ic设置的proch和timing,通道,速率正确,屏才可以正常的显示,一般显示出现花屏,显示偏移等问题,通常情况下,就是因为你设置的某些参数不正确,导致显示异常!

4:仔细检查上电同时测量,同时将28rgb interface对应gpio设为lcdc func。对于传统的lcd不需要RST操作只需拉高即可,对于mipi和需要下codeRGB panel需要RST高低高操作,这样code才生效。注意一般sleep out(0x11)display on(0x29)之间需要mdelay(120)左右,貌似这个对于大部分panel是必须的。如果这部分延时不够,会导致屏在进出睡眠或者显示过程中出现白屏,无法正常的显示!

5:最后还要确认是否有framebuffer输出,要是改动了display这块的clk很有可能没有buffer输出的,可以通过cat
/dev/graphyics/fb0
查看有没有输出字符。曾经调试开机logo连续显示时遇到过好几次没有buffer输出导致kernel卡住,屏也不亮按power键没有反映的情况。

注:一般wvga以及更高分辨率的陪你过通常采用2 line甚至更高的通道数,hvga及以下分辨率的屏则通常采用单通道的mipi接口

    一般情况下屏幕显示有flicker,可采用点翻转解决该问题,但是会带来功耗和潜在的不兼容问题,因为有些玻璃不支持点翻转,可能会带来显示的异常

    ....未完待续....


阅读(2764) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~