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.

TM4C129ENCPDT: Getting a fault and trying to figure out where the pc is pointed

Part Number: TM4C129ENCPDT

Our fault handler save the exception stack to eeprom and when we look at it on the next boot, the program counter is pointed to 0x42014aca.

Can you tell us if this is ROM code a what might be out there?

  • Hi,

      No this is not a ROM location. Most of the time the fault exception is due to access to peripherals that are not yet enabled or not reserving enough memory stack or heap for dynamic memory allocation. Please check the fault exception status and address registers. They will provide additional information as to the cause of the exception.

  • Charles,

    I'm pretty sure we don't have any peripherals out there. Here are some of our other registers saved at this time
    r0=0xffffffff, r1=0x20012058, r2=02e9cb, r3=0x2002c13c, r12=0x2002c4f0, lr=0x5b4a1, pc=0x42014aca, xpsr=0x1000000

    Also looks like the FAULT_FIRMWARE_FLAG_SW_FAULT flag is set

  • Hi Jeff,

    Also looks like the FAULT_FIRMWARE_FLAG_SW_FAULT flag is set

    I think your application defines this flag. What is this flag?

    Can you tell us if this is ROM code a what might be out there

    The ROM code starts at 0x02000000. Please see below. 

    the program counter is pointed to 0x42014aca.

    The memory region that comes close to 0x42014aca is the bit-banded alias to 0x40000000 - 0x400FFFFF which is the memory region for peripherals. 

    I'm pretty sure we don't have any peripherals out there. Here are some of our other registers saved at this time
    r0=0xffffffff, r1=0x20012058, r2=02e9cb, r3=0x2002c13c, r12=0x2002c4f0, lr=0x5b4a1, pc=0x42014aca, xpsr=0x1000000

    I can't interpret these just r1,r2,r3 without contexts. 

    Please refer to the Fault Status and Address Registers in the datasheet as these registers provide additional information about the faults. Note that for inpreceise faults, you cannot rely on the fault address register due to the write buffering inside the processor. Faults due to read operations are precise and the fault address register is a good indication of the offending instruction. 

    This app note will be very helpful to diagnose the faults. https://www.ti.com/lit/pdf/spma043

    If you believe that you are not accessing any peripherals that are yet enabled then the most likely cause of the fault is the lack of memory stack or heap.  

  • This post resolved the reboot hang we were seeing

    e2e.ti.com/.../5205041