[En-Nut-Discussion] Nut/OS thread stackpointer overwritten on ARM7S

Michael Bieri mibieri at ee.ethz.ch
Sun Nov 25 19:07:29 CET 2007


Hi

I 've got a very strange bug in my Nut/OS application: The stackpointer 
in NUTTHREADINFO.td_sp is overwritten with the value 0x600000D3.

Some additional information:
- I use an AT91SAM7S256 on an olimex dev board, for debugging, I use 
olimex' ARM-USB-OCD together with GDB in Eclipse.
- The problem occurs in MmCardReadOrVerify (mmcard.c:465) when I try to 
mount an SD-Card with volid = _open(BLKDEV_NAME ":1/" FSDEV_NAME, 
_O_RDWR | _O_BINARY
- Very strange: The problem seems to occur on different locations, 
probably depending on my debugging. (When I do single steps, the problem 
normally occurs earlier, but in every case in MmCardReadOrVeryify or 
functions called by this - mostly on/after returning to MmCardReadOrVerify)
- And very strange, too: In assembly-instruction stepping mode, I caught 
the problem several times occuring immediately after an LDMIA 
instruction, this instruction loads some values from memory to 
registers. But how can this overwrite my NUTTHREADINFO.td_sp, that is 
stored in memory (and not in a register.)?
- Further, the problem only occurs if I compile with the -O0 parameter, 
using -Os does not make any problems. But of course, I need -O0 for 
debugging.

Does anyone know anything about this problem? I've got no further idea 
to solve this...

Thanks a lot,
Michael



More information about the En-Nut-Discussion mailing list