NXP i.MX6 linux应用层替换开机logo
项目场景:在眺望电子TW-IMX6DL-EVM开发板上开机Logo默认是编译进内核的,更换起来很不方便,通过改写内核源码,可以实现应用层直接更换内核Logo。在此基础上,本文介绍通过两种方式在应用层更换开机Logo。编译环境及开发包: 主机:ubuntu18.04交叉编译器:arm-linux-gnueabihf-gccQT5.12.8:qt-everywhere-opensource-src-5
项目场景:
在眺望电子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" \
新增
#define CONFIG_BOOTCOMMAND \
"mmc dev ${mmcdev};" \
"if mmc rescan; then " \
"run loadlogo; " \ /* 新增 */
"if run loadimage; then " \
"run mmcboot; " \
"else " \
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
这一个选项。
然后,重新烧写生成的固件。根据芯片的类型,可以选择附件中image目录下的现有固件进行烧写测试。
2.图片格式修改
2.1 JPG格式图片修改方法
从网络上先下载一张JPG格式图片,注意图片分辨率最好和显示屏最佳分辨率保持一致。将附件解压到虚拟机,同时将图片放在解压后的Tools\jpgburn
,如图所示。
执行目录中的makelogo.sh
脚本,成功后将在burnlogo文件夹下生成mylogo.bin
文件。如图所示。
该文件即为可以直接进行烧写的图像二进制文件。注意:执行脚本过程中可能报错,需要安装相关的图像处理工具。
$ 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。
更多推荐
所有评论(0)