Я попытался найти правильный ответ, но не смог найти его, и мне нужно знать, какие проблемы необходимо учитывать при реализации набора ISR в любой системе.В чем разница между службами прерывания ISR и обычным кодом?
Спасибо заранее!
Я попытался найти правильный ответ, но не смог найти его, и мне нужно знать, какие проблемы необходимо учитывать при реализации набора ISR в любой системе.В чем разница между службами прерывания ISR и обычным кодом?
Спасибо заранее!
Служба прерывания (duh!) Обслуживает «прерывание». «Прерывание» в значительной степени таково: выполнение «нормального» кода прерывается (по любому из множества причин), а управление передается в сервисную подпрограмму, которая не имеет реального отношения к/знанию ранее выполняющегося кода (даже если этот код вызвал прерывание как-то).
Помните, что прерывания могут возникать на многих «уровнях» - очень низкие уровни ISR могут обрабатывать невыполненные инструкции (например, инструкция «sqrt» в FPU, которая не поддерживает эту функцию) и имитировать эту функциональность , Они могут обрабатывать ввод-вывод устройства (полностью не связанный с исполняемым кодом), ошибки страницы, ошибки программы и т. Д.
Обычно (зависит от процессора, ОС и типа прерывания) ISR вводится с только голым минимальное «состояние процессора» сохраняется, поэтому ISR должен сначала сохранить достаточное состояние (дополнительные GPR, регистры состояния и т. д.), пока он не получит достаточно свободного для выполнения своей функции. Обычно сохранение будет в заранее выделенной области сохранения прерываний, если только прерывание не является «высоким уровнем», чтобы разрешить доступ к ISR, и в этом случае верхняя часть стека может использоваться.
Затем ISR должен выполнять свою функцию, тщательно ограничиваясь доступными ресурсами (например, используя только «закрепленное» хранилище, если оно не находится в состоянии, доступном для просмотра).
И, наконец, ISR должен восстановить прерванную среду и вернуться или, если прерывание должно быть преобразовано в исключение, создать соответствующую среду сигнализации исключения и сигнализировать об исключении.
спасибо, чувак, но ваш ответ не соответствовал моему вопросу ,, цените ваше сотрудничество. –
(уникальные) проблемы вращаются главным образом вокруг понимания того, что подпрограмма работает в * очень * ограниченной среде, и поэтому многие общие методы кодирования не могут быть используется - никаких исключений, без пейджинга, иногда даже без ОЗУ, просто регистрируется. Если используется язык высокого уровня, необходимо проявлять особую осторожность, чтобы он не делал то, чего он не должен делать. –
спасибо! –
Что такое 'porober'? – leppie
Извините, я имею в виду правильно * –
Вы сомневаетесь в неопределенности. Вы имеете в виду ISR, которые находятся в микроконтроллерах? Или OS прерывает? Что вы пытаетесь реализовать/понять? – Hossein