SAM7 and GDB

nobody wrote on Tuesday, November 07, 2006:

I’m using the great FreeRTOS on an at91sam7s(arm7tdmi) in conjunction with a
spi color lcd (nokia’s) and a mmc card, and I get random DataAbort which I
need to debug.

I’m using gcc and openocd+gdb and I’d like gdb to know about the USER stack
when the program is beeing stopped debugged in ABORT mode.

More generally, it would be interesting to switch from stack to stack using
the gdb "thread" command.

rtel wrote on Tuesday, November 07, 2006:

I am not proficient enough in GDB to answer your questions directly, but looking at the user stack is quite straight forward in raw memory format.

Inspect the variable pxCurrentTCB.  This will tell you where the last stored top of stack was and where the bottom of the stack is.  You can then simply inspect this memory in the memory window.  You can see the high water mark of the stack as the stack is filled with 0xa5 prior to the task commencing.

Most data aborts originate from stack overflow.  Try increasing the stack allocated to your tasks.

Regards.

anonymous wrote on Wednesday, November 08, 2006:

Thanks.

Yes in the meantime I investigated more, and it happenned to be really a stack size problem.

Do you think it’s worth adding optional (for debugging) automatic check code for the stack use in
vApplicationTickHook() or in a better place ?

I’ll investigate the use of gdb, so to try and make it aware of “threads” using pxCurrentTCB.

Thanks a lot,

Best regards,

david