cancel
Showing results for 
Search instead for 
Did you mean: 

HDMI display and GTK demo with stm32mp1

WLeun.3
Associate III

Hi everyone,

@Kevin HUBER​ 

I am using stm32mp157f-dk2 with ecosystem 3.1, with weston support.

I connected the HDMI display to the development kit, reset the device, but nothing displayed.

After checking, modetest show that the HDMI are properly connected, and the test command

modetest -M stm -s 33:320x1480-60.08 -v

run successfully. But still, nothing displayed.

Anyone knows how to fix this?

Actually, I have report this issue before, in

https://community.st.com/s/question/0D53W00001L0jviSAB/failed-to-start-loadsave-screen-backlight

But I didn't solve that last time.

In addition, does anyone know to how remove the GTK demo from yocto/disable it from application?

I tried to remove packagegroup-st-demo from CORE_IMAGE_EXTRA_INSTALL variable in image.bb, but it doesn't work.

For now I can only disable it by stopping the entire weston service, which is definitely not what I want.

Regards,

Leung

1 ACCEPTED SOLUTION

Accepted Solutions
Kevin HUBER
ST Employee

Hi @WLeun.3​ ,

We found that the LTDC pins are missing in your mx dts. This is normal because by default CubeMx generates the configuration for having the mode DSI on LTDC.

On the starter package, we made a custom DTS to support the HDMI and the DSI mode at the same time.

Please take example on this page to modify your CubeMx DTS:

https://wiki.stmicroelectronics.cn/stm32mpu/wiki/LTDC_device_tree_configuration#DT_configuration_-28board_level-29

You have to at least add the ltdc pins like in the wiki or in the file "stm32mp15-pinctrl.dtsi" on the Developer Package.

	ltdc_pins_a: ltdc-0 {
		pins {
			pinmux = <STM32_PINMUX('G',  7, AF14)>, /* LCD_CLK */
				 <STM32_PINMUX('I', 10, AF14)>, /* LCD_HSYNC */
				 <STM32_PINMUX('I',  9, AF14)>, /* LCD_VSYNC */
				 <STM32_PINMUX('F', 10, AF14)>, /* LCD_DE */
				 <STM32_PINMUX('H',  2, AF14)>, /* LCD_R0 */
				 <STM32_PINMUX('H',  3, AF14)>, /* LCD_R1 */
				 <STM32_PINMUX('H',  8, AF14)>, /* LCD_R2 */
				 <STM32_PINMUX('H',  9, AF14)>, /* LCD_R3 */
				 <STM32_PINMUX('H', 10, AF14)>, /* LCD_R4 */
				 <STM32_PINMUX('C',  0, AF14)>, /* LCD_R5 */
				 <STM32_PINMUX('H', 12, AF14)>, /* LCD_R6 */
				 <STM32_PINMUX('E', 15, AF14)>, /* LCD_R7 */
				 <STM32_PINMUX('E',  5, AF14)>, /* LCD_G0 */
				 <STM32_PINMUX('E',  6, AF14)>, /* LCD_G1 */
				 <STM32_PINMUX('H', 13, AF14)>, /* LCD_G2 */
				 <STM32_PINMUX('H', 14, AF14)>, /* LCD_G3 */
				 <STM32_PINMUX('H', 15, AF14)>, /* LCD_G4 */
				 <STM32_PINMUX('I',  0, AF14)>, /* LCD_G5 */
				 <STM32_PINMUX('I',  1, AF14)>, /* LCD_G6 */
				 <STM32_PINMUX('I',  2, AF14)>, /* LCD_G7 */
				 <STM32_PINMUX('D',  9, AF14)>, /* LCD_B0 */
				 <STM32_PINMUX('G', 12, AF14)>, /* LCD_B1 */
				 <STM32_PINMUX('G', 10, AF14)>, /* LCD_B2 */
				 <STM32_PINMUX('D', 10, AF14)>, /* LCD_B3 */
				 <STM32_PINMUX('I',  4, AF14)>, /* LCD_B4 */
				 <STM32_PINMUX('A',  3, AF14)>, /* LCD_B5 */
				 <STM32_PINMUX('B',  8, AF14)>, /* LCD_B6 */
				 <STM32_PINMUX('D',  8, AF14)>; /* LCD_B7 */
			bias-disable;
			drive-push-pull;
			slew-rate = <1>;
		};
	};
 
	ltdc_sleep_pins_a: ltdc-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('G',  7, ANALOG)>, /* LCD_CLK */
				 <STM32_PINMUX('I', 10, ANALOG)>, /* LCD_HSYNC */
				 <STM32_PINMUX('I',  9, ANALOG)>, /* LCD_VSYNC */
				 <STM32_PINMUX('F', 10, ANALOG)>, /* LCD_DE */
				 <STM32_PINMUX('H',  2, ANALOG)>, /* LCD_R0 */
				 <STM32_PINMUX('H',  3, ANALOG)>, /* LCD_R1 */
				 <STM32_PINMUX('H',  8, ANALOG)>, /* LCD_R2 */
				 <STM32_PINMUX('H',  9, ANALOG)>, /* LCD_R3 */
				 <STM32_PINMUX('H', 10, ANALOG)>, /* LCD_R4 */
				 <STM32_PINMUX('C',  0, ANALOG)>, /* LCD_R5 */
				 <STM32_PINMUX('H', 12, ANALOG)>, /* LCD_R6 */
				 <STM32_PINMUX('E', 15, ANALOG)>, /* LCD_R7 */
				 <STM32_PINMUX('E',  5, ANALOG)>, /* LCD_G0 */
				 <STM32_PINMUX('E',  6, ANALOG)>, /* LCD_G1 */
				 <STM32_PINMUX('H', 13, ANALOG)>, /* LCD_G2 */
				 <STM32_PINMUX('H', 14, ANALOG)>, /* LCD_G3 */
				 <STM32_PINMUX('H', 15, ANALOG)>, /* LCD_G4 */
				 <STM32_PINMUX('I',  0, ANALOG)>, /* LCD_G5 */
				 <STM32_PINMUX('I',  1, ANALOG)>, /* LCD_G6 */
				 <STM32_PINMUX('I',  2, ANALOG)>, /* LCD_G7 */
				 <STM32_PINMUX('D',  9, ANALOG)>, /* LCD_B0 */
				 <STM32_PINMUX('G', 12, ANALOG)>, /* LCD_B1 */
				 <STM32_PINMUX('G', 10, ANALOG)>, /* LCD_B2 */
				 <STM32_PINMUX('D', 10, ANALOG)>, /* LCD_B3 */
				 <STM32_PINMUX('I',  4, ANALOG)>, /* LCD_B4 */
				 <STM32_PINMUX('A',  3, ANALOG)>, /* LCD_B5 */
				 <STM32_PINMUX('B',  8, ANALOG)>, /* LCD_B6 */
				 <STM32_PINMUX('D',  8, ANALOG)>; /* LCD_B7 */
		};
	};

