嵌入式软件 - 自定义初始屏幕 Yocto 带有黑色文本的白色加载栏

Yocto Raspberry Pi

带进度条的自定义启动画面

准备启动画面图像

启动画面由源树的“/workdir/poky-honister/meta-raspberrypi/recipes-core”目录下所见名为“psplash” 的方案处理。由于“psplash”预期图像采用头文件格式,首先您需要使用名为“make-image-header.sh”的脚本将图像转换为头文件格式。### 克隆 psplash 存储库

若要获取脚本,请克隆 yoctoproject psplash 存储库(本案例中克隆到 /workdir 目录)

git clone https://git.yoctoproject.org/psplash

在 psplash 目录中,可以找到脚本“make-image-header.sh”。### 安装库

脚本需要系统中安装有“libgdk-pixbuf2.0-dev”。您可以在第二个终端窗口中执行此操作:

docker exec -it --user=root crops-poky bash
apt-get install libgdk-pixbuf2.0-dev
exit

现在您可以使用脚本将 png 文件转换为 .h 文件

./make-image-header.sh <path-to-png>/psplash-ixlogo.png POKY

因此,您应该得到一个名为“psplash-ixlogo-img.h”的文件。文件头如下所示:

/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */

#define POKY_IMG_ROWSTRIDE (4080)
#define POKY_IMG_WIDTH (1020)
#define POKY_IMG_HEIGHT (768)
#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \
...

如果您想更改启动画面的背景颜色,可以添加以下行:

#define PSPLASH_BACKGROUND_COLOR 0x07,0x85,0x00

这样将背景颜色设置为绿色。

创建自定义 meta 层

要包含创建的启动画面图像,我们就需要一个自定义 meta 层。首先 source 到 rpi-build。

source poky-honister/oe-init-build-env rpi-build

我们使用“bitbake-layers” 创建一个新的 meta 层,并将此 meta 层添加到当前项目的 conf/bblayers.conf。

bitbake-layers create-layer meta-interelectronix-rpi
bitbake-layers add-layer meta-interelectronix-rpi

此后,将目录“psplash”从 meta-raspberrypi/recipes-core 复制到新的 meta 层:

mkdir meta-interelectronix-rpi/recipes-core
cp -r /workdir/poky-honister/meta-raspberrypi/recipes-core/psplash meta-interelectronix-rpi/recipes-core/

将 psplash-ixlogo-img.h 复制到 meta-interelectronix-rpi/recipes-core/psplash/files/

cp <path-to-h-file>/psplash-ixlogo-img.h meta-interelectronix-rpi/recipes-core/psplash/files/

最后编辑“meta-interelectronix-rpi/recipes-core/psplash/psplash_%.bbappend”并将“psplash-raspberrypi-img.h”更改为“psplash-ixlogo-img.h”。

包含 psplash

在最后一步中,必须将 psplash 包添加到项目的 local.conf 文件中。为此,请编辑文件 /workdir/rpi-build/conf/local.conf

我的 local.conf 是这个样子的:

## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
VIRTUAL-RUNTIME:initscripts = ""
IMX_DEFAULT_DISTRO_FEATURES:append = " systemd"

## enable some hardware
ENABLE_I2C = "1"
ENABLE_UART = "1"
DISABLE_SPLASH = "1"
DISABLE_RPI_BOOT_LOGO = "1"

IMAGE_INSTALL:append = " psplash"
IMAGE_FEATURES += " splash "

版权许可

版权所有 © 2022 Interelectronix e.K.
本项目源代码根据 GPL-3.0 许可证获得许可。