Logiciel embarqué - Écran de démarrage personnalisé Yocto une barre de chargement blanche avec texte noir

Yocto Raspberry Pi

Splash Screen personnalisé avec barre de progression

Préparer l'image du splash screen

Le splash screen est géré par une recette appelée « psplash » qui se trouve dans le répertoire « /workdir/poky-honister/meta-raspberrypi/recipes-core » l'arborescence source.

Puisque « psplash » s'attend à ce qu'une image soit au format de fichier d'en-tête, vous devez d'abord convertir votre image en format de fichier d'en-tête en utilisant un script appelé « make-image-header.sh ».

Cloner le référentiel psplash

Pour obtenir le script, clonez le référentiel psplash de yoctoproject, dans ce cas dans le répertoire /workdir

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

Dans le répertoire psplash, vous trouverez le script « make-image-header.sh ».

Installer la bibliothèque

Le script a besoin de « libgdk-pixbuf2.0-dev » pour être installé dans le système. Vous pouvez le faire dans une deuxième fenêtre de terminal avec :

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

Vous pouvez maintenant utiliser le script pour convertir votre fichier png en .h-file

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

Comme résultat, vous devriez obtenir un fichier nommé « psplash-ixlogo-img.h ». L'en-tête ressemble à :

/* 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*) \
...

Si vous voulez changer la couleur de fond du splash screen, vous pouvez ajouter la ligne suivante :

#define PSPLASH_BACKGROUND_COLOR 0x07,0x85,0x00

Définit la couleur d'arrière-plan sur un vert.

Créer une méta-couche personnalisée

Pour inclure l'image créée du splash screen, nous avons besoin d'une méta-couche personnalisée.

Première source à rpi-build.

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

Avec « bitbake-layers » nous créons une nouvelle méta-couche et ajoutons cette méta-couche au conf/bblayers.conf du projet en cours.

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

Après cela, copiez le répertoire « psplash » de meta-raspberrypi/recipes-core vers la nouvelle méta-couche :

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

Copier psplash-ixlogo-img.h vers meta-interelectronix-rpi/recipes-core/psplash/files/

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

Enfin, éditez « meta-interelectronix-rpi/recipes-core/psplash/psplash_%.bbappend » et changez « psplash-raspberrypi-img.h » en « psplash-ixlogo-img.h ».

Inclure psplash

Dans la dernière étape, le paquet psplash doit être ajouté au fichier local.conf du projet. Pour ce faire, modifiez le fichier /workdir/rpi-build/conf/local.conf

Mon local.conf ressemble à :

## 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 "

Licence de copyright

Copyright © 2022 Interelectronix e.K.
Le code source de ce projet est sous licence GPL-3.0.