Then I think these lines will also be needed to build:

/* USER CODE BEGIN ltdc */
pinctrl-names = "default", "sleep";
pinctrl-0 = <&ltdc_pins_a>;
pinctrl-1 = <&ltdc_sleep_pins_a>;

Hope it helps,

Regards,

Kevin

In order to give better visibility on the answered topics, please click on 'Select as Best' on the reply which solved your issue or answered your question. See also 'Best Answers'

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

View solution in original post

7 REPLIES 7
WLeun.3
Associate III

Do anyone encounter this blacklight issue before?

Any suggestions are welcome.

The issue only happened on the HDMI display. The DSI display work completely fine.

I have also found this page, but it doesn't help much

https://wiki.st.com/stm32mpu/wiki/How_to_display_on_HDMI#FAQ

WLeun.3
Associate III

Hi,

It has been almost 3 weeks since the original post, but I have yet to receive any response...

last week I tried the starter package to see if the hdmi display correctly. It does, but I noticed two things.

  1. the backlight error exist even for the starter package.
  2. the brightness of the hdmi display is very dim.

This suggests to me that the hdmi backlight error is not fatal, and it is not the root cause that cause my hdmi display to fail.

The only difference between my project and the starter package is that I have edit the config file to use the cubeMX generated dts.

So it should be either:

  1. my config file has something wrong
  2. the generated dts doesn't work as expected

Can any st employee take a look at it? @Kevin HUBER​ 

Regards,

Leung

Hello @WLeun.3​ ,

Sorry for the delay, I have your post opened since several days, but I unfortunately was not able to work on it.

It is interesting to read that you are able to use the HDMI with the starter Package.

But this is weird that you also have the FAILED backlight error with the starter Package. I will make some tests on my 157F-DK2 to help you.

Do you made the test with the Starter Package on the same display?

Do you already read this wiki page? https://wiki.st.com/stm32mpu/wiki/How_to_display_on_HDMI

After a first read of your mx dts, I didn't find something wrong, but I will investigate more.

In your bootlog, you have a warning related to your power that is not providing enough current:

****************************************************
*        WARNING 500mA power supply detected       *
*     Current too low, use a 3A power supply!      *
****************************************************

