Dm355增加启动boot logo

来源:互联网 发布:js处理jsonarray 编辑:程序博客网 时间:2024/06/02 02:32

       在内核中增加启动logo是比较简单的.make menuconfig->device driver->graphics support->logo configuration,里面的全都选上.编译内核的时候会将driver/video/logo中的图片转换为C语言的数组,编译进内核.所以如果需要更换图片,只需要将另外一张PPM图片覆盖就可以了.下面是PPM图片制作的过程.

1.       首先在linux中安装netpbm.我使用的是ubuntu 10.04,输入以下命令

a)         Sudo apt-get install netpbm

2.     首先使用 Photoshop 制作 png 文件(Windows),或者使用最简单的画图工具另存为png图片即可.

3.     再将png图片转成pnm

# pngtopnm uclinux_logo.png > uclinux_logo.pnm

4.     然后将pnm图片的颜色数限制在224 
# pnmquant 224 uclinux_logo.pnm > logo_linux_clut224.pnm

5.       最后将pnm图片转换成我们需要的ppm
# pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm

6.       logo_linux_clut224.ppm 替换 linux-2.6/drivers/video/logo 中对应的图像

Dm355具有三个display窗口,video display, osd display, attribute display.video display使用的是V4L2,显示缓存使用的是user buffer.osd displayattribute display使用的是FB实现的.不支持user buffer.所以选择OSD窗口显示logo.通过kconfigmakefile找出davinci FB实现文件是driver/video/davincifb.c文件.我们只看初始化部分,分别注册了四个窗口,呵呵.osd窗口就是在这里初始化的.:davincifb_init_window函数.这个函数的 return 0 上面加入下面这些语句:

#if !defined(CONFIG_FRAMEBUFFER_CONSOLE) && defined(CONFIG_LOGO)

       if(is_osd_win(info))

       {

              if (fb_prepare_logo(info, FB_ROTATE_UR)) {

                     /* Start display and show logo on boot */

                     fb_set_cmap(&info->cmap, info);

 

                     fb_show_logo(info, FB_ROTATE_UR);

              }

       }

#endif

重新编译内核,启动dm355 EVM,在电视机的左上角将显示一张图片.呵呵,成功了.

通过修改fbmem.c中的fb_show_logo函数的image.dx,        image.dy的值,可能调整图片显示的位置.

原创粉丝点击