原创 linux开机logo制作 转

2010-2-23 16:12 6837 5 6 分类: MCU/ 嵌入式

【从制作logo到LCD显示或者VGA显示logo】
1、制作logo的方法:
 首先选择一个自己喜欢的图片,然后通过GIMP软件将该图片保存为.png格式,
 变换方式这个就不说了(very easy),比如保存为linuxlogo.png.
然后将该图片传入到装有Linux PC比如(ubuntu),按照以下顺序你就可以制作一个你喜欢logo
前提你必须安装以下的工具(pngtopnm,pnmquant,pnmtoplainpnm)

$ pngtopnm linuxlogo.png > linuxlogo.pnm
$ pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
$ pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm


或者


 $bmptoppm pic.bmp > temp1.ppm //生成ppm
  $ppmquant 224 temp1.ppm > temp2.ppm  //转换成224颜色
  $pnmnoraw temp2.ppm > logo.ppm   //转换成ascii格式



这样您制作的logo就已经成功了,将linuxlogo224.ppm
拷贝到/drivers/video/logo文件夹中的根据你的平台具体使用的哪个logo进行命名,
由与我用的是RedHat linux,所以我取的名字为logo_linux_clut224.ppm,友情提醒将原有的logo保存。


其中在./drivers/video/logo/下有XXX_XXX_XXX.c和XXX_XXX_XXX.o文件是在进行make编译之后生成的,可以将制作好的.ppm文件拷贝进行去替换成原来的logo文件之后,使用make clean SUB_DIR=./drivers/video/logo/来清除logo目录下的.c和.o文件。
这样你的logo就完全制作好了,但是有这一点还是不够的,你必须在内核中选择logo,接下来我们来看如何配置内核

2、配置logo选项
 在内核路径下执行make menuconfig


开发板上开启logo显示的选项


