Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Архитектура и структурная организация микроконтроллеров семейства CORTEX-M. Учебное пособие
.pdf
МИНИСТЕРСТВО ТРАНСПОРТА
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«РОССИЙСКИЙ УНИВЕРСИТЕТ ТРАНСПОРТА»
Институт управления и цифровых технологий
Кафедра вычислительных систем, сетей и информационной безопасности
М.И. Шамров
АРХИТЕКТУРА И СТРУКТУРНАЯ ОРГАНИЗАЦИЯ
МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА CORTEX-M
Учебное пособие
для студентов направлений «Информатика и вычислительная техника»
и «Информационная безопасность»
Москва – 2019

УДК 681.3
Ш 19
Шамров М.И., Архитектура и структурная организация микроконтрол-
леров семейства CORTEX-M: Учебное пособие. – М.: РУТ(МИИТ), 2019. –62 с.
Пособие предназначено для изучения микроконтроллеров CORTEX-M3
на основе процессорных ядер версии 7 архитектуры ARM. Рассмотрена струк-
турная организация микроконтроллеров серии 1986ВЕ9x производства одного
из лидеров разработки отечественной микроэлектронной элементной базы ЗАО
«ПКК МИЛАНДР». Приводятся описания процессорного ядра, его программистской модели и набора дополнительных управляющих и периферийных
устройств в составе микроконтроллера. Принципы использования микроконтроллеров в составе встроенных вычислительных систем поясняются на
примере демонстрационно-отладочной платы 1986EvBrd64.
Пособие ориентировано на студентов, обучающихся по направлениям
«Информатика и вычислительная техника», «Информационная безопасность».
Может быть использовано в курсах, связанных с изучением современных вычислительных машин и систем: «Организация ВМ и систем», «Микропроцессорные системы», «Архитектура вычислительных систем и комплексов», «Си-
стемы реального времени» и других.
Р е ц е н з е н т ы : Первый заместитель директора АО НИИАС
доктор технических наук
Розенберг Е.Н.;
Профессор кафедры УТБиИС РУТ(МИИТ),
доктор технических наук
Доенин В.В.
© РУТ (МИИТ), 2019

- 3 -
Рис. 1.1 Принцип организации встроенных систем
Объект управления
Устройства связи
с объектом (УСО)
Ядро ARM
Микроконтроллер
Встроенная
система
управления
Средства управления
и отладки
Память,
периферийные устройства
Процессорное ядро
CORTEX-M3
Ядро
микроконтроллера
1. Общие принципы организации встроенных управляющих систем на
базе микропроцессоров ARM
Встроенная система — микропроцессорная вычислительная система,
предназначенная для управления объектом и являющаяся частью этого объекта.
Она выполняет функции сбора информации о состоянии объекта, ее обработку в
соответствии с алгоритмами управления и формирование управляющих воздей-
ствий на исполнительные механизмы объекта. Основой встроенной системы яв-
ляется микроконтроллер – однокристальное устройство, включающее в себя
процессорное ядро, память и набор периферийных устройств, требуемых для
подключения к объекту и другим устройствам.

