ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
74627 Топик полностью
AlexandrY (24.11.2006 18:42, просмотров: 1) ответил IV на знатокам связки арм7 и укоса посвящается
В uCOS все корректно, там искать нечего. То, что указатель стека надо смещать на несколько байт в зависимости от природы прерывания написано на первых же листах мануала по ARM7TDMI. Природа spurior interrupts тоже хорошо описана. Особенно в мануале по LPC контроллерам. Кратко эффект в том, что прерывание возникает в течении прохождения по конвееру команды запрета прерываний. Фиксация прерывания происходит на одном этапе конвеера а выборка адреса из VIC на пару этапов позже, в течении которых прерывания могут быть запрещены выполняющейся командой. У VIC от этого едет крыша и он выдает дефолтный вектор по которому и передается управление. Если дефолтный вектор установлен не корректно, то может быть все что угодно. Слышал что у некоторых бывает переход даже не по дефолтному вектору в LPC. В STR91x сам наблюдал такой же эффект хотя ядро там ARM9. Ясно, что эффект очень редкий в правильно написанной программе. Если же прерывания валят без остановки, то тогда эти грабли и появляются во всей красе.