суть вот в чем...
сидел маялся 3 недели с неработающими прерываниями)
потом после того как написал в форум вдруг все неожиданно и без изменений в коде заработало)))
заморочился решил написать свои обработчики прерываний)
ну вот пожалуйста покритикуйте)
;-------------------------------------------------------------------------------
; Вектор IRQ прерывания
org 0x18
mov pc, #0x40
;-------------------------------------------------------------------------------
; Вектор FIQ прерывания
org 0x1C
mov pc, #0x60
;-------------------------------------------------------------------------------
; Обработчик IRQ прерывания
org 0x40
sub lr, lr, #4
stmia sp!, {r0 - r12,lr}
msr CPSR_c, #ARM_MODE_IRQ
mvn r0, #0xFF
bic r0, r0, #0xE00
mov lr, pc
ldr pc, [r0]
ldmdb sp!, {r0 - r12,pc}^
;-------------------------------------------------------------------------------
; Обработчик FIQ прерывания
org 0x60
sub lr, lr, #4
stmia sp!, {r0 - r7,lr}
mov lr, pc
ldr pc, [r12]
ldmdb sp!, {r0 - r7,pc}^
;-------------------------------------------------------------------------------
в r12 я записал адрес AIC_FVR при инициализации стека для FIQ режима
Вроде в симуляторе все работает в том числе обрабатывает корректно вложенные прерывания)
на плате отлаживать пока не пробовал)