| |||
| Home > Embedded Software Development > Reset and initialization > The vector table | |||
All ARM systems have a vector table. The vector table does
not form part of the initialization sequence, but it must be present
for any exception to be serviced. It must be placed at a specific
address, usually 0x0. To do this you can use
the scatter-loading +FIRST directive, see Example 3.4.
Example 3.4. Placing the vector table at a specific address
ROM_LOAD 0x0000 0x4000{ ROM_EXEC 0x0000 0x4000 ; root region { vectors.o (Vect, +FIRST) ; Vector table * (InRoot$$Sections) ; All library sections that must be in a ; root region, for example, __main.o, ; __scatter*.o, __dc*.o, and * Region$$Table } RAM 0x10000 0x8000 { * (+RO, +RW, +ZI) ; all other sections }}
The vector table for the microcontroller profiles is very different to most ARM architectures. For an example of the vector table for your processor, see:
The vector table for ARMv6 and earlier, ARMv7-A and ARMv7-R profiles
The vector table for ARMv6-M and ARMv7-M profiles.