嵌入式linux调试dsi,LCD 调试总结

本文总结了嵌入式Linux系统中DSI LCD的调试经验,包括数据流程、初始化步骤及遇到的问题。在调试过程中,由于PCLK与MIPI clk换算不清导致LCD闪屏,最终通过检查DSI输出信号发现问题并解决。调试流程涉及DC、DSI控制器的初始化代码,以及DSI83 IC的使用。此外,文章强调了遇到问题时应跳出困境,根据原理寻找解决方案的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LCD 调试总结

数据流程:

Framebuffer  -> DC  -> Dsi  ->  Dsi83 -> LCD

DC 通过DMA从framebuffer取数据 ,然后通过并口传递给Dsi , Dsi输出mipi信号给Dsi83 , Dsi83将MIPI信号转成LVDS信号给LCD。

初始化流程:

首先得给各个器件上电,然后执行各个控制器的初始化代码,这个过程里面要确保各个信号的稳定性以及时序符合芯片要求,这是调试驱动的第一步,这一步不能确保后面不管怎么搞都是瞎搞。

遇到的问题:

一、不知道pclk是什么意思,也不了解pclk与mipi clk的换算关系:

1,Pclk是一秒钟要送出的总的像素点,实际上就是 一行的像素点*总行数*帧率

2,mipi clk的算式就是mipi clk = pclk * bpp/num(lane)*2

文字解释,pclk*bpp就是一秒要送出的总的bit位也就是比特率,这是每一秒由DC送给Dsi的数据,因为它在芯片内部是以并口的形式送出的,而Dsi拿到数据后是以串口的形式送出的,所以这里计算mipi的clk要除以lane的总数,又因为mipi是上升沿下降沿都取数据,所以这里要除以2。

二、这次主要是遇到LCD不断闪屏,为了debug做过的实验有:

1, 测试模式下用mipi clk,仍然闪屏

2,测试模式下用外部clk,不闪屏

实际上从这里就有理由怀疑mipi的输出有问题,从原理上来看接下来也应该去check dsi的输出信号,但是因为mipi没有测试点接出来,所以一开始居然避开了这一项检测,转而去狂填参数,现在想起来大概是因为填参数对软件而言比较容易,但实在是没什么道理,我也对一开始没有坚持自己的推理让硬件去测信号感到不满。

解决问题:

最终吹掉dsi83 IC,量mipi信号,发现时钟的确输出不连贯,而对比使用该IC的能正常显示的板子,其clk是连贯的。那么我们首先要保证mipi信号输出的正确性。

最后改掉一个控制clk的 参数TEGRA_DSI_VIDEO_CLOCK_CONTINUOUS即可。

总结: 遇到问题,应该跳出来,找人喝茶聊天,根据原理寻找思路,而不是匆匆忙忙冒冒失失的一头扎进去,以至深陷其中,不能自拔。

最后附上一张图:

81ed9db02953d3d8c0500e98b1cd453c.png

方向不对,越努力越尴尬。

========================================华丽丽的分界线================代码======================

代码介绍:

英伟达平台:

对于linux内核显示相关代码在Dc.c (drivers\video\tegra\dc)目录下。

这是display control的驱动文件,在这个文件中首先看driver结构体:

struct platform_driver tegra_dc_driver = {

.driver = {

.name = "tegradc",// 根据这个名字找到对应设备资源

.owner = THIS_MODULE,

},

.probe = tegra_dc_probe,

.remove = tegra_dc_remove,

#ifdef CONFIG_PM

.suspend = tegra_dc_suspend,

.resume = tegra_dc_resume,

#endif

.shutdown = tegra_dc_shutdown,

};

设备资源在文件Board-macallan-panel.c (arch\arm\mach-tegra) 中

static struct platform_device macallan_disp2_device = {

.name= "teg

### LCD 和 HDMI 输出调试经验分享 #### 设备树配置与内核加载 当系统重新加载设备树之后,尽管HDMI结点状态已为okay,但使用`modetest`查看connector时可能仍然未注册出HDMI连接器[^1]。这表明虽然硬件层面已经准备就绪,但在软件层面上可能存在一些问题阻止了系统的正常识别。 #### MIPI 到 HDMI 信号转换 对于采用MIPI接口作为视频源的情况,通常需要通过特定的桥接芯片来完成向HDMI或其他显示标准(如LVDS)的转换工作。例如LT9611系列芯片能够实现从双通道MIPI DSI/CSI到单通道HDMI1.4b信号之间的转变;而对于那些期望接收LVDS格式数据流的目标,则可选用像LT9211这样的产品来进行相应的协议适配处理[^2]。 #### 驱动程序开发与集成 针对基于Linux操作系统的嵌入式平台,在进行此类功能模块的设计实施过程中往往离不开定制化的驱动编写以及必要的固件烧录环节。特别是涉及到高清多媒体接口(HDMI)输出路径上的各类组件控制逻辑部分更是如此——不仅限于上述提到过的几种型号之外还包括更多种类各异的产品线成员。因此建议开发者们首先要掌握好有关基础架构方面的理论知识并积累一定的实践经验后再着手开展具体的项目任务[^3]。 #### 屏幕参数调整 值得注意的是,在实际应用环境中为了确保最佳视觉效果呈现出来还需要仔细考量目标终端特性并对相关设置项做出适当修改优化。比如分辨率大小、刷新频率高低等方面的选择都应当依据具体情况灵活应对而不是简单套用默认值即可万事大吉。 ```bash # 使用 modetest 工具检测当前 DRM 连接器的状态 $ sudo modetest -c ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值