I don't think this is related to your error, but it can causes some problem with the peripherals. Please be careful to use a power supply of 5V and at least 3A.

The error that I can see in your Bootlog is:

[FAILED] Failed to start Load/Save …s of backlight:5a000000.dsi.0.

This error is related to the DSI screen, but if you are only using the HDMI, it can be normal. Did you unplug the dsi screen?

Please can you test on another screen with a resolution more standard than 320x1480?

Regards,

Kevin

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

Hi again @WLeun.3​ ,

Regarding how to remove the GTK Demo from the distribution package, I don't remember it right now, but I come back when I have the information.

Waiting my answer, you can have a look at the script that launch the demo at start, which is "/usr/local/demo/demo_launcher.py" and this script is called by "/usr/local/weston-start-at-startup/start_up_demo_launcher.sh"

Regards,

Kevin

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
Kevin HUBER
ST Employee

Hi @WLeun.3​ ,

We found that the LTDC pins are missing in your mx dts. This is normal because by default CubeMx generates the configuration for having the mode DSI on LTDC.

On the starter package, we made a custom DTS to support the HDMI and the DSI mode at the same time.

Please take example on this page to modify your CubeMx DTS:

https://wiki.stmicroelectronics.cn/stm32mpu/wiki/LTDC_device_tree_configuration#DT_configuration_-28board_level-29

You have to at least add the ltdc pins like in the wiki or in the file "stm32mp15-pinctrl.dtsi" on the Developer Package.

	ltdc_pins_a: ltdc-0 {
		pins {
			pinmux = <STM32_PINMUX('G',  7, AF14)>, /* LCD_CLK */
				 <STM32_PINMUX('I', 10, AF14)>, /* LCD_HSYNC */
				 <STM32_PINMUX('I',  9, AF14)>, /* LCD_VSYNC */
				 <STM32_PINMUX('F', 10, AF14)>, /* LCD_DE */
				 <STM32_PINMUX('H',  2, AF14)>, /* LCD_R0 */
				 <STM32_PINMUX('H',  3, AF14)>, /* LCD_R1 */
				 <STM32_PINMUX('H',  8, AF14)>, /* LCD_R2 */
				 <STM32_PINMUX('H',  9, AF14)>, /* LCD_R3 */
				 <STM32_PINMUX('H', 10, AF14)>, /* LCD_R4 */
				 <STM32_PINMUX('C',  0, AF14)>, /* LCD_R5 */
				 <STM32_PINMUX('H', 12, AF14)>, /* LCD_R6 */
				 <STM32_PINMUX('E', 15, AF14)>, /* LCD_R7 */
				 <STM32_PINMUX('E',  5, AF14)>, /* LCD_G0 */
				 <STM32_PINMUX('E',  6, AF14)>, /* LCD_G1 */
				 <STM32_PINMUX('H', 13, AF14)>, /* LCD_G2 */
				 <STM32_PINMUX('H', 14, AF14)>, /* LCD_G3 */
				 <STM32_PINMUX('H', 15, AF14)>, /* LCD_G4 */
				 <STM32_PINMUX('I',  0, AF14)>, /* LCD_G5 */
				 <STM32_PINMUX('I',  1, AF14)>, /* LCD_G6 */
				 <STM32_PINMUX('I',  2, AF14)>, /* LCD_G7 */
				 <STM32_PINMUX('D',  9, AF14)>, /* LCD_B0 */
				 <STM32_PINMUX('G', 12, AF14)>, /* LCD_B1 */
				 <STM32_PINMUX('G', 10, AF14)>, /* LCD_B2 */
				 <STM32_PINMUX('D', 10, AF14)>, /* LCD_B3 */
				 <STM32_PINMUX('I',  4, AF14)>, /* LCD_B4 */
				 <STM32_PINMUX('A',  3, AF14)>, /* LCD_B5 */
				 <STM32_PINMUX('B',  8, AF14)>, /* LCD_B6 */
				 <STM32_PINMUX('D',  8, AF14)>; /* LCD_B7 */
			bias-disable;
			drive-push-pull;
			slew-rate = <1>;
		};
	};
 
	ltdc_sleep_pins_a: ltdc-sleep-0 {
		pins {
			pinmux = <STM32_PINMUX('G',  7, ANALOG)>, /* LCD_CLK */
				 <STM32_PINMUX('I', 10, ANALOG)>, /* LCD_HSYNC */
				 <STM32_PINMUX('I',  9, ANALOG)>, /* LCD_VSYNC */
				 <STM32_PINMUX('F', 10, ANALOG)>, /* LCD_DE */
				 <STM32_PINMUX('H',  2, ANALOG)>, /* LCD_R0 */
				 <STM32_PINMUX('H',  3, ANALOG)>, /* LCD_R1 */
				 <STM32_PINMUX('H',  8, ANALOG)>, /* LCD_R2 */
				 <STM32_PINMUX('H',  9, ANALOG)>, /* LCD_R3 */
				 <STM32_PINMUX('H', 10, ANALOG)>, /* LCD_R4 */
				 <STM32_PINMUX('C',  0, ANALOG)>, /* LCD_R5 */
				 <STM32_PINMUX('H', 12, ANALOG)>, /* LCD_R6 */
				 <STM32_PINMUX('E', 15, ANALOG)>, /* LCD_R7 */
				 <STM32_PINMUX('E',  5, ANALOG)>, /* LCD_G0 */
				 <STM32_PINMUX('E',  6, ANALOG)>, /* LCD_G1 */
				 <STM32_PINMUX('H', 13, ANALOG)>, /* LCD_G2 */
				 <STM32_PINMUX('H', 14, ANALOG)>, /* LCD_G3 */
				 <STM32_PINMUX('H', 15, ANALOG)>, /* LCD_G4 */
				 <STM32_PINMUX('I',  0, ANALOG)>, /* LCD_G5 */
				 <STM32_PINMUX('I',  1, ANALOG)>, /* LCD_G6 */
				 <STM32_PINMUX('I',  2, ANALOG)>, /* LCD_G7 */
				 <STM32_PINMUX('D',  9, ANALOG)>, /* LCD_B0 */
				 <STM32_PINMUX('G', 12, ANALOG)>, /* LCD_B1 */
				 <STM32_PINMUX('G', 10, ANALOG)>, /* LCD_B2 */
				 <STM32_PINMUX('D', 10, ANALOG)>, /* LCD_B3 */
				 <STM32_PINMUX('I',  4, ANALOG)>, /* LCD_B4 */
				 <STM32_PINMUX('A',  3, ANALOG)>, /* LCD_B5 */
				 <STM32_PINMUX('B',  8, ANALOG)>, /* LCD_B6 */
				 <STM32_PINMUX('D',  8, ANALOG)>; /* LCD_B7 */
		};
	};

