您的位置:首页 > 编程语言 > Go语言

Dm355增加启动boot logo

2010-07-16 14:05 176 查看
在内核中增加启动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 display和attribute display使用的是FB实现的.不支持user buffer.所以选择OSD窗口显示logo.通过kconfig和makefile找出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的值,可能调整图片显示的位置.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: