Skip to main content
PHoll
Associate
May 8, 2019
Solved

How to get Ethernet working again after upgrading to firmware FW_H7_V1.4.0 ?

I had several projects running, created with STM32CubeMX. Among them also the example H743ZI_LwIP_test1. Things were fine with firmware 1.3.0 and 1.3.2 but after upgrading to 1.4.0 , I can no longer connect to the network. No ping, no nothing. Currently I test with the NUCLEO-H743ZI board.

I compared .ioc files and various code source, but couldn't find any

Any help welcome,

thanks in advance

Peter

This topic has been closed for replies.
PHoll
PHollBest answer
Associate
February 13, 2020

An Update to this

As I initially wrote that problem occurred with the H7 firmware update from FW_H7_V1.3.0 to FW_H7_V1.4.0. After being busy with other projects I resumed MCU programming still with the H7 family and meanwhile CubeMX is at V5.5 and H7 firmware at FW_H7_V1.6.0.

Good News the above problem seems gone.

When comparing the code generated now to before one finds some differences in the ethernetif.c file, the relevant to me seems in function low_level_input(...) :

old code:

#if defined(DUAL_CORE) && defined(CORE_CM7) 

  /* Invalidate data cache for ETH Rx Buffers */

  SCB_InvalidateDCache_by_Addr((uint32_t *)RxBuff.buffer, framelength);

#endif   

new code:

#if !defined(DUAL_CORE) || defined(CORE_CM7)

  /* Invalidate data cache for ETH Rx Buffers */

  SCB_InvalidateDCache_by_Addr((uint32_t *)RxBuff.buffer, framelength);

#endif

As you can see the #if has changed resulting that the call to SCB_InvalidateDCache_by_Addr is now active while it wasn't before.

My guess is that the ST programmers made a mistake when adapting the template file (ethernetif_h7.ftl) for the dual core H7x5x and later corrected it.

BTW: when using the ADCs again SCB_InvalidateDCache_by_Addr() is a good friend to make the DMA mode working.

24 replies

PHolt.1
Senior
August 5, 2021

Is this "data cache impacting ethernet" also applicable to 32F417?

I am working on a project on which a huge amount of time has been spent applying every ST bug patch found by googling around :) and it would be great to know if this applies. The current CPU config is: data cache, instruction cache, and prefetch are all ENABLED.

PHoll
PHollAuthor
Associate
August 7, 2021

The cause for my original question was exclusively 32H... related, it occured after I switched from a 32F746 to the above H nucleo board. There was nothing noticeable with an F board using Ethernet (it has a different memory-architecture), in other words everything worked as documented.

However, I haven't done any further development for more than a year, so I can't say what new bugs ST managed to implement in their firmware.