I am new on the forum and am currently working on a project to design an ethernet electronic board. I will have a microcontroller 32-bit with an external PHY. I wanted to know : depending on the TCP/IP stack I will choose, will there be any restriction on the external ethernet PHY or all the PHY are usable? The thing is I need to choose the Ethernet PHY before the microcontroller and then I don't know if I will use uIP or Contiki or microchip stack or any other.
Basically there should be no difference what PHY You'll use, since the low level driver is written separately from all the TCP/IP stack itself. At least I am sure this is done in LwIP, since I use this stack with Micrel PHY - had to write my own initialization setup stuff.
All PHY will be usable. You choose the PHY based on speed and media (e.g. 100BASET, 1000BASESX). Most PHYs have MII (Media Independant Interface), RMII (Reduced [pin count] MII or GMII (Gigabit MII). Your microcontroller will need one of those interfaces. For example MII is limited to 100 Mb, if you want Gigabit you need GMII or similar.
Microcontroller TCP stacks tend to include the drivers for the MACs and PHYs used. So if your TCP/IP stack doesn't have a driver for your PHY then you will have some work to do to add one.
Adding a new phy to a stack is not an insurmountable task. The interfaces tend to be fairly standard with just some slight configuration changes needed but if it's your first time working with ethernet sticking with one that is already known to work with your TCP/IP stack is likely the path of least problems.