Initialization of FreeRTOS+TCP, STM32 and Maxwell Switch

I am working with FreeRTOS+TCP on STM32.
I am working with FreeRTOS 10.2.0, and +TCP V2.3.2.

Although +TCP has worked correctly in several projects with STM32F4 and STM32F7, both with ETH in RMII mode and in MII mode, now I am facing a problem that I have not been able to solve.
I have a STM32 connected to a Marvell switch (88E6071). Although I initialize the Maxwell switch correctly, when I do the FreeRTOS_IPInit() I don’t know if the PHY or which part of the IP stack should not start correctly because I have no connection. It does not respond to Ping.
This same hardware and maxwell initialization works correctly with the LWIP library generated automatically with STM32CubeIDE, so I think there must be some configuration in the FreeRTOS+TCP that I am not doing correctly.

Any idea or help is welcome because although I have reviewed the code and the multiple options I can’t get the STM32 with the ETH in MII mode and the Marvell switch to work.

Thanks in advance

Normally, the STM32Fx drivers make use of a phyHandling.c. That is a generic driver that works for most 100 Mbps PHY’s.

As this is a switch, I would like to see how far it gets when initialising. Would it be possible to print some logging? Or step through the module and see how far it gets?


Hi, thanks for the reply. I will try to clarify a bit the Call Hierarchy.

I have created a flowchart trying to clarify the calls and functions that the program goes through.
I leave you the link where you can visualize the diagram. I have put in bold those critical points such as the vPhyDiscover(), xHas_19_PHY that answers ‘No’, the timeout of the AutoNegotiation, and the DoneMask that answers ‘No’.

I also attach the content of the xPhyObject structure in the states prior to PhyInitialise, prior to PhyDiscover, prior to PhyConfigure, and after PhyConfigure.

Best regards,

Thanks for this information. It looks like the PHY ID is something like 0x000710, and it is not yet recognised by our driver.

What I also see is that the switch is seen at 4 PHY addresses: 24 up to 27.

I will read the reference of you switch and come back to it.

Thank you very much for your interest.
As I said in the first post of the topic, it seems to be a software configuration issue. When I use CubeIDE and generate a project with FreeRTOS v10.2.1 and LwIP v2.1.2 with the standard configuration, the ethernet communications work properly with the marvell switch.
If you need any additional information do not hesitate to ask me for it.

Has anyone been able to find out anything about this topic?
How could I collaborate? What part of the flow should I focus on so that new PHY IDs are recognized? Inside the xPhyRead()?

Hello again, I guess there is still no solution to the +TCP problem with the Marvell switch (88E6071). If anyone can shed some light on the matter I would be very grateful.

Oops, I silently assumed that the problem with the Ethernet switch was already solved.
In order to speed things up, I will contact you directly. As soon as it is solved, we will report back here. Hein

An update for those following this thread:
I made some adaptations to the generic PHY handler for the Marvell switch, but at this moment @eyes is not able to work in the lab with the hardware setup.

Hi everyone,

I’m facing the same issue as @eyes encountered and I still can’t get them to work.

Has anyone found a solution?