【问题标题】:Add custom splash screen image in Yocto (the best way)在 Yocto 中添加自定义启动画面图像(最好的方法)
【发布时间】:2018-12-20 01:56:46
【问题描述】:

我成功地更改了我的嵌入式系统 Toradex iMX6 上的启动画面图像。我将子目录中的内核 defconfig 更改为内核 *.bb 文件,并将我的图像 (logo_custom_clut224.ppm) 添加到我的预构建内核目录 ./tmp-glibc/work-shared/colibri-imx6/kernel- source/drivers/video/logo/ 然后重新编译内核。

有没有可能做得更好?我真的很想更改手动将图像复制到预构建目录的步骤。我可以以某种方式更改 *.bb 文件以包含我的图像并将其用作我的自定义启动图像吗?

或者是否可以在构建内核之前执行我自己的方法来更改 defconfig 文件并以任何方式包含我的图像?

【问题讨论】:

    标签: splash-screen yocto


    【解决方案1】:

    我认为这里 psplash_git.bbappend 是 Yocto 中使用 psplash 的一个很好的例子。

    【讨论】:

    • 您能展示如何在自定义 yocto 项目中实际使用 bbappend 文件吗?
    【解决方案2】:

    我从来没有让 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)。我在&lt;MY_CUSTOM_LAYER&gt;/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/")
    }
    

    复制操作需要在这个函数中完成,因为当你到达do_patch_prepend()时,如果你直接运行bitbake或使用devtool(然后文件被移动到sources/u-boot-toradex/oe-local-files/),附加文件的位置是不同的。

    根据配方我将启动映像添加到&lt;MY_CUSTOM_LAYER&gt;/recipes-bsp/u-boot/u-boot-toradex/u-boot-toradex

    内核徽标

    对于内核徽标,解决方案类似。我在&lt;MY_CUSTOM_LAYER&gt;/recipes-kernel/linux 中创建了一个 bbappend 文件 linux-toradex_4.1-2.0.x.bbappend

    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")
    }
    

    引导映像添加到&lt;MY_CUSTOM_LAYER&gt;/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 和内核随后在目标上更新。

    【讨论】:

      【解决方案3】:

      您可以将更改保留为补丁,然后将其作为补丁提供给 yocto,如果您清理所有内容,yocto 可以将补丁应用到内核。这种方式是不使用Yocto系统的嵌入式linux系统中最常见的方式。

      在 yocto 中,我更喜欢使用 psplash。它易于使用,您可以在图像中添加加载器图标。您只需要将 psplash 添加到您的图像中,并且在您的 psplash 配方中,您只需将图像位置提供给 SPLASH_IMAGES 定义。

      【讨论】:

        猜你喜欢
        • 2017-09-26
        • 2022-11-20
        • 2020-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多