Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


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

C166: Stack does not update memory!

Hi,
I have a Stack problem in an interrupt handler.

When I use a PUSH or CALL instruction, SP is correctly updated, but the memory at the address pointed by SP remains 0!!
DPP3 = 3

I checked under monitor control, but the program in Flash still crashes.

STK_SIZE fields in SYSCON to 7 (in startup code): No wrapping: entire internal RAM used as stack.

The behavior with the simulator is OK.

The system stack is F800 - F880, and SP is in the correct range, problem detected with SP=F860.

I've tried the code with 2 C167CS cards, this should not be a hardware pb.

Thanks for any help,

Parents Reply Children
  • The problem is that the memory is not updated after a PUSH.
    For instance, if
    * SP=0xF860
    * the instruction PUSH R13 is executed (in the interrupt handler, under the control of the monitor, step by step), with R13=0xF432

    Then SP is updated to 0xF85E (ok), but the memory at this address remains 0!!

    I wonder if the memory is correctly refreshed by the monitor and my program crash with other reasons :-/ ?

    Thanks for your help,
    M. briday

  • I found the error.
    The monitor was compiled with STKSZ (of SYSCON) set to 0, and it must be 7 (I managed stacks manually for different reasons)
    I changed this field to 7 in the start1167.a66 file, but this was not sufficent.
    That's why the monitor sent hazardous data to the IDE.