项目场景:

在眺望电子TW-IMX6DL-EVM开发板上开机Logo默认是编译进内核的,更换起来很不方便,通过改写内核源码,可以实现应用层直接更换内核Logo。在此基础上,本文介绍通过两种方式在应用层更换开机Logo。

编译环境及开发包: 主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15

注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。


解决方案:

1.源码修改

1.1 u-boot修改

修改include/configs/mx6sabre_common.h后重新编译uboot。
目录:include/configs/mx6sabre_common.h
添加"loadlogo=mmc read 0x15000000 0x1000 0x2800;\0" \

mz6sabre_common.h

新增

#define CONFIG_BOOTCOMMAND \
"mmc dev ${mmcdev};" \
"if mmc rescan; then " \
"run loadlogo; " \ /* 新增 */
"if run loadimage; then " \
"run mmcboot; " \
"else " \

new-1

1.2 kernel修改

修改内核源码drivers/video/logo/Kconfig,在最后新加一个LOGO_LINUX_CUSTOM_CLUT224的配置选项:

/* 在如下配置 */
config LOGO_LINUX_CUSTOM_CLUT224
bool "Custom 224-color linux logo"
default y

endif # LOGO

将附件中的src/kernel/logo.c替换掉内核源码drivers/video/logo/logo.c,在然后重新编译内核。配置内核时,需要去掉logo路径下的其它选项,只保留Custom 224-color linux logo这一个选项。

menuconfig

然后,重新烧写生成的固件。根据芯片的类型,可以选择附件中image目录下的现有固件进行烧写测试。

2.图片格式修改

2.1 JPG格式图片修改方法

从网络上先下载一张JPG格式图片,注意图片分辨率最好和显示屏最佳分辨率保持一致。将附件解压到虚拟机,同时将图片放在解压后的Tools\jpgburn,如图所示。
burnlogo

执行目录中的makelogo.sh脚本,成功后将在burnlogo文件夹下生成mylogo.bin文件。如图所示。
mylogo

该文件即为可以直接进行烧写的图像二进制文件。注意:执行脚本过程中可能报错,需要安装相关的图像处理工具。

$ sudo apt-get install netpbm
$ sudo apt-get install imagemagick

将生成的mylogo.bin文件和同一目录下的burnlogo.sh文件拷贝到开发板同一目录,执行burnlogo.sh脚本,烧写图像到emmc,重启后即可看到效果。

注意:loadlogo=mmc read 0x15000000 0x1000 0x2800;\0"
如果从emmc的0x1000读取logo,则需要修改burnlogo.sh中的seek,如下0x1000对应十进制4096

dd if=/dev/zero of=/dev/mmcblk3 bs=512 seek=4096 count=16384
dd if=mylogo.bin of=/dev/mmcblk3 bs=512 seek=4096
sync

2.2 BMP格式图片修改方法

因为Logo图片中所使用的颜色数不能超过224种,如果超过将无法正常显示,因此我们需要制作符合要求的图像。需要256 色位图的 bmp图片
 将成功保存的图片下载到开发板,使用附件中Tools\bmpburnbmpburn.sh脚本文件进行烧写。(注意:脚本中默认图像文件名为mylogo.bmp,如果不一致需要修改脚本文件。)重启后即可看到实际效果。
  内核默认设置成自动读取通过方式1或者方式2烧写进去的图像文件作为开机Logo,如果没有进行烧写,将会读取原来默认的小企鹅图标作为开机Logo。

Logo

更多推荐