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

Tim DeBaillie debaillie at ciholas.com
Mon Nov 26 16:07:32 CET 2007


On Sun, 25 Nov 2007, Michael Bieri wrote:

> 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
> _______________________________________________
> http://lists.egnite.de/mailman/listinfo/en-nut-discussion
>

I'm glad to see someone else is using the SAM7S with Ethernut.  We have 
had no similar issues with the GCC-4.2.1 compiler with the -Os compile 
flag.  Of course you have said that this works with your compiler.

Which compiler are you using.  I had a similar issue with the AT91SAM7X256 
and the WinARM compiler.  Switching to GNUARM fixed the problem.  Since 
then we have switched to GNUARM for linux.

Tim





More information about the En-Nut-Discussion mailing list