Splash image on phyBOARD Sargas STM32MP157

Andrey Nechypurenko andreynech at gmail.com
Fri Jun 25 12:14:10 CEST 2021


Hi Folks,

I am trying to display a splash image from u-boot on the Phytec's
phyBOARD Sargas STM32MP157 evaluation board.
https://www.phytec.de/en/produkte/single-board-computer/phyboard-sargas-stm32mp1/
https://www.phytec.de/en/cdocuments/?doc=d4PmEQ

I feel like I tried everything possible including throwing runes and
bones :-) but to no avail. So maybe someone here could help. Here are
more details and description of what I was trying.

I am using the same u-boot (version and set of patches) as provided by
Yocto BSP (I am building with Buildroot but it is probably not
relevant)
STM32MP> version
U-Boot 2020.01-stm32mp-r2.1 (Jun 24 2021 - 13:30:02 +0200)
arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile
Architecture 10.2-2020.11 (arm-10.16)) 10.2.1 20201103
GNU ld (GNU Toolchain for the A-profile Architecture 10.2-2020.11
(arm-10.16)) 2.35.1.20201028

Display is DPI (i.e parallel RGB interface):
https://www.phytec.eu/fileadmin/user_upload/images/content/1.Products/SBCs/phyBOARD-Segin_i.MX_6UL/LAN-072e_1.pdf

I managed to display a splash screen from Kernel and in general, the
display works fine from user space. So I am sure that everything is
connected properly and the hardware works. Also, u-boot is using the
same DTS files as Kernel. So I assume that everything is properly
configured there. Following is the relevant part of the output from
modetest:

# modetest
trying to open device 'stm'...done
Encoders:
id    crtc    type    possible crtcs    possible clones
31    35    DPI    0x00000001    0x00000000

Connectors:
id    encoder    status        name        size (mm)    modes    encoders
32    31    connected    DPI-1              152x91        1    31
  modes:
    index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
  #0 800x480 59.99 800 840 968 1056 480 490 492 525 33260 flags:
nhsync, nvsync; type: preferred, driver

In the u-boot menuconfig I enabled all the relevant options I could
find. At least the bmp command is available. Here is the Graphics part
of the .config (I can post .config if necessary):

# Graphics support
CONFIG_DM_VIDEO=y
CONFIG_BACKLIGHT_GPIO=y
CONFIG_VIDEO_BPP8=y
CONFIG_VIDEO_BPP16=y
CONFIG_VIDEO_BPP32=y
# CONFIG_VIDEO_ANSI is not set
CONFIG_VIDEO_MIPI_DSI=y
CONFIG_CONSOLE_NORMAL=y
# CONFIG_CONSOLE_ROTATION is not set
# CONFIG_CONSOLE_TRUETYPE is not set
CONFIG_SYS_WHITE_ON_BLACK=y
# CONFIG_NO_FB_CLEAR is not set

In addition, the following defines were added to include/configs/stm32mp1.h:

#ifdef CONFIG_DM_VIDEO
#define CONFIG_VIDEO_BMP_RLE8
#define CONFIG_BMP_16BPP
#define CONFIG_BMP_24BPP
#define CONFIG_BMP_32BPP
*** Below was add by me ***
#define CONFIG_SPLASH_SCREEN
#define CONFIG_SPLASH_SCREEN_ALIGN
#define CONFIG_VIDEO_LOGO
#define CONFIG_VIDEO_BMP_LOGO
#endif

For the sake of completion, here is the output of the dm tree command:

STM32MP> dm tree
 Class     Index  Probed  Driver                Name
