ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植

一、X210 的 uboot 中 LCD 操作分析

1、新旧版本开发板的 LCD 模组差异

(1) 2015.11 月初之前购买的 X210 开发板都属于老版本,型号是 X210V3;之后购买的开发板都是新版本的,型号是 X210V3S


(2) 两个开发板主要电路是完全一样的,不同主要有 3 点:一个是把拨码开关换成了短路帽;另一个是 LCD 分辨率从 800*480 升级成 1024*600;第三个是触摸屏芯片型号换了。


2、背光电路分析

(1) LCD 的背光源有 2 种设计。一种是简单设计,背光只能点亮和熄灭两种状态,不能调亮度;另一种设计类似手机屏幕可以调节亮度。

第一种设计很简单,就是开和关。第二种模式比较复杂,需要一个额外的 PWM 调光 IC 来支持,X210 的 LCD 模组上使用 MP3202 芯片来做调光


(2) 分析原理图和 MP3202 的数据手册,可以得出结论:

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第1张图片

《x210cv3.pdf》

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第2张图片
《MP3202.pdf》

第一:PWMTOUT0(GPD0_0)接在了 IC 的 FB 引脚上,SoC 应该通过该引脚输出一个频率合适的 PWM 波形给调光 IC,这个波形的占空比 就会控制 MP3202 输出的电流大小,从而控制屏幕亮度。


ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第3张图片

《x210bv3.pdf》

第二:L_DISP(DISP、SYS_OE、GPF3_5)接在了 MP3202 的 EN 引脚上,SoC 应该给该引脚一个高电平来让背光工作,或者给一个低电平来让背光不工作。


(3) 综合分析:背光要点亮,要同时满足以上两个条件。GPD0_0 要输出低电平或者 PWM 信号,同时 GPF3_5 要输出一个高电平。一般来说,我们在 uboot 中都把 GPD0_0 设置成输出模式,然后输出低电平来点亮背光。


3、X210 的 uboot 中 LCD 代码分析

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第4张图片

(1) 在 uboot-jiuding/board.c 中 init_sequence 中的 display_banner 中的 open_backlight 函数中,给 GPF3_5 输出高电平。但是这个其实是可以省略的,注释掉这一句 uboot 的 LCD 显示 照样正常的,主要原因是 后面 LCD 操作的部分还会再做一遍的。


ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第5张图片


(2) 真正的初始化 LCD 系统 并且显示 logo, 是在 start_armboot 函数的后段的 x210_preboot_init 中。这个函数纯粹是九鼎在移植时添加的。如果我们自己移植 uboot 可以考虑自己去添加。

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第6张图片


二、logo 显示和 LCD 屏幕分辨率适配

1、LCD 驱动 mpadfb.c 分析

(1) fb_init 函数给 framebuffer 相关的数据结构赋值。左值的 info 是一个结构体,这个结构体描述 fb 驱动中的硬件设备参数的,右值的 lcd 是自己定义的一个数据结构,里面的值都是我们人为配置给驱动体系的。

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第7张图片


(2) lcd_port_init 看名字是 lcd 端口的初始化,端口就是 GPIO,所以这个函数是在初始化 LCD 相关的 SoC 的引脚。

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第8张图片


(3) lcd_reg_init 看名字是 LCD 的寄存器的初始化,就是 SoC 的 LCD 控制器中的那些寄存器的初始化。

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第9张图片


(4) 以上三个函数调用执行完后,LCD 初始化就结束了。然后向 LCD 写东西,就能显示了。但是你要注意背光是否被点亮了。后面剩下的事情就是写东西和开背光两个了。


(5) display_logo(&s5pv210_fb); 这个函数负责把 logo 图片写到 LCD 的 fb 中去。backlight_brigness_init(1); 负责开背光。

ARM uboot 的移植6 -从 uboot 官方标准uboot 开始移植_第10张图片


2、解决新版开发板X210BV3S的logo显示问题

(1) 用旧版本的 uboot.bin下载到新版开发板中,发现能工作,但是屏幕 logo 显示不正常(屏幕下面有一条显示不正常的,然后 logo 是显示出来的但是不在屏幕正中间)。


(2) 原因分析:主要原因新版开发板 LCD 屏幕的分辨率是1024*600,而旧版分辨率是800*480。所以旧版本的 uboot 在新版开发板上运行时,就会造成屏幕填充不满(现象就是下面有一排显示不正常的),还会造成显示内容位置偏移,本来在中间结果偏左了。

(3) 解决方案:很简单,在 uboot 中将 LCD 的参数部分,分辨率改成 1024*600 即可


3、logo 显示代码分析

(1) logo 是以工具将图片做成二进制的字符串数据。

(2) 显示时,通过计算将 logo 代表的矩形放在屏幕正中央。

(3) 绘图时先绘制背景色,然后在 logo 矩形中写入 logo 图片内容即可。


源自朱有鹏老师.

你可能感兴趣的:(ARM,S5PV210,朱有鹏,linux,ARM,arm开发,s5pv210)