目录
1 比对官方mx6ullevk开发板与ALIENTEK-ALPHA开发板原理图
1.1 下载NXP官方mx6ullevk原理图
NXP官方网站下载mx6ullevk原理图查看LCD显示屏硬件连接与ALIENTEK-ALPHA开发板LCD显示屏连接区别
下载后进行解压,解压完成后如下图所示:
MCIMX6ULL_BB_DESIGNFILES:Baseboard底板,里面是外围芯片原理图
MCIMX6ULL_CM_DESIGNFILES:Core module核心板,里面是EMMC、DDR和PWR,如下图所示:
1.2 比对NXP官方mx6ullevk开发板原理图与ALIENTEK-ALPHA开发板原理图差异
查看NXP官方mx6ullevk开发板LCD显示屏与mx6ull芯片的硬件连接,打开
MCIMX6ULL-EVK-DESIGNFILES\MCIMX6ULL_CM_DESIGNFILES\Schematic\SPF-29364_B1.pdf文件,找到LCD显示屏的硬件连接,如下图所示:
然后在看下LCD显示屏的具体管脚,打开MCIMX6ULL-EVK-DESIGNFILES\MCIMX6ULL_BB_DESIGNFILES\Schematics\SCH-28616\spf-28616_e.pdf文件,找到LCD显示屏原理图,如下图所示:
然后查看ALIENTEK-ALPHA V2.1(IMX6ULL_ALPHA_V2.1.pdf文件)底板LCD显示屏连接引脚,如下如所示:
打开ALIENTEK-ALPHA核心板(IMX6ULL_CORE_V1.4.pdf文件)查看LCD显示屏与mx6ull芯片连接引脚,如下图所示:
对比官方mx6ullevk开发板与ALIENTEK-ALPHA开发板原理图可知,ALIENTEK-ALPHA开发板比官方mx6ullevk开发板少用一个LCD_RESET引脚,因此需要屏蔽掉uboot LCD驱动RESET复位引脚相关代码。
2 修改uboot中LCD驱动代码适配ALIENTEK-ALPHA开发板
2.1 修改uboot中LCD驱动所使用GPIO
1.打开mx6ull_alientek_emmc.c文件,找到LCD引脚定义数组,如下如所示:
将lcd_pads[]数组中LCD_RESET引脚定义屏蔽如下图所示:
2. 在mx6ull_alientek_emmc.c文件中找到do_enable_parallel_lcd()函数,屏蔽LCD复位操作,如下图所示:
2.2 修改uboot中LCD配置参数
1. 打开mx6ull_alientek_emmc.c文件,找到LCD参数,如下图所示:
2. LCD显示屏参数说明
上述代码中定义了一个变量displays,类型为display_info_t,这个结构体是LCD显示参数信息结构体,其中包含了LCD的分辨率、像素格式、地址等参数。display_info_t结构体的定义在arch/arm/include/asm/imx-common/video.h中如下图所示:
Pixfmt是像素格式,也就是一个像素点是多少位,如果是RGB565则就是16位,如果是RGB888就是24位,一般使用RGB888。结构体
display_info_t还有个mode成员变量,此成员变量也是个结构体为fb_videomode,这个结构体定义在include\linux\fb.h中定义如下:
结构体fb_videomode里面的成员变量为LCD的参数,这些成员变量的含义如下:
name:LCD名字,设置的需要和环境变量中的panel相等。
xres、yres:LCD X轴和Y轴像素数量
pixclock:像素时钟,每个像素时钟周期的长度
left_margin:HBP,水平后沿:在每行或每列的象素数据开始输出时要插入的象 素时钟周期数
right_margin:HFP,水平前沿:在每行或每列的象素结束到LCD 行时钟输出脉冲 之间的象素时钟数
upper_margin:VBP,垂直后沿:在垂直同步周期之后帧开头时的无效行数
lower_margin:VFP,垂直前沿:本帧数据输出结束到下一帧垂直同步周期开始之 前的无效行数 HPW(HSYNC plus width)行同步脉宽 单位:像素时钟周期
hsync_len:HSPW,行同步脉宽
vsync_len:VSPW,垂直同步脉宽显示一行的时间
vmode:大多数使用FB_VMODE_NONINTERLACED,不使用隔行扫描。
像素时钟:像素时钟就是RGB LCD的时钟信号,
显示一行所需要的时钟数就是:HSPW + HBP + HOZVAL + HFP。
显示一帧所需要的时钟数就是:VSPW+VBP+LINE+VFP个行时间,最终的计算公式:
Pclk=(VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)
以ALIENTEK-ALPHA开发板4.3寸LCD显示屏为例,显示一帧所需的时间为:
Pclk=(VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)
= (3+32+480+13)(48+88+800+40)
= 527976
= 514352
显示一帧图像需要514352个时钟数,显示60帧就是:60*514352=30861120≈31M
3. 修改uboot LCD参数适配ALIENTEK-ALPHA开发板4.3寸屏
根据ALIENTEK-ALPHA开发板4.3寸LCD屏参数,修改uboot中LCD参数,修改结果如下:
2.3 编译修改后的uboot源码
编译修改后的uboot源码,如下图所示:
2.4 烧写u-boot.bin文件验证
将编译好的u-boot.bin文件使用正点原子imxdownload烧写到SD卡中,烧写完毕将SD卡插入ALIENTEK-ALPHA开发板SD卡槽中,重启开发板观察LCD显示屏。结果如下图所示:
由上图可知LCD显示NXP官方Logo,uboot LCD驱动修改完成。