1.开机logo(bootlogo)生成过程(当然,得先安装转换工具):
$ pngtopnm logo_linux_clut224.png > logo_linux_clut224.pnm
$ pnmquant 224 logo_linux_clut224.pnm > logo_linux_clut224.pnm
$ pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm
2.logo_linux_clut224.ppm
其实是一个灰度级别为224(1个RGB像素点使用1字节来表示,并从0x20以上)的图片; 在配置启用logo,并编译内核时,会利用
logo_linux_clut224.ppm生成包含开机logo数据的源码logo_linux_clut224.c,该源码保存了图像数据数组,并
在该源码中记录了图像的 "长*宽" 位数;
显示过程如下:
a.取logo数据:
... fbcon_prepare_logo(){fbcon.c} -> fb_prepare_logo() {fbmem.c} -> fb_find_logo() {取数组地址并存于全局变量fb_logo中} ...
... fb_show_logo(){fbmem.c} -> fb_show_logo_line(){此函数中后面还有一个显示额外图片的函数,应该还可以实现多个LOGO垂直并列显示} -> fb_do_show_logo()
->
info->fbops->fb_imageblit(){此函数指针指向特定平台的fb驱动中定义的,如mxsfb.c下指向了
cfb_imageblit(){cfbimgblt.c}}
-> color_imageblit(){此函数中将224阶的图像数组展成16bpp或32bpp} ...
3.并不是所有的LCD屏都有HSYNC和VSYNC,有一些只需通过DEN+CLK即可,如奇美at050tn33,该屏调试时刚开始时,显示的图像有些点会异常,需将clk的下降沿延迟6~8ns可解决.
阅读(1989) | 评论(0) | 转发(0) |