Hello,
I'm using an STM32F769I EVAL board to test a web server implementation in Keil RTX. I have the project set up to use a the STM32CubeMX low-level drivers and the higher-level Keil PHY and EMAC drivers (the PHY_DP83848C and EMAC_STM32F7xx drivers, part of the STM32F7xx_DFP PACK in Keil) on top of those drivers.
The code I have was working fine until I decided to fix an issue I was having on another Ethernet project. When a project is started from CubeMX rather than Keil, I have been running into an issue in the EMAC_STM32F7xx file where two structs (TX_Desc and RX_Desc) are being passed to a function called SCB_InvalidateDCache_by_Addr. The function is not looking for these structs but uint32_t pointers instead. This was causing a compilation error. NOTE: This function was implemented by Keil in their driver and not implemented by me.
I decided to try and fix this issue by editing the EMAC_STM32F7xx file and casting the structs being passed to the function to uint32_t pointers instead. This made the compilation errors go away, but when I uploaded the code to my board it no longer was recognized on the network. All the network configurations were still the same, it just wasn't being recognized by my router. I can still ping the router from the board, but the router isn't able to resolve the requested static IP address on the network.
I tried reverting the EMAC_STM32F7xx file back to what it was before I edited it, but the issue still persists. I even reinstalled the PACK (the STM32F7xx_DFP PACK), recompiled my project, and re-uploaded it to the board, but I still have no luck. The board will not resolve on the network.
I made sure I am calling the netInitialize() function from my code as well.
As a note, I am using IPv4, with a subnet mask of 255.255.255.0. I am using version 5.06 of the ARMCC compiler, version 6.0.1 of STM32CubeMX, version 2.14.0 of the STM32F7xx_DFP PACK, and MDK-ARM Pro version 5.33.0.
My runtime configuration and driver set up are given in the screen shots below along with the function calls I am referring to in the EMAC-STM32F7xx file.
Any help would be very much appreciated.
Thanks!
Modifying the CMSIS EMAC driver file EMAC_STM32F7xx.c usually is not a correct way to fix such a network stack issue. Usually such an issue is caused by a wrong configuration in STM32CubeMX.
Please make sure you have followed the STM32CubeMX setup documentation by clicking the link below, especially the section regarding the CMSIS ethernet setup. And double check with the reference manual of your STM32F7xx to make sure you have configured the pins, interrupts, DMA etc. correctly in STM32CubeMX.
Thank you for the reply! I'm fairly certain I had my STM32CubeMX configuration setup correctly, however, as it was working previously. I only started running into the issue after I edited the EMAC_STM32F7xx.c file. I'll double check my configuration, but I am not certain that is the issue.
I have been reading and reading, but still have no clue where to start. Reply. Edit. Insert. Format STM32F769I EVAL Ethernet Not Resolving on Network 0.
Facetime PC
RX_Desc and TX_Desc are in a structure that needs to be located in RAM which DMA can access. By default they are located to address 0x2000C000. In case you need to override this you can define EMAC_DMA_MEMORY_ADDRESS (for the EMAC module or on a project level) with the desired address.