Displaying Static Splash Image Immediately After Reboot Print

 

This application note explains how to show a static splash image on the display immediately after power-on / reboot. This feature can be used to indicate to the user that the device is alive and running, while the system still continues to boot up.


Understanding Static Splash Image Implementation

U-Boot Display Driver

The existing U-Boot STM32 LTDC driver (drivers/video/stm32/stm32_ltdc.c) is used to provide support for displaying a splash screen image on the display. By default, the U-Boot LCD display is configured to support the 480x272 resolution. Only true color (24 bpp) images can be displayed by U-Boot. Format of the splash screen image is "PC bitmap, Windows 3.x format, 480 x 272 x 24".

The default configuration for LCD is defined in the arch/arm/dts/stm32h7-som.dts U-Boot file:

&ltdc { status = "okay"; pinctrl-0 = <&ltdc_pins>; display-timings { timing@0 { clock-frequency = <12000000>; hactive = <480>; vactive = <272>; .......

U-Boot Splash Image

The stm32h7-splash-24bpp.bmp splash image stored in board/emcraft/stm32h7-som in the U-Boot source tree is used as the default image to be displayed.


Manipulating Splash Image

Installation Script

The system installation kermit script stm32h7-som-prog.kermit allows to write the splash image to the dedicated UBI volume on the QSPI Flash system partition.

The path to the splash image must be specified in the 4th argument to the script:

./stm32h7-som-prog.kermit <tty> <uboot_img> [rtos_img] [splash_img]

Note that the installation kermit script updates all system components on the QSPI Flash. The following commands can be used in order to re-install a splash image separately from the U-Boot and FreeRTOS images:

  1. From the U-Boot command interface, call the loadb command to load a splash image to SDRAM from the development host via UART using the kermit utility.
  2. From the U-Boot command interface, call the ubi write $loadaddr splash $filesize command to copy splash image from SDRAM to the QSPI NAND Flash.

Updating Splash Image

Perform the following step-wise procedure to update a splash image on the STM32H7 SOM:

  1. Boot the board to the U-Boot command line. To do so, reset the unit and interrupt the boot sequence by pressing any key on the serial console.
  2. From the U-Boot command monitor, issue the loadb command.
  3. On the development host, exit the terminal application connected to the U-Boot serial console to free UART interface for the kermit utility.
  4. Upload a splash screen image to SDRAM from the development host via UART using the kermit utility:
  5. $ kermit
    C-Kermit> set line /dev/ttyUSB0
    C-Kermit> set speed 115200
    C-Kermit> set carrier-watch off
    C-Kermit> set flow-control none
    C-Kermit> set prefixing all
    C-Kermit> send stm32h7-splash-24bpp.bmp
    C-Kermit> exit

  6. On the development host, re-connect to the U-Boot serial console with a terminal application.
  7. Issue the ubi write $loadaddr splash $filesize command to copy the splash image from SDRAM to QSPI NAND Flash.
  8. Reboot the target board and validate that the splash screen image is displayed.