Чт май 04, 2017 08:51:15
. То ли я не в курсе новых веяний в МК, то ли чел гонит. У меня впечатление - скорее второе.в некоторых МК есть специальные регистры для обработки прерываний что-бы каждый раз не сохранять их в стеке.
Чт май 04, 2017 09:14:43
А кого "их" ?Jack_A писал(а):что-бы каждый раз не сохранять их в стеке
тут немного не понятно.Jack_A писал(а):специальные регистры для обработки прерываний
Чт май 04, 2017 09:36:30
Чт май 04, 2017 10:19:24
Stack
This is a special part of the memory which is used to save the contents of the Program Counter
only. The stack is neither part of the data nor part of the program space, and is neither readable nor
writeable. The activated level is indexed by the Stack Pointer, and is neither readable nor writeable.
At a subroutine call or interrupt acknowledge signal, the contents of the Program Counter are pushed
onto the stack. At the end of a subroutine or an interrupt routine, signaled by a return instruction,
RET or RETI, the Program Counter is restored to its previous value from the stack. After a device
reset, the Stack Pointer will point to the top of the stack.
Чт май 04, 2017 14:00:03
Чт май 04, 2017 15:55:02
Если прерывание инициируется УВВ, то КВВП подключит ЦПУ Cortex к обработке
прерывания. После перехода ЦПУ Cortex в режим прерывания, он помещает набор
регистров в стек. Эта операция выполняется с помощью специального микрокода,
что упрощает прикладной код. В процессе записи данных в стек на шине инструкций
осуществляется выборка начального адреса процедуры обработки прерывания.
Благодаря этому, с момента возникновения прерывания до выполнения первой
инструкции его обработки проходит всего лишь 12 циклов.
К числу помещаемых в стек данных относятся регистр статуса программы, счетчик
программы и регистр связи. Благодаря этому, запоминается состояние, в котором
находилось ЦПУ Cortex CPU. Кроме того, также сохраняются регистры R0 - R3. Эти
регистры широко используются в инструкциях для передачи параметров, поэтому,
помещение в стек делает возможным их использование в процедуре обработке
прерывания. Замыкает список помещаемых в стек регистров - R12. Он выступает в роли
рабочего регистра внутри подпрограммы. Например, если в компиляторе активизировать
проверку стека, то будет генерироваться дополнительный код, который при потребности
в регистре ЦПУ будет использовать R12. По завершении обработки прерывания
все действия выполнятся в обратном порядке: с помощью микрокода извлекается
содержимое стека и, параллельно с этим, осуществляется выборка адреса возврата,
таким образом, для возобновления выполнения фоновой программы потребуется 12
циклов.
Если на обработке находится высокоприоритетное прерывание и, при этом, возникает
низкоприоритетное, КВВП Cortex использует метод непрерывной обработки с
исключением внутренних операций над стеком, который гарантирует минимальность
задержки при переходе к обработке следующего прерывания.
Если возникает два прерывания, первым со стандартной задержкой в 12 циклов
обслуживается прерывание с более высоким приоритетом. Однако, по окончании
его обработки, ЦПУ Cortex не возвращается к выполнению фоновой программы и
содержимое стека не извлекается. Вместо этого, осуществляется выборка адреса
процедуры обработки следующего прерывания с учетом приоритета. Таким образом,
задержка перехода к обработке следующего прерывания составит всего лишь 6 циклов.
По завершении обработки последнего прерывания извлекается содержимое стека и
выполняется выборка адреса возврата. Таким образом, через 12 циклов возобновляется
выполнение фоновой программы.
Пт май 05, 2017 07:30:07
Пт май 05, 2017 13:17:54
Пт май 05, 2017 20:21:13
Пт май 05, 2017 23:26:35
Сб май 06, 2017 08:18:08
Сб май 06, 2017 08:50:03
Сб май 06, 2017 19:50:50