This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Migrating from Stellaris to Tiva, an ethernet question

Other Parts Discussed in Thread: LM3S6965

Hi All,

I am porting my code from Stellaris Cortex M3 (LM3S6965) to the Tiva TM4C129x . I have downloaded the TivaWare software tool and is trying to compile my code. I found that the TivaWare has the support for pretty much all the GPIO and peripheral modules except the ethernet. For example there is no map for the ethernet interrupt INT_ETH in the file inc/hw_ints.h.

Do you know why is this so and is there a way to fix it? I read the Stellaris to Tiva migration guide and it said that the Ethernet module, along with I2S and EPI, have been removed from DriverLib because "they are not available on any current Tiva parts". But clearly the TM4C129 does have an ethernet module. Am I missing something?

Thank you for your help,

  • The migration guide was written before the TM4C129 was announced so we couldn't include any Ethernet information in the document. I will have to add an update to my ToDo list!

    The story on Ethernet is pretty easy (though perhaps not what you want to hear). The TM4C129 contains a totally different Ethernet MAC from the Ethernet-enabled Stellaris parts and, because the hardware is so different, we wrote a brand new driver with a new API to handle it. I looked into mapping the old API over the new hardware but it wasn't going to work. The new peripheral is many times better than the old one and uses descriptor lists and DMA to transfer packets. With the data transfer model being so different, using the old API didn't make any sense at all.

    If you download the TIvaWare 2.0.1 release, you'll find the same set of Ethernet examples that we had in StellarisWare with updates to use the new driver. You'll also find drivers for both the uIP and lwIP TCP/IP stacks. If your software already uses one of these, the changes you need to make should be minimal - pretty much just replace the low level network driver. If you wrote directly to the old Ethernet API, you will have to recode that layer to use the new EMAC API instead.

    As far as your interrupt goes, the new MAC's interrupt is called INT_EMAC0. This is deliberately different (as is the API naming) to make it obvious that the old API won't work with the new hardware.