Relocating vector table cortex M3 question.

boogalee wrote on Thursday, January 21, 2016:

Hi,

im using CC2538(cortex m3)

if i want to port on CC2538, i have to relocate vector table.

so i had searched datasheet, i founded my code have to be located at 0x0020_0000~

but, vector table address is set at reset 0x0000_0000. this is rom area.

so i have to relocate vector table address.

i had tried access vector table offset register(VTABLE) <- other vendor’s register name was VTOR.

i just had access this register and just allocate appropriate value.

#define VTABLE ( * ( ( uint32_t * ) 0xE000ED08 ) )
VTABLE = 0x0020000F;

i had defined VTABLE ( * ( ( uint32_t * ) 0xE000ED08 ) ) which VTABLE register’s address

and allocate appropriate address value.

it was working !!

but… i dont know why it was worked…

what should i know to relocate vector address value.

Regrads.
WON HEE LEE

edwards3 wrote on Thursday, January 21, 2016:

Are you sure you have to relocate the table? Lots of Cortex-M will mirror the vector table region in memory to address 0 even when there is no physical memory at 0.

boogalee wrote on Thursday, January 21, 2016:

yes ! i had checked datasheet and i had tested it.

if i didn’t relocate vector table’s addres, it didn’t work.

but attached below code

#define VTABLE ( * ( ( uint32_t * ) 0xE000ED08 ) )
VTABLE = 0x0020000F;

it had worked.

and then i had realized that i have to relocate vector table.

but… i dont know why it was working yet…