This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

hard fault with Cortex M1

Note: This was originally posted on 24th December 2008 at http://forums.arm.com

Hi all,

I am developing firmware on Cortex M1 on Actel fusion FPGA.I have built the design that has sram at 0x0 location ,size is 1mb and I use it as my program memory.I have Ethernet interface and I want to debug the driver for the ipcore.

I am facing the problem due to hard fault.When I start the transmission on the Ethernet,after transmission first frame the cortex goes to hard fault.

Would anyone tell me  what may be the reason for hard fault? How to overcome?

I am completely new to arm environment.

regards,
Sumit
Parents
  • Note: This was originally posted on 10th December 2009 at http://forums.arm.com

    [...]
    - The exception return load the stack frame contents into registers.
      If the PSP location is wrong, the processor loaded in incorrect values.
      This include the 0xa5a5a5a5 loading into PC. Since this is not a valid location
      for program code, the hard fault is triggered when it try to fetch instruction.
    - At hard fault exception entry, the value 0xa5a5a5a5 is pushed to the stack as return address.
    [...]


    Thanks for this advice. I just thought the 0xa5a5a5a5 was initial value within this adress - never thought of it has been loaded there. I changed the initial values of the Stackframe, to see if the value changes. And it did. I could backtrace this to a corruption of the stack. We made a mistake in the stack initializing function, which lead to a corruption over time.
Reply
  • Note: This was originally posted on 10th December 2009 at http://forums.arm.com

    [...]
    - The exception return load the stack frame contents into registers.
      If the PSP location is wrong, the processor loaded in incorrect values.
      This include the 0xa5a5a5a5 loading into PC. Since this is not a valid location
      for program code, the hard fault is triggered when it try to fetch instruction.
    - At hard fault exception entry, the value 0xa5a5a5a5 is pushed to the stack as return address.
    [...]


    Thanks for this advice. I just thought the 0xa5a5a5a5 was initial value within this adress - never thought of it has been loaded there. I changed the initial values of the Stackframe, to see if the value changes. And it did. I could backtrace this to a corruption of the stack. We made a mistake in the stack initializing function, which lead to a corruption over time.
Children
No data