Then I think these lines will also be needed to build:

/* USER CODE BEGIN ltdc */
pinctrl-names = "default", "sleep";
pinctrl-0 = <&ltdc_pins_a>;
pinctrl-1 = <&ltdc_sleep_pins_a>;

Hope it helps,

Regards,

Kevin

In order to give better visibility on the answered topics, please click on 'Select as Best' on the reply which solved your issue or answered your question. See also 'Best Answers'

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

Hi @Kevin HUBER​ ,

Thanks for your help! And yes, it is the missing LTDC configuration that cause all the troubles. It works perfectly now.

I agree that the backlight error is related to dsi display only. It does not affect my hdmi display and the error exists no matter I plug/unplug the dsi display. The service should instead controllng the backlight of hdmi display, but I am not sure if that is possible/necessary.

For removing GTK demo, the demo_launcher.py and start_up_demo_launcher.sh is only related to the application. How can I remove the "operating system"

0693W00000LxJSzQAN.pngand replace it with my own?

Regards,

Leung

Hello @WLeun.3​ ,

Good news that you are now able to use the HDMI ;).

Regarding you last question, I don't understand what you mean by "operating system".

What you have shared is only the splashscreen of linux (just an image displayed), the GTK demo is no more launched on your board.

What you see is only the Wayland Weston Framework that displays the splashscreen of Linux. Please read this page to have more information about Weston configuration: https://wiki.st.com/stm32mpu/wiki/Wayland_Weston_overview#Configuration

You can already run your personal application / demo or load an image.

Do you mean, that you want to change the default splashscreen image of linux?

This image is managed by the splashscreen layer as I explained in this other question: how-to-enable-the-kernel-splashscreen-on-stm32mp157-board-kernel-54-and-lcd-rgb-interface-

  • layers/meta-st/meta-st-openstlinux/recipes-core/psplash/psplash-drm
  • layers/openembedded-core/meta/recipes-core/psplash

The file "psplash-drm.bb" adds the file psplash-drm-start.service to your filesystem.

The two default images used for the splashscreen are in the same folder:

  • ST13028_Linux_picto_11_480x352_8bits.png
  • ST13028_Linux_picto_11_480x352_8bits_rotation.png

The names of the pictures to use is in the Makefile of the psplash-drm folder.

Hope it helps,

Regards,

Kevin

In order to give better visibility on the answered topics, please click on 'Select as Best' on the reply which solved your issue or answered your question. See also 'Best Answers'

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.