linux logo的格式【转】
本文转载自:http://blog.csdn.net/xiayu98020214/article/details/7394100
============================================
作者:yuanlulu
http://blog.csdn.NET/yuanlulu
版权没有,但是转载请保留此段声明
============================================
1.Linux如何显示logo。
首先,内核镜像无法存储图片格式的文件,只能将图片转化为数组,然后将数组编译进内核。
内核启动的时候将数组中的数据传给frambuffer,从而显示出来。
内核的logo图片放在driver/video/logo/下面,目前支持pbm/pgm/ppm格式的图片,图片的格式可以参考:
http://hi.baidu.com/small__child/blog/item/53ac957d1ac7d9350dd7da7c.html
编译内核的时候,内核会首先调用内核目录下的scripts/pnmtologo将driver/video/logo/目录下的图片生成包含图片数据数组的C语言代码,scripts/pnmtologo的代码是scripts/pnmtologo.c.
pnmtologo生成的c语言代码在driver/video/logo/下面,会被编译进内核。
2.logo数组的格式
在driver/video/logo/下面有一个名为logo_dec_clut224.c的文件,它由logo_dec_clut224.ppm转化而来,内容大致如下
static unsigned char logo_dec_clut224_clut[] __initdata = {
0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e,
0x16, 0x16, 0x16, 0x1a, 0x1a, 0x1a, 0x1e, 0x1e, 0x1e, 0x22, 0x22, 0x22,。。。。。。。。。。
};
static unsigned char logo_dec_clut224_data[] __initdata = {
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,.......................
};
const struct linux_logo logo_dec_clut224 __initconst = {
.type = LINUX_LOGO_CLUT224,
.width = 80,
.height = 80,
.clutsize = 183,
.clut = logo_dec_clut224_clut,
.data = logo_dec_clut224_data
};
其中logo_dec_clut224_clut是调色板数组,每三个成员(RGB)代表一种颜色。比如下标为0、1、2这个三个成员代表一种颜色。
这个数组的大小是3的整数倍,具体大小由图片决定,数组大小除以3也就是图片包含的颜色总数。图片使用的颜色总数不能大于224.
logo_dec_clut224_data数组的成员是指向调色板数组的索引,但是它的值比实际值大32(=0x20).
比如第一个成员的内容为0x20(用十进制表示是32),所以它代表图片的第一个像素的颜色是调色
板数组中0、1、2这个三个成员代表一种颜色.
索引值index与RGB的换算关系如下(clut表示调色板数组):
R = clut[(index-32)*3]
G = clut[(index-32)*3 + 1]
B = clut[(index-32)*3 + 2]
由于索引值由一个字节表示,因此最多表示256钟颜色。由于实际值又统一加了32(0x20),
所以只能表示224钟颜色了。所以logo图片的颜色种类数不能超过224钟。暂时还没看内核保
留32以下的索引怎么用的,望看到相关的代码的兄弟能告诉我一声。
3.内核如何生成C语言代
码内核调用内核目录下的scripts/pnmtologo将driver/video/logo/目录下的图片生成包含图片
数据数组的C语言代码,scripts/pnmtologo的代码是scripts/pnmtologo.c.
这个文件的内容比较长,简单说一下。它读取driver/video/logo/下的图片
并在driver/video/logo/下创建同名(后缀不同)的C语言文件。
把图片的数据转化为内核接受的格式存储在数组中。这些C语言文件会被编译进内核。
内核生成 logo_dec_clut224.c的命令选项在driver/video/logo/.logo_dec_clut224.c.cmd(注意开头是一个点)中,内容如下:
cmd_drivers/video/logo/logo_dec_clut224.c := scripts/pnmtologo -t clut224 -n logo_dec_clut224 -o drivers/video/logo/logo_dec_clut224.c drivers/video/logo/logo_dec_clut224.ppm
这是一行,没有换行符。
linux logo的格式【转】的更多相关文章
- Redhat Linux挂载NTFS格式的移动硬盘
Redhat Linux挂载NTFS格式的移动硬盘 1. 选择下载ntfs-3g的源码包或rpm包 http://www.tuxera.com/community/open-source-ntfs-3 ...
- Linux以列表格式显示块设备
Linux以列表格式显示块设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lsblk -l NAME MAJ:MIN RM SIZE RO TYPE MO ...
- Linux - Linux 终端命令格式
Linux 终端命令格式 目标 了解终端命令格式 知道如何查阅终端命令帮助信息 01. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相应 ...
- linux挂载ntfs格式的硬盘
发生了一件辣眼睛的操作,一个现场应用升级,由于跨度很大,不敢直接动,就把现场的数据库dump拿回来,在公司做写升级测试. 于是,联系现场的工程师把数据库dump导出来,放到网盘弄回来. ------- ...
- Linux内核镜像格式
<Linux内核镜像格式> Linux内核有多种格式的镜像,包括vmlinux.Image.zImage.bzImage.uImage.xipImage.bootpImage等. ➤k ...
- Linux下zip格式文件的解压缩和压缩
Linux下zip格式文件的解压缩和压缩 Linux下的软件包很多都是压缩包,软件的安装就是解压缩对应的压缩包.所以,就需要熟练使用常用的压缩命令和解压缩命令.最常用的压缩格式有.tar.gz/tgz ...
- Linux cooked-mode capture 格式转换
tcpdump抓包时,如果-i选项指定为一个网卡地址,那么抓取的数据包数据链路层是以太网头部:如果指定any,则以太网头部将被替换为linux cooked capture头部 # tcpdump - ...
- No-3.Linux 终端命令格式
Linux 终端命令格式 01. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相应功能的英文单词或单词的缩写 [-options]:选项 ...
- Linux 终端命令格式
Linux 终端命令格式 一.目标 了解终端命令格式 知道如何查阅终端命令帮助信息 二. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相 ...
随机推荐
- canvas 和 svg
对于开发人员而言,最直观的区别在于:1.对于画在Canvas上的部件,你需要处理重绘.而SVG则不用,你修改svg dom则系统会自动帮你重绘2.Hittest,即canvas不负责帮你侦测鼠标/触摸 ...
- Beta冲刺-星期五
这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 Three cobblers 这个作业的目标 完成项目最后的冲刺 ...
- 如何使windows系统ping通VMware下面的linux系统
引用http://www.linuxidc.com/Linux/2012-11/73749p2.htm 很多人在开始接触Linux或者是嵌入式开发的时候都会遇到一个难题,就是如何在Linux下ping ...
- 努比亚 Z17(Nubia NX563J) 解锁BootLoader 并刷入recovery
工具下载链接:https://pan.baidu.com/s/1mjEzcyG 备用下载链接:https://pan.baidu.com/s/1eTdx6Zg 密码:1d3r 本篇教程教你如何傻瓜式解 ...
- 机器学习:随机森林RF-OBB袋外错误率
文章讲解比较详细,且有Python代码,可以作为有用的参考. 原文链接:http://blog.csdn.net/zhufenglonglove/article/details/51785220 参 ...
- Android使用NDK---函数参数传递-基本类型和数组
参考链接:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/19/2145486.html 数据传输可分为 基本数据类型传输 和 引用数据类型的传 ...
- 从柯洁对战AlphaGo,看商业智能
[摘要]李开复赛前说,AlphaGo和李世石的人机大战是第一次,可能还有悬念,那今天的AlphaGo已经在围棋的世界中彻底甩开了人类,不再拥有任何其他的可能.并指出,AlphaGo和柯洁的比赛并非没有 ...
- 阿里巴巴矢量库IconFont__使用小录
使用阿里巴巴矢量库方法虽然不难,但本人记性不好,遂在次记录几笔 阿里巴巴矢量库地址:http://www.iconfont.cn/plus 阿里巴巴矢量库图标好处: 1:图标矢量化 2:自己总结:ic ...
- swiper和Navigator组件
<swiper class="index-banner" indicator-dots="{{true}}" autoplay="{{true} ...
- React Native - 使用Geolocation进行定位(获取当前位置、监听位置变化)
1,getCurrentPosition()方法介绍 static getCurrentPosition(geo_success, geo_error?, geo_options? 该方法用于获取当前 ...