[迅为i.MX6ULL开发板学习]内核Logo 修改使用文档

本章节介绍如何修改内核启动 LOGO,提供的例子介绍迅屏幕的内核 LOGO 如何修改,以及低分辨率的 LOGO 如何调整到屏幕的正中间。本章节使用的资料已经放到了开发板网盘资料中,路径为“11_Linux系统开发进阶\73_章节_内核-Logo 修改使用文档使用资料”。

以下参数用户必须有所了解。4.3 寸屏幕,RGB 信号,分辨率为 480*272;

7 寸塑料壳屏幕,LVDS 信号,分辨率为 800*1280,注意 7 寸屏幕是竖屏显示,所以分辨率这里写的是 800*1280,而不是1280*800;

9.7 屏幕,LVDS 信号,分辨率为 1024*768;

7 寸金属框屏幕和 10.1 寸屏幕可以使用 4.3 寸屏幕的图片,只是在 logo 显示的时候不会全屏显示;

另外本文档中例程介绍的 LOGO 图片分辨率,和屏幕分辨率大小一致,这样可以不用移动 LOGO 位置,只需要处理图片即可。

在文档最后部分,会简要介绍如何调整 LOGO 的位置,小的图片如何实现居中显示。

1 内核配置

iMX6UL 的内核自带 LOGO 驱动,默认是没有配置的。进入内核源码目录,先将需要配置的缺省文件覆盖.config 文件,然后使用“export ARCH=arm”设置环境变量。

图 73.1.1

然后使用“make menuconfig”命令开启配置界面,如图 73.1.2所示。

图 73.1.2

选择“Device Drivers --->”,如图 73.1.3所示。

图 73.1.3

选择“Graphics support --->”,并进入,如图 73.1.4所示。

图 73.1.4

接着选上“Bootup logo --->”,并进入,如图 73.1.5所示。

图 73.1.5

将其它两个选项去掉,只需要保留“Standard 224-color Linux logo”即可,如图 73.1.6所示。

图 73.1.6

退出 menuconfig,并保存。

如果修改了配置文件,选择保存,“.config”文件就会被修改。再次编译内核的时候, 如果需要编译新配置的驱动,则使用命令“cp -r .config arch/arm/configs/imx_v7_defconfig”覆盖默认配置,系统会根据新的 config 文件来编译整个内核,请注意覆盖之前注意保存默认的配置缺省文件。

退出 menuconfig,并保存。

这里需要重置默认配置,如下图所示,使用命令“cp -r arch/arm/configs/imx_v7_defconfig arch/arm/configs/imx_v7_defconfig_org”,可以将默认的“imx_v7_defconfig”另存为“imx_v7_defconfig_org”,防止缺省文件配置出错。

图 73.1.7

