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 总结相关推荐

  1. android 程序 读logo,制作Android启动Logo

    一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/video/console/fbcon.c文件 将static void fb_flashcursor(voi ...

  2. 神舟Z7-SL7S3(蓝天P650RG/RE准系统)刷BIOS解决CPU的uncore功耗大于10W,修改启动Logo详细步骤

    前言 刷BIOS慎重,小白最好别搞了.为了这么点强迫症搞坏了,还要修理.如果搞坏了简易去B站UP主笔记本维修厮[手动滑稽],本教程作用是探讨和记录不负任何责任. BIOS和EC是搭配的最好一起刷,先E ...

  3. 玩转mini2440开发板之【制作和修改linux启动logo图片】

    今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...

  4. 制作.ppm格式Linux内核启动logo

    在做的产品中,采用默认的小企鹅做logo肯定是不行的,所以一定要替换个像样的企业logo图片! 以前做过Linux启动Logo,时间太久,给忘了,所以再从新研究下. 经过在网上的搜索,和实际验证,制作 ...

  5. 修改Linux内核的启动Logo和禁用启动光标

    Linux内核下使用的图片文件类型是pnm和PPm格式的,所以在开始介绍修改linux内核启动LOGO之前, 1,先需要介绍一下怎么样设计自己开始logo的ppm图片,首先选择一张png格式的图片 使 ...

  6. linux系统中怎样抓logo,linux启动成功修改logo

     1:获得.png图片,可以截图获得,千万注意图片不能大于lcd屏幕,最好小点,大了有时显示不了.我几次没有显示就是图片原因. 2 使用Linux命令将图片转换为ppm图片:也可以使用logoma ...

  7. 更换Linux启动logo的总结

    更换Linux启动logo的总结 参考过如下资料,对此非常感谢: https://www.linuxidc.com/Linux/2010-12/30224.htm https://blog.csdn. ...

  8. linux显示启动logo源码分析以及修改显示logo

    1.linux显示启动logo整个流程分析 (1)logo图片在内核源码中是以ppm格式的文件保存,在编译内核时会把ppm格式的文件自动转换成.c文件,在c文件中会构造一个struct linux_l ...

  9. Linux内核启动logo

    之前在分析samsung的fb驱动代码的时候,其中有一段代码是处理内核logo显示相关的,今天就内核logo这个话题来聊一聊! 一.处理内核logo显示相关的代码在哪? 回到samsung的fb驱动代 ...

最新文章

  1. 学习全基因组测序数据分析2:FASTA和FASTQ
  2. 最难学编程语言排汗榜
  3. QC安装与运行中的问题汇集
  4. 怎么看电脑配置高不高_电脑店学徒写的电脑配置单处处都是“亮点”,能“气死”师傅...
  5. 软件设计:表达组织中的上下级关系
  6. 谈谈有什么方法可以快捷实现多场景下的线程安全
  7. DATEDIFF() 函数返回两个日期之间的天数
  8. 【QT】QT从零入门教程(十七):QT+OpenCV+VS 打包exe
  9. atomic、锁、多线程
  10. kafka配置项host.name advertised.host.name
  11. java点击菜单项弹出对话框_java怎么通过点击菜单弹出对话框
  12. 工业路由器和家用路由器有什么区别?
  13. java jco_JAVA通过JCo连接SAP
  14. Unity小游戏教程系列 | 创建小型太空射击游戏(4)
  15. 【草莓音乐节】现场美女大放送
  16. 名帖236 俞和 行书《次韵韩伯清见寄之什凡五首》
  17. Java中的枚举类是什么?enum关键字怎么使用?
  18. 《C系列-实践相关》C语言十
  19. 网络电视经常出现服务器无响应,为什么pps总是显示服务器未能响应停止播放
  20. 【C++】C++11简介 | 列表初始化 | 声明 | 范围for

热门文章

  1. 优酷系统:创建mysql连接python 表
  2. C语言中strand() rand() time()函数的简单介绍及获取随机数的方法
  3. Raspberry Pi 4B树莓派 | #入门教程04#设置屏幕常亮,禁止树莓派休眠
  4. Android虚拟机与反编译
  5. sublime中符号替换成换行/正则表达式
  6. 健康用电脑秘籍大公开
  7. BeeWare 峰器 中文文档 - 教程 1 - 你的第一个应用程序
  8. 作为一名程序员的对自己的编码要求
  9. 路由器端口配置及常用信息查看
  10. 毕业设计-微信公众平台开发与设计(一:准备材料)