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

stuck at address 0x00000344 - MBC2103

Hi,
Occasionally my code gets stuck at address 0x00000344 - I'm having trouble figuring out what's going on in the debugger. The disassembly list in uVision seems suspect as I page up and down (output looks like it's a loop of some other different memory locations?), and the call stack is empty... Perhaps this is a 'protected' interrupt or another unused interrupt that the default Startup.s sets up to loop-in-place, but I'm having trouble figuring out where/what that is, I need some guidance, kind of a newb with Keil tools and the LPC210x... yikes!

0x00000344 FFFE (???)
0x00000346 EAFF ???

thanks!
Marc

  • Occasionally my code gets stuck at address 0x00000344 - I'm having trouble figuring out what's going on in the debugger.

    That's most likely because by the time you see it being stuck, it's way too late to observe the reason. It's a bit like seeing a dead person with blue lips and asking yourself how blue lips could cause death --- well, they don't, but some types of death go along with a symptom of blue lips.

    Your program probably entered a fault condition somewhere which sent it through a random jump and, after some number of crazy steps and jumps, ended up in this pitfall. You need to catch this problem way earlier in its chain of events:

    1) make all "hang me in a dead loop" aborts distinguishable from each other (e.g. put something in a register or global before entering the loop, or better still, make the dead-loop write that value).

    2) analyze your program for real. There should be no "some part of ... might be doing ...". Find out what they actually do. All of them.

  • Thanks for the basics but... I'm a newb at the toolset, not at debugging :)

    I was hoping 0x00000344 was a 'magic number' that someone might recognize.


    1) make all "hang me in a dead loop" aborts distinguishable from each other (e.g. put something in a register or global before entering the loop, or better still, make the dead-loop write that value).

    If I could catch it at that point then I wouldn't have needed to post anything, I would have found it already!