2025-07-24 10:29 PM
Hi,
I'm using a STM32f767ZIT with FreeRTOS and LWIP on a custom board.
After running into some weird UDP transmission issues, I discoverd that in the generated ethernetif.c file, the DCache is not cleaned in the low_level_output function.
Adding this at line 414 ( after Txbuffer[i].len = q->len; ) in low_level_output() fixed my issues.
SCB_CleanDCache_by_Addr(
(uint32_t *)((uint32_t)(Txbuffer[i].buffer) & ~0x1F),
Txbuffer[i].len + ((uint32_t)(Txbuffer[i].buffer) & 0x1F)
);
In the HAL_ETH_RxLinkCallback, the SCB_InvalidateDCache_by_Addr is used, so this seems like an oversight?