Смысл "Dummy access to the .vectors section" в ARM7TDMI
Добавлено: Вс сен 09, 2012 20:00:41
Доброго дня.
Изучаю в деталях программу инициализации для AT91SAM7S256. И первая же инструкция вызывает у меня вопрос.
Сразу после включения управление переходит в Remap зону на resetHandler. Псевдоинструкция (ldr pc, =1f) делает переход с 0x00000004 во Flash по адресу 0x00100008. Дальше - инициализация стека и вызов C-функции и так далее. Но смысл первой dummy-инструкции (ldr r0, =resetVector) мне непонятен. Теоретически, зачем она? Связано ли это как-нибудь с Instruction Pipeline процессора ARM7TDMI?
Изучаю в деталях программу инициализации для AT91SAM7S256. И первая же инструкция вызывает у меня вопрос.
Код: Выделить всё
...
resetHandler:
/* Dummy access to the .vectors section so it does not get optimized */
ldr r0, =resetVector
/* Set pc to actual code location (i.e. not in remap zone) */
ldr pc, =1f
/* Perform low-level initialization of the chip using LowLevelInit() */
1:
ldr r4, =_sstack
mov sp, r4
ldr r0, =LowLevelInit
mov lr, pc
bx r0
...