1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、问题描述
平台:RV1109 需求:兼容一块10.1寸mipi的LCD屏(1218-A101NL66-28K),是rv1109的第10块屏幕,使用lcd_index=10(lcd_index涉及到我司兼容LCD方式)来标志这块屏。 问题:设备开机后,在uboot阶段显示正常,启动kernel后屏幕逐渐熄灭变黑。 2、问题根因 在uboot的时候,LCD屏的初始化序列正确,故能在uboot阶段正常显示。但是在kernel阶段由于错误地使用timimg参数,导致屏幕逐渐熄灭变黑。 3、具体分析 这就需要涉及到我司rv1109项目对LCD屏幕的兼容方式了,我司是在uboot阶段兼容各种LCD屏幕,所以会在uboot选择具体哪个lcd屏幕,然后根据这块屏幕的初始化序列来初始化这块屏幕并显示logo。具体可以去查找相关资料和追溯代码。 在uboot这一阶段没有出现问题,也正确地通过bootarg命令将选择的屏幕index传递到kernel了,如下图所示: 由上面的图片可知,显然uboot阶段选择的屏幕是正确的,是选择我需要的那块屏幕。但从图片里可以看到选择的LCD型号为L071,不是我目前LCD型号–1218-A101NL66-28K。那这是什么原因导致的呢? 那我们从函数of_get_display_timings寻找答案吧,如下图: 在of_get_display_timings函数里发现出现bug的就是在上图中的那部分代码。在这部分代码里我们可以知道获取LCD的timing参数是通过lcd_name和lcd_index来比较,如果相同就获取timing参数。但问题就出在上图3处的字符串比较函数—strncmp。它这里是以lcd_name的长度来与lcd_index比较,所以当在LCD1与LCD10以4的长度来比较,结果是相同的,这样就选择了LCD1的timing参数。所以我们将这部分代码改成如下图,bug就解决了。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
533 浏览 0 评论
803 浏览 1 评论
700 浏览 1 评论
1926 浏览 1 评论
3171 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:45 , Processed in 0.543673 second(s), Total 74, Slave 56 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号