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.

CCS/EK-TM4C1294XL: What do the register of address 0xE000.EDF8 refer to @ tm4c1294ncpdt memory?

Part Number: EK-TM4C1294XL

Tool/software: Code Composer Studio

Hi,

I'm working on TCP LWIP library and trying to communicate with PC using Modbus TCP Java library J2Mod.

but after get the PC client connected, i get the MCU application halted with fault NVIC_FAULT_ADDR at address 0xE000.EDF8.

I have check the memory map for the name for the address 0xE000.EDF8 but find nothing, so what this 0xE000.EDF8 means? is it general purpose memory location?

  • Hello Hani,

    That is the location within the device for the Fault Registers.

    Have you gone through our Fault Diagnosis app note yet? If not it will help a lot: http://www.ti.com/lit/an/spma043/spma043.pdf

    There should be details in one of the fault registers to indicate more.

    The most typical case of a fault ISR is that a peripheral has not been enabled properly before it is accessed. If there are any peripherals that are used only after the PC connects, check those.

  • Hello Ralph 

    I have checked already the Fault Diagnosis app note but get nothing,

    FYI, which made me crazy that the code works fine for about 10 times of same modbus TCP data request instructions and then get halted due to fault.

    did you face similar issue before? 

    Regards

    Hani

  • Hello Hani,

    That sounds like a buffer overflow or a stack overflow. I remember a couple prior times where customers were having issues similar to yours where the code runs fine and then arbitrarily faults and those cases always were due to some sort of overflow.

    I'd start with your stack and increase it, but if that doesn't help, then look through the chain of functions that get called when the issue occurs and see if you can find any buffers that may have been allowed to run over.

  • Thanks Ralph, I think this would be the case, as i get copy from the enet_io of TCP function that uses buffer structure.

    but unfortunately i don't have previous experience with buffers. Appreciate your help for this?

    here is the buffer used in the example, note the next buffer pointer which will always exist in case of received TCP block.

  • Hello Hani,

    Have you tried changing the stack size yet? That could also be the issue and wouldn't deal with the buffers. The buffers for the TCP functions that come w/ TivaWare should be fine, usually it's application code that can introduce a buffer overrun by mistake.

  • Thank you Ralph, i found that the stack size was too small and changed it to be equal the enet_io project (1024) and it works fine now.

    Regards

    Hani