cancel
Showing results for 
Search instead for 
Did you mean: 

DCache is not cleared in ethernetif low_level_output function

MWKIN
Visitor

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?

0 REPLIES 0