I’ve created a FreeRTOS project for the AT91SAM7A3 based on the AT91SAM7S64.
It now compiles and downloads but when I start single stepping through the code the first 4 statements of the Cstartup.s file:
ldr r13,=TOP_OF_MEMORY
ldr r0,=AT91F_LowLevelInit
mov lr, pc
bx r0
are visualised and executed by the IAR debugger as:
I’ve noticed that the original project uses Thumb mode instead of ARM.
When this option is changed the code generated for the vector table is then placed at the right address.
I’ve noticed that the original project uses Thumb mode instead of ARM.
When this option is changed the code generated for the vector table is then placed at the right address.
Just for my knowledge what would be the reason for the vector table to be placed in no man’s land when the processor mode selected was ARM?
The Cstartup.s must use ARM mode since an ARM statement is at the begin.
Now, I’m experiencing a different behaviour. I can compile/download but when it is time to pu breakpoints IAR refuses to do so, just emits a sound!!!
By using J-Link Control Panel I verify that I already have a breakpoint at iar_semihosting and a Watchpoint at 0x8000000, but I don’t seem to be capable to delete them.
After all, I still have the problem with the vector table.
I thought that the vector table was being placed at the right address but it isn’t!!!
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 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?