AM335X将kernel中液晶屏的参数设置到uboot环境变量的解决方法

 

1. 原理

lcd参数默认在uboot和kernel中进行配置,这样做有一点不好的就是缺少灵活性。现在将lcd参数分离出来,以uboot环境变量的方式单独保存在flash里,在uboot和kernel初始化lcd时,从环境变量中读取lcd参数并进行配置,这样就不需要因为换屏而重新编译uboot和kernel,只需配置uboot下的lcd的环境变量即可。

图一 液晶屏显示参数-宽770.jpg

图一 液晶屏显示参数


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)   01

Invert   Hsync

eihs

(bool)   01

Invert   Vsync

eivs

(bool)   01

Program   HSYNC/VSYNC Rise or Fall

esync

(bool)   01

具体请参考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处理器设计的工业级核心板,广泛用于各种串口服务器,多串口网关等应用场景,有需要欢迎来询。


Tags: Array