Материал предоставлен http://blog.lakhtin.com

Режимы работы

Процессор может функционировать в двух режимах, двух уровнях доступа и может находиться в двух операционных состояниях:

Режимы работы процессора ARMv7-M

Thread mode
Этот режим используется для обычного выполнения приложений. Процессор переходит в этот режим сразу после Reset
Handler mode
Это особый режим, использующийся для обработки прерываний. После завершения обработки прерываний процессор возвращается в Thread mode

Уровни доступа

Всего существует два уровня доступа в работе процессора:

  • привелегированный
  • непривелегированный

При работе на непривелегированном уровне доступа процессор:

  • имеет ограниченный доступ к MSR, MRS инструкциям и не имеет возможности использовать CPS инструкции,
  • Не имеет возможности получить доступ к системному таймеру, контроллеру прерываний (NVIC) или блоку управления системой (system control block),
  • может иметь ограниченный доступ к памяти или периферии.

При работе на привелегированном уровне доступа процессор имеет доступ ко всем ресурсам и может использовать любые инструкции.

В Handler mode процессор всегда находится на привелегированном уровне доступа.

Непривелегированное ПО может использовать SVC инструкции для осуществления вызова супервизора с целью передачи управления привелегированной части загруженного ПО.

Операционное состояние

Процессор может находиться либо в Thumb State — это обычное состояние, в котором процессор выполняет инструкции в соответствии с логикой загруженного ПО или в Отладочном (Debug State) состоянии. В этом случае процессор остановлен для осуществления одной из процедур отладки или просмотра отладочной информации.

Краткая информация о стеке

Процессор использует полный убывающий стек. Это означает, что указатель стека показывает на последний помещённый в стек элемент. Когда процессор заталкивает в стек очередной элемент, указатель на вершину стека уменьшается на размер этого элемента и показывает на новую “вершину” стека.

Процессор реализует два стека: главный стек и процессный стек с индивидуальными копиями указателей стека.

В Tread state, регистр CONTROL контролирует какой из стеков используется сейчас. В Handler state, процессор всегда использует главный стек.

Просуммируем изученные на этом этапе сведения:

Состояние процессора Использование Уровень доступа Используемый стек
Thread Приложение привелегированный и непривелегированный Основной или процессный стеки
Handler Обработка исключений/прерываний привелегированный главный стек
Карта памятиБуфер записи DCode и System шины