本文主要使用平台是 imx6x 系列, linux3.0.35 操作系统。参考用户资料是OKMX6Q-C、OKMX6DL-C (Linux)用户资料-2018.11.28。 我们在调试LCD屏幕是否能够在开发板上使用的时候,首先应该判断屏幕硬件上使用的线序是否能够和开发板上的硬件线序一致;硬件上能够接到开发板上才能够谈后边的软件调试。接着硬件接好后判断LCD屏幕是否被点亮,如果屏幕不能够点亮,先要检查一下PWM背光控制;屏幕能够被点亮了,我们才能够调试显示,也就是我们这篇文章的主要目的。我们以调试10.4吋LCD屏幕显示为例,简单说一下LCD调试时软件需要做的主要修改。 一 关于uboot部分的修改 关于UBOOT部分的修改,主要的作用是能够正常显示开机logo,以及将内核需要的参数信息传递给内核。UBOOT修改主要涉及到以下两个文件: 1)修改uboot-2009-08/include/configs/mx6q_sabresd.h中的显示参数,如下面两张图片的红色方框部分 2)修改board/freescale/mx6q_sabresd/mx6q_sabresd.c文件系统,添加LCD显示的参数:红色部分为添加项。 static struct fb_videomode displays[] = { { .name = "AT104-WVGA", .refresh = 60, .xres = 800, .yres = 600, .pixclock = 25000, .left_margin = 210, .right_margin = 40, .upper_margin = 23, .lower_margin = 3, .hsync_len = 6, .vsync_len =2, .sync = FB_SYNC_CLK_LAT_FALL, .vmode = FB_VMODE_NONINTERLACED, .flag = 0, .mode = FB_VIDEOMODE_LCD, }, 二 内核相关部分修改: 内核部分的LCD配置,就是LCD屏幕系统启动后的正常显示。主要修改一个文件就可以了。 1)修改linux-3.0.35/drivers/video/mxc/mxc_lcdif.c文件,在一下结构体中添加红色部分,红色部分的参数我们介意看到和UBOOT中的参数是一致的。 static struct fb_videomode lcdif_modedb[] = { …………………. /* 800x480 @ 60 Hz , pixel clk @ 33.3MHz */ "AT070-WVGA", 60, 800, 480, 30030, 210, 46, 22, 23, 10, 10, FB_SYNC_CLK_LAT_FALL, FB_VMODE_NONINTERLACED, 0,}, ……………………………………. { "AT104-WVGA", 60, 800, 600, 25000, 210,40, 23, 3, 6, 2, FB_SYNC_CLK_LAT_FALL, FB_VMODE_NONINTERLACED, 0,}, }; 特别强调: AT104-WVGA这个名字需要在UBOOT中的设置以及内核中的设置保持一致,名称没有限制,唯一要求是UBOOT和内核中一定要一致。 LCD显示部分我们经常涉及到的修改,主要是以上提到的部分,修改完成后将重新编译生成的镜像烧写到开发板中,接上10.4吋LCD屏就可以看到,屏幕能够正常显示了。 |
|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )
GMT+8, 2024-11-22 22:59
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.