Chinaunix首页 | 论坛 | 博客
  • 博客访问: 271459
  • 博文数量: 42
  • 博客积分: 485
  • 博客等级: 下士
  • 技术积分: 482
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-26 19:33
文章分类
文章存档

2017年(1)

2016年(4)

2015年(8)

2014年(3)

2013年(4)

2012年(3)

2011年(19)

我的朋友

分类: LINUX

2014-01-14 22:27:28

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可解决.

阅读(1963) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~