3.1.1.10. U-boot Splash Screen

A splash screen is an introductory screen that user sees over display when device boots up. Splash screens are typically used to provide feedback to the user that the board is booting up and to showcase the vendor logo which helps with branding and also for the identification of which boot image is being used for the boot up.

AM62x offers out of box splash screen experience with OLDI display in SDK release 9.0. It also supports displaying splash screen until kernel is booted up with flicker free transition across different boot stages.

3.1.1.10.1. Features Supported

Following features are supported for splash screen in u-boot:

  1. Supports 32, 24 and 8 bits per pixel bmp image.
  2. Supports frame-buffer of size 1920x1200 resolution, images with resolution lesser than this can still be displayed using the same frame-buffer.
  3. Supports displaying only bmp and compressed bmp images(gzip and 8bit RLE).
  4. Supports MMC and OSPI as bmp image source.
  5. Supports splash screen only on OLDI panel.

Note

  • AM62x supports splash screen at both u-boot proper and A53 SPL with A53 SPL displaying splash screen ~1.4 seconds earlier than u-boot proper.

3.1.1.10.2. Enabling Splash Screen on ti-u-boot

In SDK release 9.0 ti-u-boot supports splash screen at A53 SPL stage and U-boot proper.

3.1.1.10.2.1. A53 SPL

By default splash screen is only enabled at A53 SPL. The default splash source is set to SD card and displays a gzip TI logo BMP Image. The SPL splash screen features are compiled in the tispl.bin which is built during u-boot compilation. Any changes made to SPL splash screen feature will require to recompile tispl.bin. Use the new tispl.bin to boot the board to see splash screen at SPL stage.

At SPL stage splash screen is called from board/ti/am62x/evm.c in function spl_board_init

3.1.1.10.2.2. U-boot Proper

To enable splash screen at U-boot proper enable following configs in configs/am62x_evm_a53_defconfig.

If user only want splash screen feature at u-boot proper, user can disable splash screen at A53 SPL splash screen using kconfig CONFIG_SPL_VIDEO.

Splash screen feature at u-boot proper will be compiled in u-boot.img, built during u-boot compilation. Any changes made to u-boot splash screen feature will require to recompile u-boot.img. Use the new u-boot.img to boot the board, to see splash screen at U-boot proper.

Note

  • If splash screen is enabled at u-boot proper it will stay persistent until linux boot starts.

3.1.1.10.3. Display custom logo as splash screen

In U-boot all information for image to be displayed as splash screen is passed through env variables, defined below. These should be added in the .env file used by the board. For reference board/ti/am62x.env .

To display custom logo change the splashfile variable to logo_file_name.

If using SD card as splash source, place the image in the boot partition of SD card, which contains tispl.bin and u-boot.img.

To display image from a different source, add the source information in struct default_splash_locations, which is defined in board.c. For reference board/ti/am62x/evm.c, by default OSPI and SD card as source are added for AM62x.

Change splashsource variable to the name of source defined in above struct.

Note

.env file gets compiled into u-boot.img and tispl.bin for u-boot proper and A53 SPL respectively, any changes made in .env will require to recompile u-boot.img and tispl.bin depending on the stage splash screen is enabled.

3.1.1.10.4. Enabling Splash Screen on upstream U-Boot

In upstream, splash screen is supported at driver level for both A53 SPL and u-boot proper.

However user needs to enable required kconfigs add DTS node manually, below commit can be used for reference for making changes.

  1. arm: dts: k3-am62-main: Add device tree node for TIDSS
  2. arm: dts: k3-am625-sk: Add pin control for TIDSS and add panel device tree node
  3. arch: arm: dts: k3-am625-sk: add bootph-pre-ram flags

3.1.1.10.4.1. A53 SPL

To enable splash screen at A53 SPL enable following configs in configs/am62x_evm_a53_defconfig :

3.1.1.10.4.2. U-boot proper

To enable splash screen at u-boot proper enable following configs configs/am62x_evm_a53_defconfig:

3.1.1.10.5. Enabling splash screen on custom board based on AM62x SoC

To enable splash screen on custom board based on AM62x SoC follow steps below:

  1. Add video driver and panel node in the dts file by referring following patches:
    1. arm: dts: k3-am62-main: Add device tree node for TIDSS
    2. arm: dts: k3-am625-sk: Add pin control for TIDSS and add panel device tree node
    3. arch: arm: dts: k3-am625-sk: add bootph-pre-ram flags
  2. Add configs mentioned in Upstream u-boot section in the board_defconfig, depending on the stage in which splash screen is to be displayed.
  3. Define splash file locations struct in board.c file, to enable different boot media for splash, for reference board/ti/am62x/evm.c.
  4. Define splash related env variables in board.env file, reference board/ti/am62x/evm.c.

Refer section Display custom logo as splash screen to know more about splash file location struct and env variables.

3.1.1.10.6. Display image using u-boot command line

To test display and video driver in U-boot, at U-boot console run the following commands.

To see all the files in your boot partition run
=> ls mmc 1

To load image
=> fatload mmc 1 $loadaddr ti_logo_414x97_32bpp.bmp.gz

To display image
=>  bmp display $loadaddr m m

The above command will display an image at centre of the screen.

To get bmp image info
=> bmp info

3.1.1.10.7. Run splash screen using OSPI NOR

  1. To load bmp image on OSPI NOR run the following commands
  2. Change splashsource to sf in board.env, recompile tispl.bin for SPL stage and u-boot.img for U-boot proper.

Note

OSPI NOR doesn’t support displaying gzip bmp image.

3.1.1.10.8. Display RLE compressed image

Enable following kconfigs to support 8bit RLE compressed image.

3.1.1.10.9. Flicker free display across boot stages

AM62x 9.0 supports flicker free display across boot stages with splash screen displayed persistently from SPL stage until linux boots up. In order to achieve flicker free experience, a blob containing video buffer address is passed from SPL stage to u-boot proper. To continue displaying the splash image after linux boot starts,a frame-buffer is reserved in linux device tree arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi, defining the video frame-buffer address and size.