完善资料让更多小伙伴认识你,还能领取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就解决了。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1944 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2435 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5221 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 11:34 , Processed in 0.669386 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号