cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H723VET6 Ethernet doesnt work

EH
Associate

As the subject states I am trying to get Ethernet work on the VET6 Microcontroller. I have tried to configure my microcontroller like the Ethernet example project provided on Github for the STM32H723GT. I have tried the exact code on the H723GT Nucleo Board and it instantly works. The only changes I made were the Heap for FREERTOS which i changed to heap3 and I configured ip-adress etc. to my needs. However when I configure the VET6 with the same parameters it doesnt work. I dont get any errors when flashing the program on the microcontroller, but when I debug the code the programm runs into a hardfault error during the configuration of LWIP. I have already tried reconfigurating the memory in CubeMx, but this doesnt work either. I have also read that I have to reconfigure the memory in the flash script, but by changing the adresses of Rx descriptor etc. in the flash script i can't even build the code.

I think I have tried all the things that are mentioned in the README for STM32H723GT, but it doesnt work. Please comment if anyone can find a solution to this issue. Im sure that it is some sort of memory issue, but I cant fix it.

3 REPLIES 3
STea
ST Employee

Hello @EH ,

you mentioned that you used the STM32H723VET6 is it a custom PCB design of your Board ?

also it might be helpful to share the modification done to the linker file as the STM32H723VET6 has the same RAM size with STM32H723ZG the only difference resides in the Flash size which should not affect the placement of the descriptors in the RAM which i think should remain the same .

make sure you have the correct pins assigned to Ethernet maybe check the schematics for the default solder bridge configuration :

STea_0-1708004550277.png

BR

 

 

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.
EH
Associate

Hi its a custom Board and I somehow was able to fix it by adding

 

#if defined ( __ICCARM__ ) /*!< IAR Compiler */

#pragma location = 0x30000200

extern u8_t memp_memory_RX_POOL_base[];

 

#elif defined ( __CC_ARM ) /* MDK ARM Compiler */

__attribute__((at(0x30000200)) extern u8_t memp_memory_RX_POOL_base[];

 

#elif defined ( __GNUC__ ) /* GNU Compiler */

__attribute__((section(".Rx_PoolSection"))) extern u8_t memp_memory_RX_POOL_base[];

 

#endif

 

in the ethernetif.c file and

 

.lwip_sec (NOLOAD) :

{

. = ABSOLUTE(0x30000000);

*(.RxDecripSection)

 

. = ABSOLUTE(0x30000100);

*(.TxDecripSection)

 

. = ABSOLUTE(0x30000200);

*(.Rx_PoolSection)

 

} >RAM_D2


in the flash.ld file. I tried to add this to the flash script before, however it didnt work then.
By adding the code above in the ethernetif.c file I was able to fix it. Pinging the board works perfectly and I can also execute the code in the StartDefaultTask.

I still have some problem after disconnecting my power supply and reconnecting it. I have to pull my NRST-Pin to Ground to make it work again.
Do you have any solutions for this issue? I read somewhere that I should increase the value of the NRST capacitor. Do you think this would work?
Sorry for my english its not my native language.

STea
ST Employee

Hello @EH ,

Glad you make it work just for your notice the modification in the linker file are valid when using cubeIDE but the other formats in code that resolved your issue are the ones used for IAR or KEIL. Passing to your other request  i recommend you close this thread and open a new thread with a detailed description of your NRST issue .

BR

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.