transformator 0 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба Помогите разобраться. В файле crt.s по адресу 0х1С стоит команда перехода на обработчик FIQ _vec_fiq: LDR PC, [PC, # -0xF20] Проблема в том, что при выходе из обработчика процессор остается в режиме FIQ_mode. Где и что надо поправить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба Помогите разобраться. В файле crt.s по адресу 0х1С стоит команда перехода на обработчик FIQ _vec_fiq: LDR PC, [PC, # -0xF20] Проблема в том, что при выходе из обработчика процессор остается в режиме FIQ_mode. Где и что надо поправить? Добавить подтверждение прерывания в конце обработчика. Например для нулевого счётчика: .equ AIC_ICCR, (0x128) FIQ_Exit: ldr r8, [pc,#(FIQ_AIC-8-.)] mov r9, #0x1000 //AT91C_ID_TC0 str r9, [r8, #AIC_ICCR] subs pc, lr, #4 FIQ_AIC: .word 0xFFFFF000 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 28 августа, 2012 Опубликовано 28 августа, 2012 · Жалоба Проблема в том, что при выходе из обработчика процессор остается в режиме FIQ_mode.А как выходите из ISR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
transformator 0 29 августа, 2012 Опубликовано 29 августа, 2012 · Жалоба Весь код написан на C. На ассемблере - только переход _vec_fiq: LDR PC, [PC, # -0xF20]. Кажется, проблема решена путем добавления __atribute__ (interrupt("FIQ")) перед определением функции обработчика FIQ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 29 августа, 2012 Опубликовано 29 августа, 2012 · Жалоба Кажется, проблема решена путем добавления __atribute__ (interrupt("FIQ")) перед определением функции обработчика FIQ.Вот потому и спрашивал - на ARM7/ARM9 выход из ISR отличается от выхода из обычной функции необходимостью копирования SPSR в CPSR (в которых и хранится режим процессора). Когда вы определили функцию как interrupt("FIQ"), то соответственно изменились команды восстановления контекста по выходу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться