Может ли компьютер реагировать на прерывание после выполнения первой инструкции после включения компьютера?

Мы знаем, что по завершении цикла выполнения выполняется проверка, чтобы определить, произошло ли какое-либо разрешенное прерывание или нет. Если произошло разрешенное прерывание, происходит цикл прерывания. Так может ли компьютер реагировать на прерывание после выполнения первой инструкции после включения компьютера?


person QoQ    schedule 06.06.2021    source источник
comment
для того, чтобы ISR работал сразу при включении, нам потребуется жестко закодированная таблица векторов с кодом OTP, находящимся внутри ЦП. Также ЦП должен иметь некоторое количество встроенной оперативной памяти, чтобы стек мог отслеживать вложенные прерывания. Потребительские процессоры не имеют таких встроенных функций, поэтому технически невозможно реализовать готовые к запуску ISR. По этим причинам процессоры инициализируются с замаскированными прерываниями, поэтому ответ на ваш вопрос - НЕТ, компьютеры не могут реагировать на прерывания после выполнения первой инструкции при включении питания.   -  person Maxim Sagaydachny    schedule 06.06.2021
comment
@MaximSagaydachny Это помечено как встроенное, и большинство MCU имеют встроенную флэш-память и SRAM, а также немаскируемое прерывание, которое может быть активным при запуске. В любом случае вы ответили на вопрос в комментарии, что является дурным тоном - опубликуйте ответ.   -  person Clifford    schedule 06.06.2021


Ответы (1)


Да, это возможно; если маловероятно и, возможно, не на всех архитектурах.

Например, в ARM Cortex-M начало векторной таблицы включает начальный адрес выполнения и начальный указатель стека — они загружаются в регистры счетчика программ (ПК) и указателя стека (SP) при запуске и выполнение начинается на ПК. В этот момент NVIC не будет инициализирован и прерывания не будут разрешены, однако по-прежнему возможно возникновение немаскируемого прерывания (NMI) или исключения процессора, которое вызовет любой обработчик, указанный в векторной таблице.

Для вызова дескриптора исключения ваша первая инструкция сама по себе должна быть недействительной. И если у вас так рано возникает НМИ; ваша система, возможно, сломана или плохо спроектирована. Возникновение NMI в любом случае обычно указывает на некоторую критическую ошибку, внешнюю по отношению к процессору.

person Clifford    schedule 06.06.2021