linux logo持续时间,LINUX 启动logo 总结
LINUX 启动logo 总结
近在imx6上需要调试linux下启动logo。其实linux启动logo 以前没少调,但这次弄了好久,也发现以前调过的没有积累。
之所以这次logo弄了很久是因为fsl bsp 实现keep uboot logo to kernel ,但又在我使用的BSP上没有完全弄好。话说那个还是
有很牛逼,简单来说就是uboot实现好logo,然后kernel 中不需要对相应的显示时钟进行重新初始化,还有很多其他的类似一样
的道理,就是相信uboot中已经弄好了。废话到此。说说一般的linux 启动logo。
一,企鹅法(224级,或者224色)
企鹅图片的文件名logo_linux_clut224.ppm,在driver/video/logo目录下。采用netpbm 工具生成想要替换的logo,这里要注
意一下图片的尺寸大小 。
例如将PNG格式的图片转换成logo_linux_clut224.ppm:
# pngtopnm my.png > my.pnm
# pnmquant 224 my.pnm > logo224.pnm
# pnmtoplainpnm logo224.pnm > logo_linux_clut224.ppm
Note: 可能会出现如下错误提示
drivers/video/logo/logo_linux_clut224.ppm: Binary PNM is not supported
Use pnmnoraw(1) to convert it to ASCII PNM
这个可能是因为你的ppm 图片是bin格式,需要转换成ascii 格式。方法如下:
pnmnoraw logo_linux_clut224.ppm > logo_linux_clut224_ascii.ppm
替换目录中的文件重新编译就OK了。当然这时候你会发现显示位置需要调整。默认是左上角对齐。产品中可能更多是中心对齐。
中心对齐的方法。
1,修改drivers/video/fbmem.c fb_show_logo_line函数中,修改如下
//image.dx = 0; //左上角 x起点
//image.dy = y; //调用时指定的参数 y起点
image.dx = (info->var.xres / 2) - (image.width / 2); //中心
image.dy = (info->var.yres / 2) - (image.height / 2); //中心
image.width = logo->width;
image.height = logo->height;
Note:info->var.xres和info->var.yres是分辨率大小,image.width,image.height是logo图片的大小。
起点位置的修改
2,修改drivers/video/console/fbcon.c fbcon_prepare_logo函数里,修改如下
logo_height = fb_prepare_logo(info, ops->rotate);
logo_height += (info->var.yres / 2) - (logo_height / 2);
结束位置的修改
这里需要补充一点,就是关于boot logo 的配置与光标 cursor的问题(第二种方法里面说吧)。
Device Drivers ---> Graphics support --->
[*]Boot logo --->
[*] Standard 224-color Linux logo
支持 kernel console,不选看不到 logo:
Device Drivers ---> Graphics support --->
Console display driver support --->
Framebuffer Console support
二,真彩色TFT LINUX LOGO (使用此方法比较简单,更能满足客户的需求)
显示图片可以是rgb565 ,不局限于原来的224色 ,方法相当于直接将要显示的图片输出到Framebuffer。记录一下方法吧。
1, 生成狸猫----增加三个文件。
true_lanrry_logo.h //LCD显示信息,深度及声明
lanrry_logo_data.h //定义的图片的数据,我采用ImageLCD工具取模
framebuffer_logo.c //实现打印数据到framebuffer
均放在drivers/video目录下,并且修改Makefile ,添加framebuffer_logo.c。
2,狸猫换太子----修改drivers/video/fbmem.c里的代码
a,添加 #define TRUE_COLOR
b,修改如下:
+#ifdef TRUE_COLOR
+#include "truecolor_logo.h"
+#endif
c,修改函数int fb_show_logo(struct fb_info *info, int rotate)
{
//狸猫换太子
+#ifdef TRUE_COLOR
+fb_show_truecolor_logo(info);
+return 1;
#else
int y;
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
num_online_cpus());
num_online_cpus cpu 数量,linux logo 企鹅数量。
d,修改fb_prepare_logo函数以改变高度,该函数的后return处改为
#ifdef TRUE_COLOR
return fb_prepare_extra_logos(info, YRES, YRES);
#else
return fb_prepare_extra_logos(info, fb_logo.logo->height, yres);
#endif
重新编译完之后,就能全部显示
这种方法是采用替换boot logo 。全屏显示的时候,也是会发现有光标问题。解决方法如下:
修改drivers/video/console/bitblit.c文件的bit_cursor函数,在该函数结尾处的 。
if (err)
soft_cursor(info, &cursor);
改为
if (0)
soft_cursor(info, &cursor);
linux logo持续时间,LINUX 启动logo 总结相关推荐
- android 程序 读logo,制作Android启动Logo
一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/video/console/fbcon.c文件 将static void fb_flashcursor(voi ...
- 神舟Z7-SL7S3(蓝天P650RG/RE准系统)刷BIOS解决CPU的uncore功耗大于10W,修改启动Logo详细步骤
前言 刷BIOS慎重,小白最好别搞了.为了这么点强迫症搞坏了,还要修理.如果搞坏了简易去B站UP主笔记本维修厮[手动滑稽],本教程作用是探讨和记录不负任何责任. BIOS和EC是搭配的最好一起刷,先E ...
- 玩转mini2440开发板之【制作和修改linux启动logo图片】
今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...
- 制作.ppm格式Linux内核启动logo
在做的产品中,采用默认的小企鹅做logo肯定是不行的,所以一定要替换个像样的企业logo图片! 以前做过Linux启动Logo,时间太久,给忘了,所以再从新研究下. 经过在网上的搜索,和实际验证,制作 ...
- 修改Linux内核的启动Logo和禁用启动光标
Linux内核下使用的图片文件类型是pnm和PPm格式的,所以在开始介绍修改linux内核启动LOGO之前, 1,先需要介绍一下怎么样设计自己开始logo的ppm图片,首先选择一张png格式的图片 使 ...
- linux系统中怎样抓logo,linux启动成功修改logo
1:获得.png图片,可以截图获得,千万注意图片不能大于lcd屏幕,最好小点,大了有时显示不了.我几次没有显示就是图片原因. 2 使用Linux命令将图片转换为ppm图片:也可以使用logoma ...
- 更换Linux启动logo的总结
更换Linux启动logo的总结 参考过如下资料,对此非常感谢: https://www.linuxidc.com/Linux/2010-12/30224.htm https://blog.csdn. ...
- linux显示启动logo源码分析以及修改显示logo
1.linux显示启动logo整个流程分析 (1)logo图片在内核源码中是以ppm格式的文件保存,在编译内核时会把ppm格式的文件自动转换成.c文件,在c文件中会构造一个struct linux_l ...
- Linux内核启动logo
之前在分析samsung的fb驱动代码的时候,其中有一段代码是处理内核logo显示相关的,今天就内核logo这个话题来聊一聊! 一.处理内核logo显示相关的代码在哪? 回到samsung的fb驱动代 ...
最新文章
- 学习全基因组测序数据分析2:FASTA和FASTQ
- 最难学编程语言排汗榜
- QC安装与运行中的问题汇集
- 怎么看电脑配置高不高_电脑店学徒写的电脑配置单处处都是“亮点”,能“气死”师傅...
- 软件设计:表达组织中的上下级关系
- 谈谈有什么方法可以快捷实现多场景下的线程安全
- DATEDIFF() 函数返回两个日期之间的天数
- 【QT】QT从零入门教程(十七):QT+OpenCV+VS 打包exe
- atomic、锁、多线程
- kafka配置项host.name advertised.host.name
- java点击菜单项弹出对话框_java怎么通过点击菜单弹出对话框
- 工业路由器和家用路由器有什么区别?
- java jco_JAVA通过JCo连接SAP
- Unity小游戏教程系列 | 创建小型太空射击游戏(4)
- 【草莓音乐节】现场美女大放送
- 名帖236 俞和 行书《次韵韩伯清见寄之什凡五首》
- Java中的枚举类是什么?enum关键字怎么使用?
- 《C系列-实践相关》C语言十
- 网络电视经常出现服务器无响应,为什么pps总是显示服务器未能响应停止播放
- 【C++】C++11简介 | 列表初始化 | 声明 | 范围for