Way to reproduce:
1. Import enet_lwip project to CCS. Remove the following lines from lwIPHostTimerHandler function, with these lines the program doesn't work at all:
if((ui32NewIPAddress == 0) || (ui32NewIPAddress == 0xffffffff)) { // // Loop through the LED animation. // for(ui32Idx = 1; ui32Idx < 17; ui32Idx++) { // // Toggle the GPIO // MAP_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, (MAP_GPIOPinRead(GPIO_PORTN_BASE, GPIO_PIN_1) ^ GPIO_PIN_1)); SysCtlDelay(g_ui32SysClock/(ui32Idx << 1)); } }
Run the program using Debug command - it works. After some time you can see IP address printed to UARTprintf, and WEB page with this address can be opened.
2. Change APP_BASE value from 0 to 0x00004000. Run the program using Debug command - it hangs somewhere on Ethernet initialization stage.
Program hangs only under debugger. If debugger is not active, it works. To check this, do the following:
1. Burn boot_serial program with offset 0.
2. Burn enet_lwip program with offset 0x00004000.
3. Power off and on the board. boot_serial successfully loads enet_lwip, and it works. So, without debugger it is OK.
The problem exists from old Stellaris series. I need to make a program which talks with host using lwip, and works with bootloader. So, I cannot debug it, and cannot load it without debugging, since CSS doesn't have such command.
My working environment:
Code Composer Studio Version: 6.1.3.00034
TivaWare_C_Series-2.1.3.156
Board: EK-TM4C129XL Rev D
Windows 10 x64