I'm trying to run freertos onto my custom RM48 board and have followed the TI recommend instructions for doing so. However, I get my prefetch Abort error when I create an OS task. Specifically, I get the prefetch Abort immediately after executing this line highlighted below.
; Start the first task by restoring its context.
public vPortStartFirstTask
vPortStartFirstTask
cps #0x13
portRESTORE_CONTEXT
When I step into this macro it seems to manipulates registers normally until at some point my registers look like this:
When I exit the portRESTORE_CONTEXT macro my registers look like this:
From here the next instruction is the prefetch abort. How do I go about finding out what causes the abort?
My link file looks like this:
/*----------------------------------------------------------------------------*/
define memory mem with size = 4G;
define region VECTORS = mem:[from 0x00000000 size 0x00000020];
define region KERNEL = mem:[from 0x00000020 size 0x00008000];
define region FLASH = mem:[from 0x00008020 size 0x00177FE0]
| mem:[from 0x00180000 size 0x00180000];
define region STACK = mem:[from 0x08000000 size 0x00002500];
define region KRAM = mem:[from 0x08002500 size 0x00000800];
define region RAM = mem:[from (0x08002500+0x00000800) size (0x0003F800 - 0x00000800)];
define block HEAP with size = 0x800, alignment = 8{ };
initialize by copy {readwrite};
do not initialize {section .noinit};
place in VECTORS {readonly section .intvecs};
place in KERNEL {readonly section .kernelTEXT};
place in FLASH {readonly};
place in RAM {readwrite section .kernelHEAP};
place in KRAM {readwrite section .kernelBSS};
place in RAM {readwrite};
place in RAM {block HEAP};
/*----------------------------------------------------------------------------*/