Device Drivers --->Character devices ---》Bootup logo



 a、选择虚拟控制台为控制台显示驱动做准备
   Device Drivers --->Character devices ---> Virtual terminal
   

  •    Support for console on virtual terminal
     b、选择虚拟控制台显示驱动
       Device Drivers --->Graphics support --->下有这个选项Console display driver support --->
       根据你的硬件选择由Framebuffer还是VGA
         
  • Framebuffer Console support或者
         
  • VGA text console
     c、Device Drivers --->Graphics support --->
       <*> Support for frame buffer devices  
         <*> MXC Framebuffer support下选择是VGA还是TVOUT
               
  • tvout CH7024 on MX27 //TVOUT
               
  • support VGA daughter //VGA
      当然以上的配置选项,因平台而异会有些小的差别。
      做好以上两个步骤,你就可以重新编译内核,将其烧到开发板,接VGA或者TVOUT显示。
      这样你可以看到你自己制作的logo,你可以发现在logo的左上角有一个闪动的光标,接下来我们说说如何将这个光标去除。


    3、如何将开机logo中的光标去除
     在内核的当前目录进入到drivers/video/console/fbcon.c文件
     将static void fb_flashcursor(void *private)制成空函数如下


        386 static void fb_flashcursor(void *private)
        387 {
        388 #if 0 //modify by yejj for clear cursor of lcdc


        389 struct fb_info *info = private;
        390 struct fbcon_ops *ops = info->fbcon_par;
        391 struct display *p;
        392 struct vc_data *vc = NULL;
        393 int c;
        394 int mode;
        395
        396 acquire_console_sem();
        397 if (ops && ops->currcon != -1)
        398 vc = vc_cons[ops->currcon].d;
        399
        400 if (!vc || !CON_IS_VISIBLE(vc) ||
        401 registered_fb[con2fb_map[vc->vc_num]] != info ||
        402 vc->vc_deccm != 1) {
        403 release_console_sem();
        404 return;
        405 }
        406
        407 p = &fb_display[vc->vc_num];
        408 c = scr_readw((u16 *) vc->vc_pos);
        409 mode = (!ops->cursor_flash || ops->cursor_state.enable) ?
        410 CM_ERASE : CM_DRAW;
        411 ops->cursor(vc, info, mode, softback_lines, get_color(vc, info, c, 1),
        412 get_color(vc, info, c, 0));
        413 release_console_sem();
        414 #endif
        415 }


    同样的方法将函数static void fbcon_cursor(struct vc_data *vc, int mode)用空函数替换如下


       1304 static void fbcon_cursor(struct vc_data *vc, int mode)
       1305 {
       1306 #if 0 //modify by yejj for clear cursor of lcdc


       1307 struct fb_info *info


     


    另一种禁止光标的方法:


    drivers/video/console/Makefile



    #obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o

    obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o



    编译遇到一个soft_cursor没有定义的问题问题,注释代码:

    drivers/video/console/bitblit.c


    //ABING

    //      if (err)

    //              soft_cursor(info, &cursor);



    【注意】:   
    Linux Logo制作工具 : LogoMaker.tgz 4.7MB
    http://www.arm9.com.cn/downloads.htm
    LogoMakers可以让你十分方便地制作linux logo文件,它基于Fedora 9平台开发并使用。其使用方法十分简单,打开一个图形文件(Jpeg, bmp或者png格式),然后点转换按钮就可以了;它会固定输出文件名:logo_linux_clut224.ppm,该文件一般位于内核源代码目录kernel-src/drivers/video/logo中,替换之后再重新编译一下内核就可以看到你所喜爱的linux logo了。
        注意:LogoMaker程序实际调用了netpbm工具组,因此要确保你的PC Linux系统安装了此工具,方可转换成功。


     


    ubuntu下转换PPM:


    sudo get-apt install netpbm


    bmp图片使用bmptoppm.jpg,png,gif都有相应的topnm工具。


       $bmptoppm pic.bmp > temp1.ppm //生成ppm
       $ppmquant 224 temp1.ppm > temp2.ppm  //转换成224颜色
       $pnmnoraw temp2.ppm > logo.ppm   //转换成ascii格式
    logo.ppm就是需要的图像了。


    其它方案请参考别人写的博客:


    http://blog.chinaunix.net/u3/110679/showart_2170160.html


    http://blog.chinaunix.net/u2/67203/showart_1277576.html


    另外我做的最简单的制作方法是:


    自己利用photeshop制作一个和自己LCD屏幕大小相当的图片,并保存成.png格式,如果不是PNG格式的图片,可以用GIMP转换一下:
    首先将png图片转成pnm
    # pngtopnm utulinux_logo.png > utulinux_logo.pnm
    然后将pnm图片的颜色数限制在224
    # pnmquant 224 utulinux_logo.pnm > utulinux_logo_224.pnm
    最后将pnm图片转换成我们需要的ppm
    # pnmtoplainpnm utulinux_logo_224.pnm > utulinux_logo_224.ppm
    然utulinux_logo_224.ppm替换linuxsrc/drivers/video/logo中对应的图像就OK了

    注意:其中在./drivers/video/logo/下有XXX_XXX_XXX.c和XXX_XXX_XXX.o文件是在进行make编译之后生成的,可以将制作好的.ppm文件拷贝进行去替换成原来的logo文件之后,使用make clean SUB_DIR=./drivers/video/logo/来清除logo目录下的.c和.o文件。

    最后直接make编译,编译好后下载内部,你将会看到相应的效果。

     
  • 文章评论1条评论)

    登录后参与讨论

    用户571671 2010-2-23 16:52

    不错的办法,很详细哈,正在找这方面的知识,你这里很全,收藏了,有空大家交流哈
    相关推荐阅读
    用户461645 2010-05-04 18:22
    TI的davinci和omap资源--转帖,也是为了方便自己
    TI网站资源,建议大家注册一个my.ti.com,方便下载一些软件开发工具和资料 TI中文主页: http://focus.ti.com.cn/cn/tihome/docs/homepage.tsp ...
    用户461645 2010-03-06 16:49
    把控制台(console)交给LCD
    这两天一直想让我的开发板挣脱PC机的控制,把控制台移到LCD上去,然后用USB键盘作为输入,在LCD上构成一个终端。此刻有了一点点进展,于是把她记录下来,虽然我的开发板现在还不能用USB键盘作为输入设...
    用户461645 2010-03-01 10:52
    内核(2.6.14) + 根文件系统 + Qt4 移植 for S3C2410
    TARGET<?XML:NAMESPACE PREFIX = O />CPU:   S<?XML:NAMESPACE PREFIX = ST1 />3C2410XSDRAM: ...
    用户461645 2010-02-26 16:56
    windows xp平台安装Qt4.5开发环境
    测试环境debian squeeze系统上virtualbox3.0.8中的windows xp sp3Qt的官方站点现在是http://qt.nokia.com/下载sdk在官方站点选择LGPL/F...
    用户461645 2010-02-24 11:58
    承接linux开机logo制作
    针对freescale 的I.mx27项目,要去掉屏幕的光标,可以直接在make menuconfig中去掉drivers---->Graphis support----->console...
    用户461645 2010-02-23 17:09
    不用启动盘的安装方法
    不用制作软盘。空出一个大于3g的空间,格式为fat32,最好是最后一个分区。确保md5正确后,把iso文件放到c盘下,不要放到任何文件夹中,直接放到根目录下。把dosutils解到根目录下,再把vml...
    我要评论
    1
    5
    关闭 站长推荐上一条 /2 下一条