- 4 -
Таблица 1.1
Основные модели архитектуры ARM
Версии
архитек-
туры
Семейства
ядер
Ядра
Архитектурные особенности
V1, V2,V3
(устаревшие)
ARM1,
ARM2,
ARM3,
ARM6,
ARM7
ARM1, ARM2,
ARM250, ARM3,
ARM60,
ARM600,
ARM610,
ARM700,
ARM710,
ARM710a
26- разрядная адресация, базовая система команд ARM.
Расширения: команда MUL, КЭШ, MMU, 32- разрядная адресация, сопроцессор с плавающей запятой и др.
V4T
ARM7TDMI
ARM7TDMI(-S)
3-стадийный конвейер, команды ARM , Thumb, MMU, без
КЭШ
ARM710T
ARM720T
ARM740T
то же с КЭШ
V4
ARM8
ARM810
5-стадийный конвейер, статический предсказатель ветвле-
ний, удвоение пропускной способности памяти, КЭШ, MMU
v4T
ARM9TDMI
ARM9TDMI
5-стадийный конвейер, команды ARM , Thumb
ARM920T,
ARM922T,
ARM940T
то же с КЭШ
v5TEJ
ARM7EJ
ARM7EJ-S
5-стадийный конвейер, Thumb, Jazelle DBX, Расширенные
DSP-команды, без КЭШ.
v5TE
ARM9E
ARM946E-S
Thumb, DSP, КЭШ
ARM966E-S,
ARM968E-S
Thumb, DSP, без КЭШ
v5TEJ
ARM9E
ARM926EJ-S
Thumb, Jazelle DBX, DSP, КЭШ, MMU
v5TE
ARM9E
ARM996HS
То же без КЭШ
v5TE
ARM10E
ARM1020E,
ARM1022E
6-стадийный конвейер, Thumb, DSP, (VFP), КЭШ, MMU
v5TEJ
ARM10E
ARM1026EJ-S
Thumb, Jazelle DBX, DSP, (VFP)
v6
ARM11
ARM1136J(F)-S
8-стадийный конвейер, SIMD, Thumb, Jazelle DBX, (VFP),
DSP, КЭШ, MMU
v6T2
ARM11
ARM1156T2(F)S
8-стадийный конвейер, SIMD, Thumb-2, (VFP), DSP, КЭШ,
MMU
v6Z
ARM11
ARM1176JZ(F)-S
8-стадийный конвейер, SIMD, Thumb, Jazelle DBX, (VFP),
DSP, КЭШ, MMU, TrustZone
v6K
ARM11
ARM11 MPCore
8-стадийный конвейер, SIMD, Thumb, Jazelle DBX, (VFP),
DSP, КЭШ, MMU, SMP с 1-4 ядрами
v6-M
Cortex-M
Профиль
микроконтроллера
Cortex-M0
Cortex-M1
Microcontroller profile, Thumb + Thumb-2 аппаратное умно-
жение, опциональный системный таймер и память «bitbanding» , опциональный КЭШ, опциональный MPU на 8
регионов, без MPU
то же +
то же без MPU
v7-M
Cortex-M3
Микроконтроллер, Thumb / Thumb-2, аппаратные умножение
и деление, опциональная память «bit-banding» опциональный
КЭШ, без TCM, опциональный MPU на 8 или 16 регионов
v7E-M
Cortex-M4
Микроконтроллер, Thumb / Thumb-2 / DSP / опциональное
расширение FPv4 для одинарной точности, аппаратныое
умножение и деление, опциональная память «bit-banding»,
опциональный КЭШ, без TCM, опциональный MPU на 8 или
16 регионов
v7-R
Cortex-R
Профиль
реального
времени
Cortex-R4
Cortex-R5
(MPCore)
Cortex-R7
(MPCore)
Thumb / Thumb-2 / DSP / опциональный VFPv3, FPU, DSP,
аппаратные умножение и опциональное деление, опциональные четность и ECC для внутренних шин, КЭШ, TCM, 8, 11стадийный конвейер, два ядра в режиме «lockstep» с логикой
обработки ошибок опционально MPU на 8,12,16 ECC Ядра

- 5 -
out-of-order
v7-A
Cortex-A
Профиль
«Application
»
Cortex-A5
Cortex-A7
MPCore
Cortex-A8 Cortex-A9
Cortex-A9
MPCore
Cortex-A15
MPCore
Cortex-A17
MPCore
ARM / Thumb / Thumb-2 / DSP / SIMD
VFP, NEON, Jazelle RCT and DBX, Thumb-2, 8-15ступенчатый конвейер, In-order, 1-32 core SMP, 2-3 декодера
v8-A
Cortex-A50
Профиль
«Application
»
Cortex-A53
Cortex-A57
Cortex-A72
Профиль «Application», AArch32 и AArch64, SMP на 1-4
ядра, Trustzone, SIMD, VFPv4, аппаратная виртуализация,
запуск до двух команд в цикл, очередное (in-order) конвейерное исполнение, глубокое внеочередное исполнение
v8-M
Baseline
Cortex-M
Cortex-M23
ARM TrustZone
v8-M
Mainline
Cortex-M
Cortex-M33
ARM TrustZone
2. Архитектура процессорного ядра CORTEX-M3
Процессорное ядро Cortex-M3 является 32-разрядным RISC процессором, реализующим исполнение программ на входном машинном языке Thumb-
2.
2.1. Режимы работы процессора
Процессорное ядро может функционировать в двух режимах:
Thread - используется для исполнения приложений, процессор находится
в этом режиме сразу после сброса.
Handler - используется для обработки исключений, после обработки ис-
ключений процессор переходит в Thread режим.
Возможны два уровня привилегий при исполнении программ:
Unprivileged
Непривилегированное программное обеспечение исполняется на этом
уровне со следующими ограничениями:
имеет ограниченный доступ к MSR и MRS инструкциям, и не может ис-
пользовать CPS инструкцию,