-----------------------------------------------------------
 root          0  [ + ]   root_driver           root_driver
 mailbox       0  [ + ]   arm_smc_mbox          |-- mailbox-0
 mailbox       1  [   ]   arm_smc_mbox          |-- mailbox-1
 firmware      0  [   ]   psci                  |-- psci
 sysreset      0  [   ]   psci-sysreset         |   `-- psci-sysreset
 simple_bus    0  [ + ]   generic_simple_bus    |-- soc
 serial        0  [   ]   serial_stm32          |   |-- serial at 4000f000
 serial        1  [ + ]   serial_stm32          |   |-- serial at 40010000
 i2c           0  [   ]   stm32f7-i2c           |   |-- i2c at 40012000
 spi           0  [   ]   stm32_spi             |   |-- spi at 44004000
 usb           0  [   ]   dwc2-udc-otg          |   |-- usb-otg at 49000000
 hwspinlock    0  [ + ]   hwspinlock_stm32mp1   |   |-- hwspinlock at 4c000000
 mailbox       2  [   ]   stm32_ipcc            |   |-- mailbox at 4c001000
 nop           0  [ + ]   stm32-rcc             |   |-- rcc at 50000000
 clk           0  [ + ]   stm32mp1_clk          |   |   |-- stm32mp1_clk
 reset         0  [ + ]   stm32_rcc_reset       |   |   `-- stm32_rcc_reset
 pmic          0  [ + ]   stm32mp_pwr_pmic      |   |-- pwr at 50001000
 regulator     0  [ + ]   stm32mp_pwr_regulato  |   |   |-- reg11
 regulator     1  [ + ]   stm32mp_pwr_regulato  |   |   |-- reg18
 regulator     2  [ + ]   stm32mp_pwr_regulato  |   |   `-- usb33
 syscon        0  [   ]   syscon                |   |-- pwr_mcu at 50001014
 syscon        1  [   ]   syscon                |   |--
interrupt-controller at 5000d000
 syscon        2  [ + ]   stmp32mp_syscon       |   |-- syscon at 50020000
 spi           1  [   ]   stm32_qspi            |   |-- spi at 58003000
 spi_flash     0  [   ]   spi_flash_std         |   |   `-- w25q128 at 0
 mmc           0  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58005000
 blk           0  [ + ]   mmc_blk               |   |   `-- sdmmc at 58005000.blk
 mmc           1  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58007000
 blk           1  [   ]   mmc_blk               |   |   `-- sdmmc at 58007000.blk
 eth           0  [ + ]   eth_eqos              |   |-- ethernet at 5800a000
 usb           0  [   ]   ehci_generic          |   |-- usbh-ehci at 5800d000
 video         0  [   ]   stm32_display         |   |--
display-controller at 5a001000
 watchdog      0  [ + ]   stm32mp-wdt           |   |-- watchdog at 5a002000
 phy           0  [   ]   stm32-usbphyc         |   |-- usbphyc at 5a006000
 serial        2  [   ]   serial_stm32          |   |-- serial at 5c000000
 i2c           1  [ + ]   stm32f7-i2c           |   |-- i2c at 5c002000
 pmic          1  [ + ]   stpmic1_pmic          |   |   `-- stpmic at 33
 regulator     3  [ + ]   stpmic1_buck          |   |       |-- buck1
 regulator     4  [ + ]   stpmic1_buck          |   |       |-- buck2
 regulator     5  [ + ]   stpmic1_buck          |   |       |-- buck3
 regulator     6  [ + ]   stpmic1_buck          |   |       |-- buck4
 regulator     7  [ + ]   stpmic1_ldo           |   |       |-- ldo1
 regulator     8  [ + ]   stpmic1_ldo           |   |       |-- ldo2
 regulator     9  [ + ]   stpmic1_ldo           |   |       |-- ldo3
 regulator    10  [ + ]   stpmic1_ldo           |   |       |-- ldo4
 regulator    11  [ + ]   stpmic1_ldo           |   |       |-- ldo5
 regulator    12  [ + ]   stpmic1_ldo           |   |       |-- ldo6
 regulator    13  [ + ]   stpmic1_vref_ddr      |   |       |-- vref_ddr
 regulator    14  [ + ]   stpmic1_boost         |   |       |-- boost
 regulator    15  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw1
 regulator    16  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw2
 misc          0  [   ]   stpmic1-nvm           |   |       |-- stpmic1-nvm
 sysreset      1  [   ]   stpmic1-sysreset      |   |       `-- stpmic1-sysreset
 rtc           0  [   ]   rtc-stm32             |   |-- rtc at 5c004000
 misc          1  [ + ]   stm32mp_bsec          |   |-- nvmem at 5c005000
 simple_bus    1  [   ]   generic_simple_bus    |   |-- tamp at 5c00a000
 pinctrl       0  [ + ]   pinctrl_stm32         |   |-- pin-controller at 50002000
 gpio          0  [ + ]   gpio_stm32            |   |   |-- gpio at 50002000
 gpio          1  [ + ]   gpio_stm32            |   |   |-- gpio at 50003000
 gpio          2  [ + ]   gpio_stm32            |   |   |-- gpio at 50004000
 gpio          3  [ + ]   gpio_stm32            |   |   |-- gpio at 50005000
 gpio          4  [ + ]   gpio_stm32            |   |   |-- gpio at 50006000
 gpio          5  [ + ]   gpio_stm32            |   |   |-- gpio at 50007000
 gpio          6  [ + ]   gpio_stm32            |   |   |-- gpio at 50008000
 gpio          7  [ + ]   gpio_stm32            |   |   |-- gpio at 50009000
 gpio          8  [ + ]   gpio_stm32            |   |   |-- gpio at 5000a000
 gpio          9  [   ]   gpio_stm32            |   |   |-- gpio at 5000b000
 gpio         10  [   ]   gpio_stm32            |   |   |-- gpio at 5000c000
 pinconfig     0  [ + ]   pinconfig             |   |   |-- rgmii-0
 pinconfig     1  [   ]   pinconfig             |   |   |-- rgmii-sleep-0
 pinconfig     2  [   ]   pinconfig             |   |   |-- fmc-0
 pinconfig     3  [   ]   pinconfig             |   |   |-- fmc-sleep-0
 pinconfig     4  [   ]   pinconfig             |   |   |-- qspi-bk1-0
 pinconfig     5  [   ]   pinconfig             |   |   |-- qspi-bk1-sleep-0
 pinconfig     6  [   ]   pinconfig             |   |   |-- qspi-clk-0
 pinconfig     7  [   ]   pinconfig             |   |   |-- qspi-clk-sleep-0
 pinconfig     8  [ + ]   pinconfig             |   |   |-- sdmmc2-b4-0
 pinconfig     9  [   ]   pinconfig             |   |   |-- sdmmc2-b4-od-0
 pinconfig    10  [   ]   pinconfig             |   |   |-- sdmmc2-b4-sleep-0
 pinconfig    11  [   ]   pinconfig             |   |   |-- sdmmc2-b4-1
 pinconfig    12  [   ]   pinconfig             |   |   |-- sdmmc2-b4-od-1
 pinconfig    13  [ + ]   pinconfig             |   |   |-- sdmmc2-d47-0
 pinconfig    14  [   ]   pinconfig             |   |   |-- sdmmc2-d47-sleep-0
 pinconfig    15  [   ]   pinconfig             |   |   |-- dac-ch1
 pinconfig    16  [   ]   pinconfig             |   |   |-- dac-ch2
 pinconfig    17  [   ]   pinconfig             |   |   |-- dcmi-0
 pinconfig    18  [   ]   pinconfig             |   |   |-- dcmi-sleep-0
 pinconfig    19  [   ]   pinconfig             |   |   |-- i2c1-0
 pinconfig    20  [   ]   pinconfig             |   |   |-- i2c1-1
 pinconfig    21  [ + ]   pinconfig             |   |   |-- ltdc-a-0
 pinconfig    22  [   ]   pinconfig             |   |   |-- ltdc-a-1
 pinconfig    23  [   ]   pinconfig             |   |   |-- m-can1-0
 pinconfig    24  [   ]   pinconfig             |   |   |-- m_can2-sleep at 0
 pinconfig    25  [   ]   pinconfig             |   |   |-- pwm5-0
 pinconfig    26  [   ]   pinconfig             |   |   |-- pwm5-sleep-0
 pinconfig    27  [   ]   pinconfig             |   |   |-- sai2a-2
 pinconfig    28  [   ]   pinconfig             |   |   |-- sai2a-3
 pinconfig    29  [   ]   pinconfig             |   |   |-- sai2b-0
 pinconfig    30  [   ]   pinconfig             |   |   |-- sai2b-1
 pinconfig    31  [   ]   pinconfig             |   |   |-- sai2b-2
 pinconfig    32  [   ]   pinconfig             |   |   |-- sai2b-3
 pinconfig    33  [ + ]   pinconfig             |   |   |-- sdmmc1-b4-0
 pinconfig    34  [   ]   pinconfig             |   |   |-- sdmmc1-b4-od-0
 pinconfig    35  [   ]   pinconfig             |   |   |-- sdmmc1-b4-sleep-0
 pinconfig    36  [   ]   pinconfig             |   |   |-- sdmmc3-b4-0
 pinconfig    37  [   ]   pinconfig             |   |   |-- sdmmc3-b4-od-0
 pinconfig    38  [   ]   pinconfig             |   |   |-- sdmmc3-b4-sleep-0
 pinconfig    39  [ + ]   pinconfig             |   |   |-- uart4-0
 pinconfig    40  [   ]   pinconfig             |   |   |-- uart4-idle-0
 pinconfig    41  [   ]   pinconfig             |   |   |-- uart4-sleep-0
 pinconfig    42  [   ]   pinconfig             |   |   |-- usart1-1
 pinconfig    43  [   ]   pinconfig             |   |   |-- usart1-idle-1
 pinconfig    44  [   ]   pinconfig             |   |   |-- usart1-sleep-1
 pinconfig    45  [   ]   pinconfig             |   |   |-- usart3-0
 pinconfig    46  [   ]   pinconfig             |   |   |-- usart3-idle-0
 pinconfig    47  [   ]   pinconfig             |   |   |-- usart3-sleep-0
 pinconfig    48  [   ]   pinconfig             |   |   |-- usart3-1
 pinconfig    49  [   ]   pinconfig             |   |   |-- usart3-idle-1
 pinconfig    50  [   ]   pinconfig             |   |   |-- usart3-sleep-1
 pinconfig    51  [   ]   pinconfig             |   |   `-- usbotg_hs-0
 pinctrl       1  [ + ]   pinctrl_stm32         |   |--
pin-controller-z at 54004000
 gpio         11  [ + ]   gpio_stm32            |   |   |-- gpio at 54004000
 pinconfig    52  [ + ]   pinconfig             |   |   |-- i2c4-0
 pinconfig    53  [   ]   pinconfig             |   |   |-- i2c4-1
 pinconfig    54  [   ]   pinconfig             |   |   |-- usart1-0
 pinconfig    55  [   ]   pinconfig             |   |   |-- usart1-idle-0
 pinconfig    56  [   ]   pinconfig             |   |   |-- usart1-sleep-0
 pinconfig    57  [   ]   pinconfig             |   |   |-- spi1-0
 pinconfig    58  [   ]   pinconfig             |   |   `-- spi1-sleep-0
 ram           0  [   ]   stm32mp1_ddr          |   `-- ddr at 5a003000
 simple_bus    2  [   ]   generic_simple_bus    |-- mlahb
 remoteproc    0  [   ]   stm32_m4_proc         |   `-- m4 at 10000000
 regulator    17  [ + ]   fixed regulator       |-- vin
 regulator    18  [ + ]   fixed regulator       |-- regulator-mcan
 nop           1  [ + ]   scmi-agent            `-- scmi-0
 clk           1  [ + ]   scmi_clk                  |-- protocol at 14
 reset         1  [ + ]   scmi_reset_domain         `-- protocol at 16

Despite all these attempts, there is no output from u-boot on the
screen. Also, attempting to load splash image manually (using
ext4load) and display them with bmp display does not lead to anything
shown on display but also does not show any error messages.

Now I am out of ideas of what else could be done or how to find the
reason for the problem. So I would really appreciate any suggestions
from fellow u-booters :-)

Thank you,
Andrey.


More information about the U-Boot mailing list