接着使用命令将“cp -r .config arch/arm/configs/imx_v7_defconfig”覆盖,接着使用命令“rm -rf drivers/video/logo/*.o”将“drivers/video/logo/”目录下的.o 文件全部删除。

图 73.1.8

然后重新编译,编译内核请参考I.MX6ULL终结者-开发板使用手册第28.2章节,完成之后。可以看到“drivers/video/logo/”目录下有.o 文件生成。

图 73.1.9

到这一步,我们将内核烧写到系统,拨码开关2拨到ON,其余都拨成OFF,进入USB烧写模式。烧写完成后,将拨码开关1,3, 6, 7拨到ON,其余都拨成OFF,进入EMMC启动模式。镜像烧写请参考I.MX6ULL终结者-开发板使用手册第6章I.MX6ULL镜像烧写,就会看到有内核 LOGO 生成,这个图片是默认的linux 图片,使用的是“drivers/video/logo/”目录下的“logo_linux_clut224.ppm”文件。

它的分辨率比较小,默认应该是在左上角显示,这个小图片也可以保存一下,后面调整位置LOGO 位置的时候还会用到。请注意,到这一步和烧写默认镜像显示的 logo 是一模一样的,不过经过这个测试,我们可以知道 iMX6UL 的 LOGO 是和“logo_linux_clut224”有关的文件。

接着下一节我们介绍如何使用和屏幕分辨率一致的图片生成 logo_linux_clut224.ppm 文件。

2 生成 PPM 文件

本节简单介绍如何使用 PS 软件修改分辨率和位深度,将图片保存为 BMP 格式,然后使用工具“bmptopnm”将 bmp 格式的图片转化为 PPM 格式。最后只需要将 PPM 放到

“drivers/video/logo/”目录下,重新编译内核,即可完成 LOGO 的修改。

2.1 使用 PS 软件修改图片分辨率和位深度

将分辨率修改为和屏幕分辨率一致,可以不用调整 LOGO 位置;另外由于

“bmptopnm”工具只能转化 8bit 位深度,所以必须将图片修改为 8bit 的位深度。

使用 ps 软件打开图片,接着选择“图像”→“图像大小”,取消约束比例,然后修改像素大小,选择之后点击“确定”。

图 73.2.1.1

到这里就将分辨率修改完成。上图所示是 4.3 寸屏幕的分辨率:480*272;

如果是 7 寸屏幕,分辨率应该选为 800*1280,注意 7 寸屏幕是竖屏显示,所以分辨率这里写的是 800*1280,而不是 1280*800;9.7 寸屏幕的分辨率为 1024*768。

然后选择“图像”→“模式”→“灰度”,如下图所示界面,选择“扔掉”。

图 73.2.1.2

接着“文件”→“存储为”,选择格式为 bmp 格式,点击“保存”。接着会弹出如下图所示对话框,选择位深度为 8bit,然后点击“确定”。

图 73.2.1.3

到这里就生成里的 bmp 格式的图片“8bit 位深度”。

在和文档一起的压缩包中,有默认的三张图片“logo_topeet_imx6_1024x768.bmp”,

“logo_topeet_imx6_7.0_800x1280.bmp”,“logo_topeet_imx6_480x272.bmp”。可以供用户做下一小节的测试。

2.2 使用工具“Bmptopnm”将图片转化为 ppm 格式

本节的截图使用的是 iMX6Q 的,方法是一模一样的,并不影响使用。

在 Ubuntu 上使用命令“apt-get install netpbm”安装 bmptopnm 工具,如图 73.2.2.1所示。

图 73.2.2.1

将前一小节转化出来的 bmp 格式的图片拷贝到 Ubuntu 下,接着使用命令

“bmptopnm logo_topeet_imx6_1024x768.bmp | ppmquant -fs 224 |

pnmtoplainpnm >logo_topeet_imx6_1024x768.ppm”将其转化为 ppm 格式。注意命令中红色部分是图片的名称,用户的 bmp 格式图片是什么名称,就修改为什么名称,“logo_topeet_imx6_1024x768.ppm”则是转化出来的图片名称。

假如压缩包中自带的图片“logo_topeet_imx6_7.0_800x1280.bmp”,则使用命令

“bmptopnm logo_topeet_imx6_7.0_800x1280.bmp | ppmquant -fs 224 | pnmtoplainpnm >logo_linux_clut224.ppm”

如下图所示。正常转化不会报错,如果不是 8bit 位深度的图片,则会报错。然后使用 file 命令查看成文件的属性,可以发现是 ASCII text 格式。

图 73.2.2.2

压缩包中也有三个 ppm 格式的文件供大家使用

“logo_linux_clut224_480x272.ppm”,“logo_linux_clut224_800x1280.ppm”和

“logo_linux_clut224_1024x768.ppm”分别对应迅为的三种屏幕。因为作者使用的屏幕是9.7寸屏,所以选用logo_linux_clut224_1024x768.ppm

2.3 修改内核 Logo 文件

将生成的 ppm 文件“logo_linux_clut224_1024x768.ppm”拷贝到内核的

“drivers/video/logo/”目录下,更改名字为:“logo_linux_clut224.ppm”将其默认的“logo_linux_clut224.ppm”文件覆盖掉。用户如果使用作者提供的测试 ppm 文件,同样也是将“logo_linux_clut224.ppm”文件覆盖掉即可。

3 测试

将 iMX6UL 内核源码“drivers/video/logo/”目录下的“logo_linux_clut224.o”和“logo_linux_clut224.c”文件删除。

然后将前面生成的对应屏幕分辨率的 ppm 文件文件拷贝到“drivers/video/logo/”目录下,例如 1.0.1 寸屏幕,可以拷贝“logo_linux_clut224_1024x768.ppm”,然后将其名称修改为“logo_linux_clut224.ppm”。金属框 7 寸和 10.1 寸可以拷贝“logo_linux_clut224_480x272.ppm”文件。

内核在编译过程中,会将“drivers/video/logo/”目录下的 ppm 文件转换成.c 文件,然后编译成.o 文件,接着被 logo.c 文件调用,编译到 logo.o 文件,最后编译到 zImage 内核镜像中。另外请注意备份。

重新编译内核烧写到开发板,在内核启动之后,则可以看到一闪而过的 logo。注意:作者提供的图片是一张低分辨率彩色的照片,而且在处理过程中,像素遗失的非常严重,可能图片显示的时候会有瑕疵,不过这个和屏幕没关系。

如果用户想要 LOGO 效果好一点,可以选择默认就是黑白色的图片或者默认就是 8bit 位深度的图片,这样在修改”位深度”这个参数的时候,像素遗失的就很少。

假如修改 LOGO 图片之后,编译不成功,用户可以尝试使用作者提供的图片,自己转换的时候,图片可能格式不对。

4 Logo 位置的居中调整

假如用户想使用的 LOGO 图片小于屏幕分辨率,则可以先按照前面的方法将 LOGO 图片编译到内核,然后烧写到开发板中,可以看到 LOGO 图片小于在左上角出现,这种情况需要调整 LOGO 的位置。

接下来简单介绍一下如何修改 LOGO 的位置。

首先我们使用的图片是内核默认自带的 ppm 文件,“logo_linux_clut224.ppm”,也就是小企鹅图片,它的分辨率非常小,我们介绍如何修改源码将其移动到屏幕正中间。

在内核源码“drivers/video/fbdev/core/fbmem.c”中的 fb_show_logo_line 函数的

“image.height = logo->height;”行之后增加代码。

image.dx=(info->var.xres/2)-(image.width/2);

image.dy=(info->var.yres/2)-(image.height/2);

图 73.4.1

修改之后如图 73.4.2所示。

图 73.4.2

接着修改:fb_do_show_logo(info, &image, rotate, n); 将 n 改成 1,修改之后,如图 73.4.3所示。

图 73.4.3

修改源码“drivers/video/console/fbcon.c”中的 fbcon_prepare_logo()函数

在代码logo_height = fb_prepare_logo(info, ops->rotate);

logo_lines = DIV_ROUND_UP(logo_height, vc->vc_font.height);

之间增加:

logo_height += (info->var.yres/2) - (logo_height/2);

如图 73.4.4所示。

图 73.4.4

至此代码修改完成,重新编译烧写之后,再内核启动过程中,可以看到 linux 内核的小企鹅 LOGO 在屏幕的正中间。

图 73.4.5

[迅为i.MX6ULL开发板学习]内核Logo 修改使用文档相关推荐

  1. 迅为i.MX6ULL 开发板开机进度条修改文档

    转自:迅为IMX6ULL开发板使用手册第七十一章 硬件平台:迅为i.MX6ULL 开发板 本章节介绍的是iTOP-iMX6ULL-修改开机进度条的显示和修改步骤,使用的资料已经放到了开发板网盘资料中路 ...

  2. 【北京迅为】i.MX6ULL终结者内核-Logo 修改使用文档生成 PPM 文件

    文章目录 1 使用 PS 软件修改图片分辨率和位深度 2 使用工具"Bmptopnm"将图片转化为 ppm 格式 3 修改内核 Logo 文件 本节简单介绍如何使用 PS 软件修改 ...

  3. 迅为-i.MX6ULL开发板-QT实战项目DHT11网络编程实战练习(一)

    迅为-i.MX6ULL开发板-QT实战项目DHT11&网络编程实战练习(一) 发布时间:2021-7-2 09:49    发布者:落风 |编辑 文章目录1 项目前准备2 软件流程图3 Lin ...

  4. 迅为iTOP-i.MX6ULL 开发板-Mqtt 移植教程

    本文转自迅为IMX6ULL开发板教程第第八十八章,关注公众号:迅为电子,回复 :终结者,免费获取产品资料   移植环境 Ubuntu:迅为提供的 ubuntu16.04 编译器:gcc-linaro- ...

  5. 讯为开发板移植linux,迅为I.MX6ULL开发板移植Linux5.4内核教程

    4412上移植最新5.4内核的流程非常的简单,因为4412被Linux官方支持,那么我们来看一下怎么把官方5.4内核移植到我们的I.MX6ULL终结者开发板上. 平台:i.MX6ULL开发板 前言 本 ...

  6. 迅为i.MX6ULL开发板资料下载,让Linux学习更轻松

    迅为电子的 i.MX6ULL 核心板分为工业级和商业级两种.提供的接口是邮票孔方式. 开发板资料下载链接: 链接:https://pan.baidu.com/s/174ob7bzIaf_ls8_O4Q ...

  7. 【技术分享】迅为i.MX6ULL开发板-Uboot-Logo修改方法

    硬件平台:iMX6ULL开发板 本文介绍的在 uboot 下 logo 显示和修改步骤. 使用的资料已经放到了开发板网盘资料中,路径为"11_Linux 系统开发进阶\72_章节使用资料&q ...

  8. 迅为I.MX6ULL开发板镜像烧写

    .1 l mfgtool 烧写镜像 烧写镜像 开发板出厂前默认已经烧写了镜像,如果用户需要重新烧写镜像,可以参考本章. NXP 官方提供了 Windows 的上位机烧写工具 mfgtool,迅为电子在 ...

  9. 迅为i.MX6ULL开发板-Qt5.7Mplayer 移植文档

    硬件平台:迅为iMX6ULL开发板 84.1 交叉编译 Libmad-0.15.1b 本章节使用的资料已经放到了开发板网盘资料中,路径为:"11_Linux 系统开发进阶\84_章节使用资 ...

  10. IMX6开发板-Android4.4-串口屏蔽gps文档及测试例程

    本文档主要介绍 iTOP-IMX6 开发板下,android 串口的使用. Android4.4.2 系统的串口测试,如果使用和 GPS 复用的串口,会出现只能发送不能接收 的情况,这是因为在 And ...

最新文章

  1. Centos7安装Nginx详细步骤
  2. “移花接木”偷换广告:HTTPS劫匪木马每天打劫200万次网络访问
  3. [转载]Linux用户管理全攻略(八)
  4. ThreadLocal 内存泄露的实例分析
  5. 文秘专业计算机基础考题,《计算机应用基础》课程无纸化试题库建设及应用分析...
  6. .NET 6新特性试用 | 隐式using指令
  7. LeetCode 156. 上下翻转二叉树(DFS)*
  8. 156 13.67用matlab答案,MATLAB习题答案
  9. 【蓝桥杯嵌入式】【STM32】9_PWM之实现交替呼吸灯
  10. 《ETL原理及应用》学习笔记 ·004【kettle的使用-2】
  11. 【Assembly】Mixed mode dll unable to load in .net 4.0
  12. Deep learning:三十四(用NN实现数据的降维)
  13. 谈一谈|如何写好一篇博客
  14. ENVI提取植被指数(NDVI)的两种方法
  15. win10修改dns服务器命令,win10怎么修改DNS服务器?win10修改DNS服务器的方法
  16. spamhaus反垃圾邮件联盟黑名单PBL申诉详细步骤
  17. linux 终端 reboot,讲解Linux基础命令之:man、reboot
  18. matlab中TCR触发,TCR+FC型SVC及MATLAB仿真.doc
  19. 射频中经常是用50欧姆作为阻抗匹配的标准的原因
  20. 享元模式实例与解析实例二:共享网络设备(有外部状态)

热门文章

  1. docx文档文字怎么加边框_word给正文加边框 word怎样给一段文字加上边框
  2. 中国科学院大学2019年数学分析考研试题
  3. 5G的网络切片功能概述
  4. Linux系统管理---RAID磁盘阵列
  5. C++战斗游戏-----------圣光战神の起源之战 V8.13.0
  6. 浅谈机器人比赛中的系统工程和组织管理
  7. 简单基于tun实现的用户态NAT64
  8. 哈佛大学幸福课-笔记
  9. 常吃西红柿治疗十种病以及食用的一些禁忌
  10. 阿里新供应链架构解读