Question
Ethernet TX doesn't work because ETH_DMATxDescListInit() doesn't initialize the entire ETH_DMADescTypeDef
The officially recommended recipe for lwIP on STM32H7 puts the ethernet DMA descriptors in SRAM1. SRAM1 is not zero'd by the default startup code.
It's unsafe for the network drivers to assume that buffers and critical data structures live in .bss.
Fix: ETH_DMATxDescListInit() should zero out the data structures w/ memset.
static void ETH_DMATxDescListInit(ETH_HandleTypeDef *heth)
{
ETH_DMADescTypeDef *dmatxdesc;
uint32_t i;
// There is no guarantee that the Tx Descriptor is in pre-initialized memory
// zero it out to be completely sure.
memset(&heth->TxDescList,0,sizeof(ETH_TxDescListTypeDef));
/* Fill each DMATxDesc descriptor with the right values */
for(i=0; i < (uint32_t)ETH_TX_DESC_CNT; i++)
.
.
.
