一般 uboot 中修改驱动基本都是在 xxx.h 和 xxx.c 这两个文件中进行的,xxx 为板子名称,
比如 mx6ull_hyq_emmc.h 和 mx6ull_hyq_emmc.c 这两个文件.
目录
一般修改 LCD 驱动重点注意以下几点:
①、LCD 所使用的 GPIO,查看 uboot 中 LCD 的 IO 配置是否正确。
②、LCD 背光引脚 GPIO 的配置。
③、LCD 配置参数是否正确。
1.检查LCD的GPIO管脚
检查LCD的GPIO管脚,包括复位、背光的复用功能以及电气属性

LCD管脚初始化,复位LCD,打开背光

2.检查LCD配置参数是否正确


需要注意的是像素时钟pixclock需要转换成皮秒

像素时钟的计算

3.修改环境变量panel
修改mx6ull_hyq_emmc.h文件默认环境变量中的panel为TFT4384,即LCD配置参数中mode.name

LCD的初始化是通过环境变量panel来选择的,如果您有多块不同分辨率的屏幕,那么下图这里可以添加多块屏幕的信息,每块屏幕的mode.name不能相同;如果mode.name和panel的值相同则选中当前屏幕,因此可以在驱动中兼容多块屏幕,通过设置环境变量panel来切换屏幕
struct display_info_t const displays[]是一个全局的变量,.enable = do_enable_parallel_lcd是LCD的硬件初始化函数



如果环境变量panel匹配不成功则会输出 printf("unsupported panel %s\n", panel);
屏幕切换(LCD驱动选择)可通过以下命令来切换:
setenv panel "xxx"
saveenv
reset
4.修改uboot启动logo
在tools下有一个bmp_logo.c文件,bmp_logo这个工具专门是将bmp图片的图片数据提取出来保存到bmp_logo_data.h的unsigned char bmp_logo_bitmap[]数据中,初始化LCD到刷logo的函数调用过程如下
drv_lcd_init()
-->lcd_init()-
- ->lcd_clear()
-->lcd_logo()
-->lcd_logo_plot()-->bmp_logo_bitmap
修改logo,首先tools/logos/文件夹下保存了各种logo的bmp图片

其次是通过tools/下的makefile文件中的LOGO_BMP来选择logos文件夹下的哪一张bmp图片做uboot的默认启动logo

比如现在是选择freescale.bmp这张图片,那么有如下两种方法来修改logo
1.将新的bmp图片来替换tools/logos/文件夹下freescale.bmp
2.将新的bmp图片添加到tools/logos/文件夹下,并修改tools文件夹makefile文件中LOGO_BMP来选择新的bmp图片
注意新的bmp图片尺寸最好和原来的保持一致,并且像素位深不能超过8bit