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.​

This discussion is locked. Please start a new topic to ask your question.
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.