- 6 -
не имеет доступа к системному таймеру, NVIC и блоку системного
управления,
может иметь пониженный уровень доступа к памяти или периферии
Privileged
Привилегированное программное обеспечение исполняется только на
этом уровне и имеет полный доступ ко всем инструкциям и ресурсам.
В Thread режиме регистр CONTROL определяет уровень исполнения
программы unprivileged или privileged. В Handler режиме программное обеспечение всегда выполняется на privileged уровне.
Только привилегированное программное обеспечение может писать в ре-
гистр CONTROL для изменения уровня исполнения программы в Thread режи-
ме. Непривилегированное программное обеспечение может использовать инструкцию SVC для выполнения supervisor call для передачи управления приви-
легированной программе.
2.2. Регистровая модель процессора
В состав процессора входят следующие типы регистров (таблица 2.1):
Регистры общего назначения R0-R12
R0-R12 - 32-х разрядные регистры для данных при выполнении операций
Указатель стека SP R13
Stack Pointer Register (SP) - регистр R13. В Thread режиме бит 1 регистра
CONTROL обозначает, какой указатель стека используется:
0 – Main Stack Pointer (MSP). Сразу после сброса;
1 – Process Stack Pointer (PSP).
Регистр связи LR R14
Link Register - регистр R14. Регистр используется для сохранения инфор-
мации об адресе возврата при уходе на обработку прерываний, вызовах функ-
ций и обработке исключений.

- 7 -
Регистры CORTEX-M3
Тип регистров
Обозначения
Вариан-
ты ис-
пользо-
вания
Состояние
после
сброса
Режимы
обраще-
ния
Требуемый
уровень
привилегий
Регистры общего
назначения (РОН)
Младшие РОН
R0
-
Не определе-
но
RW
Unprivileged,
Privileged
R1
-
R2 - R3 - R4 - R5 - R6
-
R7
-
Регистры общего
назначения (РОН)
Старшие РОН
R8
-
R9
-
R10
-
R11
-
R12
-
Указатель стека
SP (R13)
PSP
M
SP
PSP:не опред.
MSP:0x0000000
0
RW
PSP: Privileged
MSP: Unprivi-
leged/Privileged
Регистр связи
LR (R14)
-
0xFFFFFFFF
RW
Unprivileged,
Privileged
Программный
счетчик
PC (R15)
-
M[0x00000004]
RW
Unprivileged,
Privileged
Специальные
реги-
стры
Регистр
состояния
программы
PSR
-
0x01000000
RW
Privileged
Регистры
маски ис-
ключений
PRIMASK
-
0x00000000
RW
Privileged
FAULTMASK
-
0x00000000
RW
Privileged
BASEPRI
-
0x00000000
RW
Privileged
Регистр
управления
CONTROL
-
0x00000000
RW
Privileged
Таблица 2.1
Счетчик команд PC R15
Program Counter – это регистр R15. Он содержит адрес текущей инструк-
ции. Бит 0 всегда 0, так как все инструкции выровнены на полуслово. При
сбросе процессор считывает в этот регистр вектор сброса, который расположен
по адресу 0x00000004
В таблице 2.2 приведены форматы специальных регистров.

