cancel
Showing results for 
Search instead for 
Did you mean: 

Can't boot without RJ45 Connection(Ethernet) - STM32MP157F

SPark.15
Associate II

Hello Guys.

I made a custom board from the EV1 circuit base, removing unnecessary parts.

(Most of them are the same as the EV1. Only parts that are not in use have been removed.)

And after creating Device Tree using CubeMX, I succeeded in making my image.

(EMMC's circuit connection and Device Tree are the same as EV1.)

But my board can't boot to EMMC if I remove the RJ45 connection.

If booting without RJ45 connection (Ethernet), I can check the following message.

(The same message could be confirmed even after power reset.)

DRAM:  1 GiB
Clocks:
- MPU : 800 MHz
- MCU : 208.878 MHz
- AXI : 266.500 MHz
- PER : 0 MHz
- DDR : 533 MHz
Fastboot key pressed, STM32Programmer key pressed, entering download mode...
WDT:   Started with servicing (32s timeout)
NAND:  0 MiB
MMC:   STM32 SD/MMC: 2, STM32 SD/MMC: 0, STM32 SD/MMC: 1
Loading Environment from MMC... OK
In:    serial
Out:   serial
Err:   serial
invalid MAC address in OTP 00:00:00:00:00:00
Net:   
Error: ethernet@5800a000 address not set.
No ethernet found.
 
Hit any key to stop autoboot:  0 
Boot over usb0!
Invalid or missing layout file.DFU alt info setting: done

In case of RJ45 connection (Ethernet), EMMC boots normally.

So I tested with Image of Distribution Package provided by ST, but the problem is the same.

(It's normal on EV1, but my board has the same problem - ST Distribution Image.)

How should I approach this issue? I'm not sure how.

I need your help.

Thanks.​

3 REPLIES 3
AntonioST
ST Employee

In U-Boot there is the possibility to enable "fastboot" to support Android. By default "fastboot" is enabled by pressing the button "User PA13" on EV1.

Some additional detail is available here:

https://wiki.st.com/stm32mpu/wiki/LEDs_and_buttons_on_STM32_MPU_boards#Description

https://wiki.st.com/stm32mpu/wiki/How_to_configure_U-Boot_for_your_board#Config_node

I suspect that in your board you are reusing GPIO PA13 for some other purpose, somehow linked with the ethernet.

As a solution, you can either:

- completely disable "fastboot" in U-Boot, by re-configure it and disable CONFIG_FASTBOOT, or

- move to another button the enabling of "fastboot" by changing in U-Boot the following line in "arch/arm/dts/stm32mp157a-ed1-u-boot.dtsi", or

st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;

- use another GPIO for the ethernet, instead of PA13.

Thanks for your answer.

Through your answers, I learned the function of the PA13 and PA14.

​But there is something I can't understand.

There is no connection of PA13 to PA14 in the schematic of my board.0693W000006Ggn1QAC.png

And the relevant part of my CubeMX Device tree is as follows.

{
 
	/* USER CODE BEGIN root */
 
	aliases{
		i2c3 = &i2c4;
		mmc0 = &sdmmc1;
		mmc1 = &sdmmc2;
		i2c1 = &i2c2;
		i2c4 = &i2c5;
		spi0 = &qspi;
		usb0 = &usbotg_hs;
	};
 
	config{
		u-boot,boot-led = "heartbeat";
		u-boot,error-led = "error";
		u-boot,mmc-env-partition = "ssbl";
		st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
		st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
	};
 
	led{
 
		red{
			label = "error";
			gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
			default-state = "off";
			status = "okay";
		};
	};
	/* USER CODE END root */
 
	clocks {
		u-boot,dm-pre-reloc;
 
		/* USER CODE BEGIN clocks */
		/* USER CODE END clocks */
 
#ifndef CONFIG_STM32MP1_TRUSTED
		clk_lsi: clk-lsi {
			u-boot,dm-pre-reloc;
 
			/* USER CODE BEGIN clk_lsi */
			/* USER CODE END clk_lsi */
		};
		clk_hsi: clk-hsi {
			u-boot,dm-pre-reloc;
 
			/* USER CODE BEGIN clk_hsi */
			/* USER CODE END clk_hsi */
		};
		clk_csi: clk-csi {
			u-boot,dm-pre-reloc;
			status = "disabled";
 
			/* USER CODE BEGIN clk_csi */
			/* USER CODE END clk_csi */
		};
		clk_lse: clk-lse {
			u-boot,dm-pre-reloc;
			st,drive = < LSEDRV_MEDIUM_HIGH >;
 
			/* USER CODE BEGIN clk_lse */
			/* USER CODE END clk_lse */
		};
		clk_hse: clk-hse {
			u-boot,dm-pre-reloc;
			st,digbypass;
 
			/* USER CODE BEGIN clk_hse */
			/* USER CODE END clk_hse */
		};
#endif	/*CONFIG_STM32MP1_TRUSTED*/
	};
 
}; /*root*/

So I want to completely disable the function you mentioned.

However, the CONFIG_FASTBOOT does not exist in any ST base layer.

How do I disable that feature? Please provide guidelines.

And what happens when you remove the line below?

I want to completely remove it.

st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;

I need your help​

Thanks

AntonioST
ST Employee

If you only remove the line

st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;

without disabling CONFIG_FASTBOOT you should get an error at boot time.

The option CONFIG_FASTBOOT is activated automatically by the option CONFIG_USB_FUNCTION_FASTBOOT that is in U-Boot default configuration files '<u-boot>/configs/stm32mp15_*_defconfig' and/or in the patches applied to U-Boot by yocto layers.

Disabling CONFIG_USB_FUNCTION_FASTBOOT should fix the issue.

The fact that you have 'interference' from ethernet cable on 'floating' PA13 could be explained with board noise; probably your device tree doesn't set any pull-up to PA13, so it get sensitive to some noise on the board.