移植NXP官方uboot 4.1.15_2.1.0到ALIENTEK-ALPHA开发板(二) ---LCD驱动修改

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)
= 527
976
= 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驱动修改完成。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值