AM335X将kernel中液晶屏的参数设置到uboot环境变量的解决方法
1. 原理
lcd参数默认在uboot和kernel中进行配置,这样做有一点不好的就是缺少灵活性。现在将lcd参数分离出来,以uboot环境变量的方式单独保存在flash里,在uboot和kernel初始化lcd时,从环境变量中读取lcd参数并进行配置,这样就不需要因为换屏而重新编译uboot和kernel,只需配置uboot下的lcd的环境变量即可。
图一 液晶屏显示参数
2. UBOOT下实现lcd参数分离的具体方法
LCD环境变量配置在config-lcd-env-RecordedScript.vbs文件中
LCD参数 | 环境变量名称 | 取值范围 |
Name | ename | (string) !NULL |
Refresh | erefresh | (u32) > 1 |
Pixels Per Line | ewidth | (u32) > 1 |
Lines Per Panel | eheight | (u32) > 1 |
Horizontal Sync Pulse Width | ehsw | (u32) > 1 |
Horizontal Front Porch | ehfp | (u32) > 1 |
Horizontal Back Porch | ehbp | (u32) > 1 |
Vertical Sync Pulse Width | evsw | (u32) > 1 |
Vertical Front Porch | evfp | (u32) > 1 |
Vertical Back Porch | evbp | (u32) > 1 |
Invert Pixel Clock | eipc | (bool) 0,1 |
Invert Hsync | eihs | (bool) 0,1 |
Invert Vsync | eivs | (bool) 0,1 |
Program HSYNC/VSYNC Rise or Fall | esync | (bool) 0,1 |
具体请参考RASTER_TIMING_0,RASTER_TIMING_1,RASTER_TIMING_2寄存器
3. LCD初始化代码在0001-sm-uboot-lcd-logo.patch文件中
3.1 增加CONFIG_SHOW_LOGO配置选项
参考include/configs/am335x_evm.h
3.2 修改LCD管脚配置
参考board/ti/am335x/mux.c
3.3 时钟初始化时增加LCD部分
参考arch/arm/include/asm/arch-ti81xx/cpu.h
3.4 获取LCD参数
参考common/show_logo.c中get_fb_param()函数
3.5 初始化LCD
参考common/show_logo.c中fb_init()和dma_init()函数
4. KERNEL下实现lcd参数分离的具体方法
4.1 LCD环境变量配置
●配置lcdcfg环境变量,参考config-lcd-env-RecordedScript.vbs
●将lcdcfg变量添加到内核启动参数中,参考boot-from-nand-RecordedScript.vbs
4.2 LCD初始化代码在0001-sm-kernel-lcd-logo.patch文件中
●添加CONFIG_FB_USE_ENV配置选项,参考drivers/video/Kconfig
●获取LCD参数及LCD初始化,参考drivers/video/da8xx-fb.c
维芯科作为TI的官方合作伙伴,专业于TI MPU处理器多年,我司的AM335x核心板,基于TI AM335x处理器设计的工业级核心板,广泛用于各种串口服务器,多串口网关等应用场景,有需要欢迎来询。