In RealView 4 I could do the following:
create test.s <- my asm file with an entry point, with the code loaded at 0x1000000
import (upload) a binary at address 0x00000000 with the length of 32k
then i could branch to a location with in that 32k range, let's say to location 0x1000.
the simulator would run just fine. i could step instructions:
ldr r0, _branch_address
bx r0 ;this address would be 0x1000
Now in DS5, I created an asm project, setup the linker to put the code at 0x1000000 and everything runs fine.
BUT: if i load a binary image into 0x00000000 and try to branch into that area, it generates an exception (sort of... it really just locks up and i have to pause the simulator).
I did some experimentation and found that the memory below my application (anything < 0x1000000) is not executable? I can't jump and execute anything in that area.
I'm assuming that the linker is setting the executable range for the simulator based on the linker settings?
I'm using DS5 5.21.1 Build: 5211009
Thanks,
Geno
Changed the instruction from BLR to BR and it worked. I guess I gotta go back and RTFM!
Thanks for the help on the memory mapping, I now have the code running in SRAM.
g