FreeRTOS + LPC2294 + Data Abort

mansw wrote on Thursday, June 19, 2008:

I’ve changed the script for memory boundaries of Phytec PCM-023 board, using the workbench edit script tool, and the vTaskStartScheduler() doesn’t return, the board led stops flashing… it seems that it’s branching to a wrong address… 

When I change configTOTAL_HEAP_SIZE to 14196 or to 14204 it stops working, and when I change its value to 14200 works fine!!!

I’ve noticed that application stops in “Data abort” trap…

davedoors wrote on Thursday, June 19, 2008:

Can you step through the code to see where it aborts.  If not, check the abort link register to find the address of the instruction that caused the abort, then set a break point there (I think its the link register value - 8).

mansw wrote on Friday, June 20, 2008:

No, step through the code is hard to do because of the interrupts, so I found out something with your second tip: (Link register - 8) is located in internal flash, but I’m using external flash!!! I’ve checked the link script and could’t find any entry to internal flash… Is there any fixed address in FreeRTOS demo source code? I’ve used demo aplication to configure my project.

davedoors wrote on Friday, June 20, 2008:

Is it possible that a RAM corruption is causing a return address or something similar to send you to a bum location.  Could be a stack overflow?

mansw wrote on Friday, June 20, 2008:

I don’t know if stack amount in link script is enough, but what do you think ?  I’m using values from demo aplication, and I’m starting only flash led task. It seems to be a very simple dummy task.

There is a configMINIMAL_STACK_SIZE with value 100, what value should be there?

And in link script table we have this values:

CSTACK:     0x200
SVC_STACK:  0x200
IRQ_STACK:  0x200
HEAP:       0x0

I don’t know how to configure parameters in FreeRTOSConfig.h, is there any howto or documentation about this?