Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архитектура и структурная организация микроконтроллеров семейства CORTEX-M. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
МИНИСТЕРСТВО ТРАНСПОРТА
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«РОССИЙСКИЙ УНИВЕРСИТЕТ ТРАНСПОРТА»
Институт управления и цифровых технологий
М.И. Шамров
АРХИТЕКТУРА И СТРУКТУРНАЯ ОРГАНИЗАЦИЯ
МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА 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 аппаратное умно-
жение, опциональный системный таймер и память «bit­banding» , опциональный КЭШ, опциональный 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 Cor­tex-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, а также регистры PRI­MASK, 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;
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]