I’ve modified the sources of FreeRTOS to create a port for the AT91SAM7A3.
The vector table is not being placed at 0x00100000, instead it ends up at 0x00101040.
In the .icf file there is a definition:
define symbol __ICFEDIT_intvec_start__ = 0x00000000;
but somehow this definition does not seem to produce any result.
In this way when the instruction SWI is executed by taskYIELD() the processor starts running the wrong code.
(Nevertheless, IAR is able to start the program properly!!!!)
How do I place the vector table at 0x00100000, please?
0x100000 is not the normal place for the vector table so I would guess you are trying to do the remapping so part of the RAM code is mapped to 0. Is this correct? If so then are you copying the vector table from 0x00 to 0x100000 before you do the remap? Sometimes this will be done by the debugger macro file that gets called before the debug session commences.