- 8 -
Таблица 2.2
Специальные регистры
Регистры
Кодирование
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10 9 8 7 6 5 4 3 2 1 0
PSR
N Z C V Q
ICI/IT
T
-
ICI/IT
-
ISR_NUMBER
PRIMASK
Резерв
запрет
FAULT-
MASK
Резерв
запрет
BASEPRI
Резерв
Приоритет
CONTROL
Резерв
0-MSR
1- PSR
0-прилег.
1- непривел
Таблица 2.3
Признаки выполнения команд
№
бита
Признак
Пояснения
31
N
(Negative)
0 – результат операции положительный или нулевой, либо «больше
чем или равно»;
1 – результат операции отрицательный, либо «меньше чем».
30
Z
(Zero)
0 – результат операции не нулевой;
1 – результат операции нулевой.
29
C
(Carry)
0 – при суммировании не было переноса, либо при вычитании не было
заема;
1 – при суммировании был перенос, либо при вычитании был заем.
EPSR
APSR
IPSR
В регистре состояния программы PSR в поле APSR сохраняются признаки (табл. 2.3) после выполнения некоторых команд, указанных в таблице 2.4.
Разрешения записи признаков в поле APSR задается добавлением суффикса S в
мнемокод команды.. Поля ISPR, ESPR регистра PSR, а также регистры PRIMASK, PRIMASK, FAULTMASK, BASEPRI используются при обработке прерываний. Регистр CONTROL задает текущий стек и уровень привилегий выполняемой процессором программы в Thread режиме [1]. Доступ к специальным регистрам выполняется командами MSR, MRS.

- 9 -
28
V
(Overflow)
0 – в результате операции не было переполнения;
1 – в результате операции было переполнение.
27
Q
(Saturation)
0 – обозначает, что не было накопления с момента сброса либо с момента установки бита в ноль;
1 – обозначает, что в результате выполнения инструкций SSAT и
USAT было накопление.
Флаг сбрасывается в ноль программно инструкцией MRS.
2.3. Система команд Thumb-2
В процессоре CORTEX-M3 реализована система команд Thumb-2. В состав системы команд входят 16- разрядные команды, часть из которых аналогична командам предыдущих версий Thumb, а также новые варианты 32разрядных команд. В таблице 2.4 приведено подмножество только 16- разрядных команд Thumb-2. В таблице используются следующие обозначения:
в фигурных скобках {} указываются необязательные операнды;
большинство команд могут содержать суффикс кода условного выполнения
{с};
Rn, Rm, Rt, Rd – регистры, используемые в командах для задания исходных
операндов и результатов;
Rdn, Rdm – регистры источников и приемников операндов одновременно
! – необязательный суффикс обратной записи значения базового регистра, в
случае, если он присутствует в команде (последний адрес, по которому осуществлялся доступ, будет записан обратно в регистр Rn.) .
M [A] – содержимое памяти по адресу A;
S - необязательный суффикс, если он указан, результат выполнения операции
приводит к установке соответствующих флагов;
Immx – x-разрядные константы (непосредственные операнды).
Более подробная информация представлена в детальном описании команд.
Операнды. В качестве операнда инструкции может выступать регистр,
константа, либо другой параметр, специфичный для конкретной команды. Про-
цессор применяет инструкцию к операндам и, как правило, сохраняет результат
в регистре-получателе. В случае если формат команды предусматривает специ-

- 10 -
фикацию регистра-получателя, он, как правило, указывается непосредственно
перед операндами.
Ограничения на использование PC и SP. Многие инструкции не позво-
ляют использовать регистры счетчика команд (PC) и указателя стека (SP) в ка-
честве регистра-получателя. Подробная информация содержится в описании
конкретных инструкций. Бит [0] адреса, загружаемого в PC с помощью одной
из команд BX, BLX, LDM, LDR или POP должен быть равен 1, так как этот бит
указывает на требуемый набор команд, а процессор Cortex-M3 поддерживает
только инструкции из набора Thumb.
Формат второго операнда. Большинство команд обработки данных под-
держивает гибкий формат задания второго операнда, в качестве которого может
выступать:
Константа; данный тип второго операнда задается в формате #constant,
где constant может быть:
• любой константой, которая может быть получена путем сдвига
восьмиразрядного числа влево на любое количество разрядов в
пределах 32-разрядного слова;
• любая константа в виде 0x00XY00XY;
• любая константа в виде 0xXY00XY00;
• любая константа в виде 0xXYXYXYXY.
Во всех вышеописанных случаях X и Y представляют шестнадцатеричные
цифры.
Регистр с необязательным параметром сдвига. Operand2 задается в форме:
Rm {, shift} ,
Где: Rm – регистр, содержащий данные для второго операнда инструк-
ции;
shift – необязательный параметр, определяющий сдвиг данных ре-
гистра Rm. Он может принимать одно из следующих значений (рис 2.2):
ASR #n - арифметический сдвиг вправо на n бит, 1 ≤ n ≤ 32;
LSL #n - логический сдвиг влево на n бит, 1 ≤ n ≤ 31;
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
