Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9

Понимание работы контроллера вложенных прерываний

08.01.2013, 22:59. Показов 4560. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу до конца понять работу контроллера вложенных прерываний в Arm Sortix M3.

В документации написано, что контроллер реагирует на прерывание с задержкой в 12 циклов. За это время происходит сохранение в стек: регистр статуса, счетчик программы, регистр связи, регистров R0-R3, R12

Написал на Си пару обработчиков внешних прерываний, посмотрел полученный асм код, первая команда обработчика это сохранение в стек регистра LR, по выходу же из прерывания происходит восстановление из стека значения LR в регистр PC.

1). Т.е. если писать на асме, то непосредственно в программе, в обработчике необходимо сохранять только LR, а все остальное будет push/pop автоматически с помощью какого-то микрокода в процессоре? Или в каких-то ситуациях необходимо будет еще что-то самостоятельно сохранять в обработчике?

2). Всегда ли будет потрачено 12 циклов или в каких-то случаях при переходе на высокоприоритетное преры-е может быть другое время?

3). "...если в компиляторе активизировать проверку стека, то будет генерироваться дополнительный код, который при потребности в регистре ЦПУ будет использовать R12...." - где активизировать, что это за проверка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2013, 22:59
Ответы с готовыми решениями:

Понимание вложенных функций
Есть вот такой таймаут: var typing = setTimeout(function(y){ $('.'+span).append(text.charAt(y)); },randInt, i); ...

Инициализация программируемого контроллера прерываний
Всем доброго времени суток, у меня есть процедура инициализации ПКП: MOV DX, 20h // Ведущий MOV AH, 20h //Номер...

Контроллер прерываний и маскирование ведомого контроллера
Немного теории: прерывания от внешних устройств сначала обрабатывает контроллер прерываний, а затем он подает сигнал INT камню (в...

7
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
09.01.2013, 00:14
Ссылочку на документ дайте, а то непонятно о чем речь.
0
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
09.01.2013, 00:38
Читал здесь:

http://www.gaw.ru/html.cgi/txt/doc/micr ... _4_5_1.htm
http://www.gaw.ru/html.cgi/txt/doc/micr ... _4_5_2.htm
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 180
09.01.2013, 07:37
Цитата Сообщение от kuro
Никак не могу до конца понять работу контроллера вложенных прерываний в Arm Sortix M3.

В документации написано, что контроллер реагирует на прерывание с задержкой в 12 циклов. За это время происходит сохранение в стек: регистр статуса, счетчик программы, регистр связи, регистров R0-R3, R12

Написал на Си пару обработчиков внешних прерываний, посмотрел полученный асм код, первая команда обработчика это сохранение в стек регистра LR, по выходу же из прерывания происходит восстановление из стека значения LR в регистр PC.

1). Т.е. если писать на асме, то непосредственно в программе, в обработчике необходимо сохранять только LR, а все остальное будет push/pop автоматически с помощью какого-то микрокода в процессоре? Или в каких-то ситуациях необходимо будет еще что-то самостоятельно сохранять в обработчике?
Да правильно, сохранять вам необходимо будет только для ядер м4 - где есть блок вычислений с плавающей точкой. Это касательно регистров р0 - р3 и др. См подробнее на документацию на которую вы ссылались ниже
2). Всегда ли будет потрачено 12 циклов или в каких-то случаях при переходе на высокоприоритетное преры-е может быть другое время?
При переходе на прерывание с более высоким приоритетом согласно документации тратится до 6 тактов
3). "...если в компиляторе активизировать проверку стека, то будет генерироваться дополнительный код, который при потребности в регистре ЦПУ будет использовать R12...." - где активизировать, что это за проверка?
Есть особый режим исполнения кода который называется режимом повышенной надёжности, в нем проверяется выход за границы стека и другие операции которые могут сломать работу кода. Подробнее об этом и других флагах можно прочитать в полной документации на компилятор который вы используете. (если укажете полное название компилятора то могу показать где и как).
0
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
09.01.2013, 12:21
Ок, в общем для M3 необходимо самостоятельно сохранять/восстанавливать только один регистр - LR, все остально выполнится автоматически.
При переходе на прерывание с более высоким приоритетом согласно документации тратится до 6 тактов
Ну тут кажется уже и Вы запутались.
В документации:
КВВП имеет возможность приостановки находящегося на обработке прерывания, если возникает прерывание с более высоким приоритетом. В этом случае, обработка активного прерывания прекращается, в течение последующих 12 циклов выполняется сохранение в стек нового набора данных и запускается обработка высокоприоритетного прерывания.
Т.е. при переходе на высокоприоритетное должно тратиться 12 циклов с сохранением всех перечисленных регистров, ведь они могут/будут использоваться в этом обработчике, и при этом текущий обработчик еще не завершен.

Но:
часто возникают ситуации, когда во время перехода к обработке низкоприоритетного прерывания возникает еще одно прерывание с более высоким приоритетом. Если такая ситуация возникнет еще на фазе загрузки стека, то по его завершении КВВП инициирует переход к обработке высокоприоритетного прерывания. Загрузка стека будет продолжаться еще минимум 6 циклов с момента возникновения высокоприоритетного прерывания, после чего будет выполнена выборка нового адреса процедуры обработки прерывания.
Да, в этом случае до 6 циклов.
если укажете полное название компилятора то могу показать где и как
Да, подскажите. Использую Keil (Toolchain MDK-Lite 4.60.0.0), а также CooCox CoIDE (gcc : ARM/imbiddid 4.6)
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 180
09.01.2013, 21:46
http://suvan.ru/page/zashhita-steka.html - для гцц. По кейлу к сожалению я ничего сейчас подсказать не могу, т.к. давно с ним не работал.
0
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
10.01.2013, 01:55
Для Keil: http://www.keil.com/support/man/docs/ar ... fgbaic.htm
0
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
10.01.2013, 12:09
Спасибо, почитаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2013, 12:09
Помогаю со студенческими работами здесь

Сброс бита регистра IRR контроллера прерываний 8259A
Приветствую вас! При появлении запроса на прерывание (IRQ) в регистре запросов прерывания IRR контроллера 8259A устанавливается бит,...

Понимание работы методов
Был Бы очень благодарен тому кто объяснил бы (добавил коменты) что делает каждый метод в даном коде: #include <algorithm> ...

Понимание работы компьютера
Здравствуйте. Хочу понять как работает компьютер, а в частности различные транзисторы, микросхемы, процессоры и т.п. изнутри и с самых...

Intent углубленное понимание работы
Что он делает и зачем понятно, все єто описівается в книгах. Стало интересно как он работает, как его представить? На вскидку это...

Важно ли понимание работы сборщика мусора?
Изучаю тему управление памятю и сборщик мусора, но эта тема мне кажется очень и очень скучной, могу ли я пропустить эту тему? Наскольно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru