Здравствуйте.
Работаю с контроллером AT91SAM7A3. Объясните, пожалуйста, некоторые вещи. По ходу выполнения стартапа вектора прерывания должны копироваться в RAM, потом происходит ремап. Вот в общем код этот:
CODE
; Copy Exception Vectors to Internal RAM
IF :DEF:RAM_INTVEC
ADR R8, Vectors ; Source
LDR R9, =RAM_BASE ; Destination
LDMIA R8!, {R0-R7} ; Load Vectors
STMIA R9!, {R0-R7} ; Store Vectors
LDMIA R8!, {R0-R7} ; Load Handler Addresses
STMIA R9!, {R0-R7} ; Store Handler Addresses
ENDIF
; Remap on-chip RAM to address 0
MC_BASE EQU 0xFFFFFF00 ; MC Base Address
MC_RCR EQU 0x00 ; MC_RCR Offset
IF :DEF:REMAP
LDR R0, =MC_BASE
MOV R1, #1
STR R1, [R0, #MC_RCR] ; Remap
ENDIF
Так вот. Почему-то этот код пропускается у меня. И в окне дизассемблера вообще нет соответствующих команд. Ну то есть когда тыкаю на команду, то в дизассемблере он никуда не переходит. Смотрю что лежит в RAM, там что-то изменилось, но в основном нули, а должны же быть значения такие же как и во FLASH(ну собственно вектора прерываний)? А вообще, зачем вектора копировать в RAM? До копирования же обработчик RESET лежит во FLASH насколько я понимаю. Вот и пусть лежит там и выполняется оттуда.