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.

TM4C1294NCPDT: Ethernet doesn't work after bootP firmware update

Part Number: TM4C1294NCPDT

I have the following setup:   ccs 6.1.2, TIRTOS 2.16.0.08, compiler 5.2.7, XDC 3.31.1333, TM4C1294NCPDT

I have project that is doing what I need and working wee with one exception.

I using the network stack built in the tool chain and the board can ping, use sockets etc. 

* If I  boot up from power off, everything works as expected, it pings and the sockets work etc.

* if I soft reset using ROM_SysCtlReset() everything works as expected, it pings and the sockets work etc.

* If I connect a JTAG probe probe and use the debugger everything works as expected, it pings and the sockets work etc.

* if I use ROM_UpdateEMAC() to jump back to boot code and do a DFU / fimware update using bootP, the new firmware runs but the board does not ping and the sockets don't work.  If I reset the board, the network works again so I know the firmware that is put in flash using the bootP is valid firmware. 

I did try using the  SysCtlResetCauseGet() to get the reset reason and I noticed after using ROM_UpdateEMAC() and bootP, this is the only case where there is no reset reason bit set so just to try something, if there is no  reason bit set, I called the function  ROM_SysCtlReset() and the Ethernet always worked after that.   I do not think this is any solution I would keep long term but it's a interesting experiment.

The real question is what could I be missing that is causing this?  I'm thinking that the boot code / bootP is changing some default setting in the CPU that my code is not setting and this is the reason the CPU needs to be reset to get the network working,   

Any advice and what  I am missing?

Thanks,

Doug

  • Hello Doug,

    Looking at the bootP / eflash application that is provided, I don't see any indicator that it is coded to trigger the ROM boot loader to execute the application after loading it.

    if there is no  reason bit set, I called the function  ROM_SysCtlReset() and the Ethernet always worked after that.

    This makes sense given what I am seeing in the bootP source code. You could also add that into the bootP source rather than do that at an application level if you want bootP to work like that across multiple projects.

    Best Regards,

    Ralph Jacobi