我成功地在嵌入式系统Toradex iMX6上更改了初始屏幕图像。我将在子目录中找到的内核defconfig更改为内核* .bb文件,并将我的映像(logo_custom_clut224.ppm)添加到了预构建内核目录./tmp-glibc/work-shared/colibri-imx6/kernel-源/驱动程序/视频/徽标/,然后重新编译内核。
有可能做得更好吗?我真的很想更改手动将映像复制到预构建目录的步骤。我可以以某种方式更改* .bb文件以包括我的图像并将其用作我的自定义启动图像吗?
或者在内核构建之前,是否可以做一些自己的配方来更改defconfig文件并以任何方式包含我的映像?
答案 0 :(得分:1)
我认为psplash_git.bbappend是Yocto中使用psplash的一个很好的例子。
答案 1 :(得分:1)
有可能您可以将更改保留为补丁,也可以将其作为补丁提供给yocto,然后yocto可以在清理所有内容后将补丁应用到内核。这种方式是不使用Yocto系统的嵌入式Linux系统中最常见的方式。
在yocto中,我更喜欢使用psplash。它易于使用,您可以在图像中添加一个加载器图标。您只需要在图像中添加psplash,在psplash配方中,只需将图像位置赋予 SPLASH_IMAGES
定义即可。
答案 2 :(得分:0)
我从未使用过Splash功能。但是我找到了一种更改u-boot和内核的静态启动徽标的解决方案。
创建启动映像
我创建了一个脚本,将jpg图像转换为u-boot和内核所需的两个不同图像。
#!/bin/bash
IMAGE_JPG_INPUT=<YOUR_IMAGE_NAME>.jpg
IMAGE_UBOOT=toradex.bmp
IMAGE_KERNEL=logo_custom_clut224.ppm
echo "Converting $IMAGE_JPG_INPUT"
jpegtopnm $IMAGE_JPG_INPUT | ppmquant 224 > tmp.ppm
pnmnoraw tmp.ppm > $IMAGE_KERNEL
echo ">> Kernel image created: $IMAGE_KERNEL"
ppmtobmp -bpp 8 tmp.ppm > $IMAGE_UBOOT
echo ">> U-boot image created: $IMAGE_UBOOT"
rm tmp.ppm
U-boot徽标
解决方案是替换u-boot/tools/logos
中的默认启动映像(在我的情况下为toradex.bmp)。我在<MY_CUSTOM_LAYER>/recipes-bsp/u-boot/u-boot-toradex/
中创建了一个bbappend文件u-boot-toradex_2016.11.bbappend。
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://toradex.bmp"
do_unpack_append() {
os.system("cp ${PWD}/toradex.bmp ${PWD}/git/tools/logos/")
}
需要在此函数中执行复制操作,因为如果直接运行bitbake或使用devtool(然后将文件移至sources/u-boot-toradex/oe-local-files/
),则到达do_patch_prepend()时,其他文件的位置会有所不同。
根据配方,我将启动映像添加到<MY_CUSTOM_LAYER>/recipes-bsp/u-boot/u-boot-toradex/u-boot-toradex
内核徽标
对于内核徽标,解决方案相似。我在<MY_CUSTOM_LAYER>/recipes-kernel/linux
FILESEXTRAPATHS_prepend := "${THISDIR}/linux-toradex-4.1-2.0.x:"
SRC_URI += "file://logo_custom_clut224.ppm \
file://enable-custom-logo \
"
do_unpack_append() {
os.system("cp ${PWD}/logo_custom_clut224.ppm ${PWD}/git/drivers/video/logo/")
os.system("patch -s < enable-custom-logo")
}
启动映像已添加到<MY_CUSTOM_LAYER>/recipes-kernel/linux/linux-toradex-4.1-2.0.x
。我还添加了一个补丁,以在内核配置文件中启用自定义徽标,并且还禁用了其他徽标图像选项。在我的情况下,我必须修补$ PWD目录中原始配方中的默认defconfig文件。
CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_CUSTOM_CLUT224=y
然后,在目标上更新了U-boot和内核。