新闻  |   论坛  |   博客  |   在线研讨会
Linux启动图标DIY(定制logo的方法)
tongxin | 2009-04-12 16:46:17    阅读:817   发布文章

ARM-Linux启动时会先在LCD左上角显示一个MIZI Linux的蜻蜓图案。这个也就是俗称的Logo。
%A     如果你很有个性,那么你一定会想把这个Logo换成自己喜欢的图案。Let‘s go!
%A
%A     首先分析一下Logo的显示代码:
%A     不难发现Logo显示是在加载显示驱动fb后由kernel/drivers/video/fbcon.c中的fbcon_show_logo函数来完成的。
%A     fbcon_show_logo函数中有很多兼容性代码,不是都会用到的!我们用的是TFT真彩屏,估计应该是CONFIG_FBCON_CFB24之类的。
%A     再仔细看一下,这里用到的显示数据均来自kernel/include/linux/linux_logo.h。这里同样也有一些兼容性的数据,其中对我们有用的是:
%A linux_logo_red[]   ―― 调色板中的红色分量
%A linux_logo_green[] ―― 调色板中的绿色分量
%A linux_logo_blue[]  ―― 调色板中的蓝色分量
%A linux_logo[]       ―― Logo图案的点阵
%A      在fbcon_show_logo里只做了256色的显示,所以要先设置一个RGB调色板。这里的调色板是从0x20色开始编的,所以实际好象只有最多 224色的显示。linux_logo.h里默认是做了一个214级的灰度调色板,想要彩色的话就自己修改吧!(注意从0x20开始,0-0x1f的32 种颜色不能用)
%A     再看linux_logo[],这是Logo图案的点阵。因为是256色的图,所以每点为一个Byte。Logo图案是 80*80大小,所以这里总共有6400 Byte。一共是800行,每行8 Byte即8 Point,每10行数据对应Logo图案中一行。可以先自己试试放一些简单图形进去显示看看。(同样注意颜色要从0x20开始,0-0x1f的32种颜色是不确定的)
%A     当然你不会只想显示一些简单图形,而是希望能把收藏的漂亮图片放上去。这个就有点难度了,因为没有现成的工具好用。建议先找个比较好用的图象编辑软件吧(我用的PhotoShop)。这里提供两个方法加工图片:
%A   1) 先搞一个256色调色板,前面32个颜色空着,把后面224种颜色设一下吧。注意要尽量把颜色选全一些,要能覆盖到整个颜色区域上。这样就有一个通用的调色板,可适用所有图片,但颜色的真实性稍差。然后把自己的图片打开,先将颜色设置到RGB空间里,然后裁剪/缩放到80*80象素的尺寸,再将颜色优化到先前定义好的调色板里,图片就加工好了。
%A   2)不用通用调色板,打开自己的图片,先将颜色设置到RGB空间,裁剪/缩放到80*80象素的尺寸,然后指定优化为224色图象。这样图片就加工好了,但其调色板就是专用的,不适合用到其他图片里。
%A      不管用那一种方法加工图片,最终还需要把数据放到我们的linux_logo.h里。这也是一个比较麻烦的事。调色板可以直接保存为文件,然后自己做个小程序读出来就可以了。图片的点阵比较难取,当然也可以自己做个程序去取屏幕上的点,不过比较困难。建议可以将图片保存为TIF之类的非压缩格式,然后可以从图象文件中的固定位置取点阵数据。
%A     再接下来就是编译kernel了。编译好用“load flash kernel x”下载到Flash里。重新启动,是不是看到你自己的图片了?祝你早日成功!
%A%A
%A

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
最近文章
寂寞如雪
2009-05-19 19:01:18
夜色花
2009-05-19 18:56:22
没有爱可以重来
2009-05-19 18:54:59
推荐文章
最近访客