УДК 004.31(035.3)
ББК 32.973-04я81
Ю11
Данное издание подготовлено при участии компании «Компэл» и российского представительства компании
Texas Instruments. На сайтах www.compel.ru и www.ti.com/ru вы можете получить консультацию,
а также заказать бесплатные образцы микросхем.
Телефон горячей линии технической поддержки TI +7-495-981-07-01.
Ю11
Ю, Джозеф.
Ядро Cortex-M3 компании ARM. Полное руководство / Дж. Ю ; пер. с англ. А. В. ЕвстифееISBN
978-5-89818-435-3
Настоящая книга представляет собой исчерпывающее руководство по новому 32-битному процессору
ва. — 2-е изд., эл. — 1 файл pdf : 553 с. — Москва : ДМК Пресс, Додэка-XXI, 2023. — (Мировая
электроника). — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". —
Текст : электронный.
компании ARM — Cortex-M3. В данном руководстве подробно описана архитектура процессорного ядра
Cortex-M3 и его подсистемы памяти. Также подробно рассмотрены остальные узлы процессора, в том
числе контроллер векторных прерываний NVIC, модуль защиты памяти MMU и разнообразные компоненты
отладки. Приводится детальное описание новой системы команд Tuhmb-2, поддерживаемой данным
процессором.
Книга содержит большое число примеров программного кода как на языке Си, так и на ассемблере.
Это руководство должно присутствовать на столе любого разработчика, использующего в своей работе
микроконтроллеры с ядром Cortex-M3. Полнота и ясность изложения материала книги также позволяет
рекомендовать её студентам соответствующих специальностей и подготовленным радиолюбителям.
УДК 004.31(035.3)
ББК 32.973-04я81
Электронное издание на основе печатного издания: Ядро Cortex-M3 компании ARM. Полное руководство / Дж. Ю ;
пер. с англ. А. В. Евстифеева. — Москва : ДМК Пресс, Додэка-XXI, 2015. — 552 с. — (Мировая электроника). — ISBN
978-5-97060-307-9. — Текст : непосредственный.
Все права защищены. Никакая часть этого издания не может быть воспроизведена в любой форме или любыми средствами, электронными
или механическими, включая фотографирование, ксерокопирование или иные средства копирования или сохранения информации,
без письменного разрешения издательства.
Книга «Ядро Cortex-M3 компании ARM. Полное руководство» Дж. Ю подготовлена и издана по договору с Elsevier Inc., 30 Corporste
Drive, 4th Floor, Burlington, MA 01803, USA.
В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель
вправе требовать от нарушителя возмещения убытков или выплаты компенсации.
ISBN 978-5-89818-435-3
© 2010 Elsevier Inc. All rights reserved.
© Издательский дом «Додэка-XXI», 2012
© Издание, ДМК Пресс, 2015
Стр.5
СОДЕРЖАНИЕ
Содержание ■ V
Вступительное слово ................................................................... 1
Вступительное слово ................................................................... 2
Вступительное слово ................................................................... 3
Предисловие автора ..................................................................... 4
Обозначения ................................................................................ 5
Глоссарий ..................................................................................... 6
Глава 1. Введение ........................................................................ 9
1.1. Процессор ARM Cortex-M3 — что же это такое? .......................................................9
1.2. ARM — компания и архитектура .......................................................................... 11
1.2.1. Историческая справка ............................................................................................11
1.2.2. Версии архитектуры .............................................................................................. 12
1.2.3. Обозначения процессоров ....................................................................................14
1.3. Развитие набора команд ......................................................................................... 16
1.4. Технология Th umb-2 и архитектура набора команд .......................................... 17
1.5. Области применения процессора Cortex-M3 ....................................................... 18
1.6. Структура книги ...................................................................................................... 19
1.7. Дополнительная литература .................................................................................. 19
Глава 2. Обзор Cortex-M3 ..........................................................21
2.1. Основные сведения ................................................................................................. 21
2.2. Регистры .................................................................................................................... 22
2.2.1. R0…R12 — регистры общего назначения ......................................................... 23
2.2.2. R13 — указатели стека ........................................................................................... 23
2.2.3. R14 — регистр связи ............................................................................................... 23
2.2.4. R15 — счётчик команд ........................................................................................... 23
2.2.5. Регистры специального назначения .................................................................. 23
2.3. Режимы работы ....................................................................................................... 24
Стр.6
Содержание ■ VII
2.4. Встроенный контроллер вложенных векторных прерываний........................ 25
2.4.1. Поддержка вложенных прерываний ................................................................. 25
2.4.2. Поддержка векторных прерываний .................................................................. 26
2.4.3. Поддержка динамического изменения приоритетов ................................... 26
2.4.4. Уменьшение времени реакции на прерывание .............................................. 26
2.4.5. Маскирование прерываний ................................................................................. 26
2.5. Карта памяти ............................................................................................................ 26
2.6. Интерфейсы шин ..................................................................................................... 27
2.7. Модуль защиты памяти MPU ................................................................................ 28
2.8. Набор команд ........................................................................................................... 28
2.9. Прерывания и исключения ................................................................................... 30
2.9.1. Низкое энергопотребление и высокая энергоэффективность ....................31
2.10. Возможности отладки ........................................................................................... 32
2.11. Резюме ...................................................................................................................... 33
2.11.1. Высокая производительность ............................................................................ 33
2.11.2. Развитые средства поддержки прерываний .................................................. 34
2.11.3. Низкое энергопотребление ................................................................................. 35
2.11.4. Системные возможности .................................................................................... 35
2.11.5. Поддержка отладки .............................................................................................. 35
Глава 3. Основы Cortex-M3 .......................................................37
3.1. Регистры .................................................................................................................... 37
3.1.1. Регистры общего назначения с R0 по R7 ........................................................... 37
3.1.2. Регистры общего назначения с R8 по R12 ........................................................ 37
3.1.3. Указатель стека R13 ................................................................................................. 37
3.1.4. Регистр связи R14 .................................................................................................... 40
3.1.5. Счётчик команд R15 ............................................................................................... 40
3.2. Регистры специального назначения .................................................................... 41
3.2.1. Регистры состояния программы ........................................................................ 41
3.2.2. Регистры PRIMASK, FAULTMASK и BASEPRI ............................................... 43
3.2.3. Регистр управления CONTROL .......................................................................... 44
3.3. Режимы работы ........................................................................................................ 45
3.4. Исключения и прерывания ................................................................................... 47
3.5. Таблица векторов ..................................................................................................... 49
3.6. Стек ............................................................................................................................ 49
3.6.1. Основные стековые операции ............................................................................. 50
3.6.2. Реализация стека в процессоре Cortex-M3 .......................................................51
3.6.3. Два стека процессора Cortex-M3......................................................................... 52
3.7. Цикл сброса ............................................................................................................... 54
Глава 4. Набор команд ............................................................. 56
4.1. Основы языка ассемблера ...................................................................................... 56
4.1.1. Язык ассемблера: основы синтаксиса ................................................................ 56
4.1.2. Язык ассемблера: использование суффиксов .................................................. 57
4.1.3. Язык ассемблера: унифицированный язык ассемблера ............................... 58
Стр.8
Содержание ■ IX
4.2. Список команд ......................................................................................................... 59
4.2.1. Неподдерживаемые команды .............................................................................. 64
4.3. Описание команд ..................................................................................................... 65
4.3.1. Язык ассемблера: пересылка данных ................................................................. 66
4.3.2. Псевдокоманды LDR и ADR ................................................................................. 69
4.3.3. Язык ассемблера: обработка данных ................................................................. 70
4.3.4. Язык ассемблера: вызов подпрограмм и безусловный переход ................. 75
4.3.5. Язык ассемблера: условное выполнение и переходы .................................... 76
4.3.6. Язык ассемблера: объединение операций сравнения и условного
перехода .......................................................................................................... 79
4.3.7. Язык ассемблера: команды барьерной синхронизации ................................81
4.3.8. Язык ассемблера: операции насыщения........................................................... 82
4.4. Некоторые полезные команды процессора Cortex-M3 ...................................... 85
4.4.1. Команды MSR и MRS ............................................................................................. 85
4.4.2. Ещё раз об IT-блоке ................................................................................................ 86
4.4.3. Команды SDIV и UDIV .......................................................................................... 87
4.4.4. Команды REV, REVH и REVSH ........................................................................... 88
4.4.5. Перестановка битов................................................................................................ 88
4.4.6. Команды SXTB, SXTH, UXTB и UXTH ............................................................. 88
4.4.7. Очистка и вставка битового поля ....................................................................... 89
4.4.8. Команды UBFX и SBFX .......................................................................................... 89
4.4.9. Команды LDRD и STRD ........................................................................................ 89
4.4.10. Команды табличного перехода TBB и TBH .................................................... 90
Глава 5. Система памяти ...........................................................93
5.1. Основные особенности системы памяти ............................................................. 93
5.2. Карта памяти ............................................................................................................ 93
5.3. Атрибуты доступа к памяти ................................................................................... 96
5.4. Права доступа к памяти, принятые по умолчанию ........................................... 98
5.5. Операции побитового доступа .............................................................................. 99
5.5.1. Преимущества использования метода bit-band ............................................ 103
5.5.2. Битовые операции с данными разной разрядности ................................... 106
5.5.3. Битовые операции в Си-программах .............................................................. 106
5.6. Обращения к невыровненным данным ............................................................. 107
5.7. Монопольный доступ ............................................................................................ 109
5.8. Порядок расположения байтов ............................................................................111
Глава 6. Особенности реализации Cortex-M3 ........................ 114
6.1. Конвейер ...................................................................................................................114
6.2. Подробная блок-схема .......................................................................................... 116
6.3. Интерфейсы шин в процессоре Cortex-M3 ........................................................ 119
6.3.1. Шина I-Code............................................................................................................ 120
6.3.2. Шина D-Code ......................................................................................................... 120
6.3.3. Системная шина .................................................................................................... 120
6.3.4. Внешняя шина PPB ............................................................................................... 120
Стр.10
Содержание ■ XI
6.3.5. Шина DAP ...............................................................................................................120
6.4. Другие интерфейсы процессора Cortex-M3 ....................................................... 121
6.5. Внешняя шина PPB ............................................................................................... 121
6.6. Типичная схема подключения процессора ....................................................... 122
6.7. Виды сброса и сигналы сброса ............................................................................. 124
Глава 7. Исключения ...............................................................126
7.1. Типы исключений .................................................................................................. 126
7.2. Приоритеты исключений ..................................................................................... 128
7.3. Таблица векторов ................................................................................................... 134
7.4. Входы прерываний и отложенная обработка прерываний ............................ 135
7.5. Исключения отказов ............................................................................................. 138
7.5.1. Отказы шины .......................................................................................................... 138
7.5.2. Отказы системы управления памятью ........................................................... 140
7.5.3. Отказы программы ................................................................................................141
7.5.4. Тяжёлые отказы ..................................................................................................... 143
7.5.5. Обработка отказов ................................................................................................ 143
7.6. Вызов супервизора и системных служб ............................................................. 144
Глава 8. Контроллер вложенных векторных прерываний
и управление прерываниями ...................................149
8.1. Общие сведения о контроллере прерываний ................................................... 149
8.2. Базовые средства конфигурации прерываний ................................................ 150
8.2.1. Разрешение и запрещение прерываний.......................................................... 150
8.2.2. Установка/сброс признака отложенного прерывания ............................... 153
8.2.3. Уровни приоритета .............................................................................................. 153
8.2.4. Активное состояние ............................................................................................. 153
8.2.6. Регистр BASEPRI ................................................................................................... 155
8.2.7. Конфигурационные регистры остальных исключений ............................. 156
8.3. Примеры инициализации прерывания ............................................................ 158
8.4. Программные прерывания .................................................................................. 160
8.5. Системный таймер SYSTICK................................................................................ 161
Глава 9. Прерывания ..............................................................164
9.1. Последовательность обработки прерываний/исключений ............................ 164
9.1.1. Сохранение контекста .......................................................................................... 164
9.1.2. Выборка вектора .................................................................................................... 166
9.1.3. Обновление регистров ......................................................................................... 166
9.2. Выход из исключения ........................................................................................... 166
9.3. Вложенные прерывания ....................................................................................... 167
9.4. «Цепочечная» обработка прерываний ............................................................... 168
9.5. «Опоздавшие» исключения .................................................................................. 168
9.6. Ещё раз о значении EXC_RETURN ..................................................................... 169
9.7. Задержка обработки прерывания ....................................................................... 171
Стр.12
XII ■ Содержание
9.8. Отказы, связанные с прерываниями ................................................................. 172
9.8.1. Сохранение контекста .......................................................................................... 172
9.8.2. Восстановление контекста .................................................................................. 172
9.8.3. Выборка вектора ................................................................................................... 173
9.8.4. Некорректный возврат ........................................................................................ 173
Глава 10. Программирование Cortex-M3 ................................. 174
10.1. Общие сведения ....................................................................................................174
10.2. Типичный процесс разработки ПО ...................................................................174
10.3. Использование языка Си .................................................................................... 175
10.3.1. Компиляция простой Си-программы в пакете RVDS ...............................176
10.3.2. Компиляция простой Си-программы в пакете MDK-ARM ................... 179
10.3.3. Отображённые в память регистры и язык Си ............................................ 180
10.3.4. Встроенные функции ......................................................................................... 182
10.3.5. Встроенный и inline-ассемблер ....................................................................... 183
10.4. Стандарт CMSIS ................................................................................................... 183
10.4.1. Предпосылки появления стандарта CMSIS ................................................. 183
10.4.2. Области стандартизации .................................................................................. 185
10.4.3. Структура CMSIS ................................................................................................ 185
10.4.4. Использование стандарта CMSIS ................................................................... 187
10.4.5. Выгода от использования CMSIS .................................................................... 189
10.5. Использование ассемблера ................................................................................. 190
10.5.1. Интерфейс между ассемблером и Си ............................................................. 190
10.5.2. Программирование на ассемблере — первые шаги ......................................... 191
10.5.3. Вывод результатов работы программы ........................................................ 192
10.5.4. Программа «Hello World» ................................................................................. 194
10.5.5. Использование памяти данных ...................................................................... 197
10.6. Монопольный доступ и семафоры .................................................................... 198
10.7. Метод bit-band и семафоры ................................................................................. 201
10.8. Использование команд извлечения битового поля
и команд табличных переходов ......................................................................... 202
Глава 11. Работа с прерываниями/исключениями .................204
11.1. Использование прерываний ..............................................................................204
11.1.1. Конфигурирование стека .................................................................................. 204
11.1.2. Настройка таблицы векторов прерываний ................................................. 205
11.1.3. Назначение приоритетов прерываний .......................................................... 206
11.1.4. Разрешение прерываний ................................................................................... 207
11.2. Обработчики исключений/прерываний .........................................................209
11.3. Программные прерывания ................................................................................ 211
11.4. Пример перемещения таблицы векторов ........................................................ 213
11.5. Использование команды SVC ............................................................................ 216
11.6. Пример использования команды SVC: функции вывода текстовых
сообщений ............................................................................................................. 217
11.7. Использование команды SVC в программах на языке Си ............................. 220
Стр.13
Содержание ■ XIII
Глава 12. Продвинутые программные возможности
и поведение системы .................................................223
12.1. Реализация системы с двумя раздельными стеками ..................................... 223
12.2. Выравнивание стека на границу двойного слова .......................................... 226
12.3. Переход в режим потока с любого уровня вложенности .............................. 227
12.4. Пара слов о производительности ...................................................................... 229
12.5. Состояние блокировки ....................................................................................... 231
12.5.1. Что происходит во время блокировки? ........................................................ 231
12.5.2. Предотвращение блокировки ......................................................................... 232
12.6. Регистр FAULTMASK ........................................................................................... 233
Глава 13. Модуль защиты памяти MPU ...................................234
13.1. Общие сведения ................................................................................................... 234
13.2. Регистры модуля MPU ........................................................................................ 235
13.3. Настройка модуля MPU ...................................................................................... 241
13.4. Типичный процесс настройки модуля MPU ................................................... 247
13.4.1. Пример использования запрета подобластей ............................................. 248
Глава 14. Прочие возможности процессора Cortex-M3 ...........252
14.1. Системный таймер SYSTICK .............................................................................. 252
14.2. Управление электропитанием ........................................................................... 255
14.2.1. Спящие режимы .................................................................................................. 255
14.2.2. Функция Sleep-On-Exit ...................................................................................... 257
14.2.3. Контроллер WIC ................................................................................................. 258
14.3. Межпроцессорный обмен ...................................................................................260
14.4. Управление сбросом ............................................................................................264
Глава 15. Архитектура системы отладки .................................266
15.1. Общие сведения о возможностях отладки ......................................................266
15.2. Обзор архитектуры CoreSight ............................................................................266
15.2.1. Отладочный интерфейс процессора .............................................................. 267
15.2.2. Интерфейс хоста отладки ................................................................................. 267
15.2.3. Модули DP, AP и DAP ........................................................................................ 268
15.2.4. Интерфейс трассировки ................................................................................... 269
15.2.5. Характеристики архитектуры CoreSight ...................................................... 269
15.3. Режимы отладки .................................................................................................. 271
15.4. События отладки ................................................................................................. 275
15.5. Точки останова в процессоре Cortex-M3 .......................................................... 276
15.6. Получение доступа к содержимому регистров при отладке ......................... 277
15.7. Прочие отладочные возможности ядра ............................................................ 278
Стр.14
XIV ■ Содержание
Глава 16. Компоненты отладки ................................................280
16.1. Общие сведения ...................................................................................................280
16.1.1. Система трассировки в процессоре Cortex-M3 ........................................... 280
16.2. Компоненты трассировки: модуль DWT ......................................................... 281
16.3. Компоненты трассировки: модуль ITM ........................................................... 283
16.3.1. Программная трассировка с использованием модуля ITM .................... 284
16.3.2. Аппаратная трассировка с использованием модулей ITM и DWT ......... 285
16.3.3. Временные отметки модуля ITM .................................................................... 285
16.4. Компоненты трассировки: модуль ETM .......................................................... 285
16.5. Компоненты трассировки: модуль TPIU..........................................................286
16.6. Модуль FPB ........................................................................................................... 287
16.6.1. Точка останова ..................................................................................................... 287
16.6.2. Функция Flash Patch .......................................................................................... 288
16.6.3. Компараторы ........................................................................................................ 288
Глава 17. Приступая к работе с процессором Cortex-M3.........294
17.1. Выбор устройства с ядром Cortex-M3 ................................................................ 294
17.2. Средства разработки ........................................................................................... 295
17.2.1. Си-компиляторы и отладчики ......................................................................... 296
17.2.2. Поддержка встраиваемых ОС ......................................................................... 297
17.3. Различия между процессорами Cortex-M3 ревизий 0 и 1 .............................. 298
17.3.1. Ревизия 1 — замена модуля JTAG-DP на SWJ-DP ....................................... 300
17.4. Различия между процессорами Cortex-M3 ревизий 1 и 2 ..............................300
17.4.1. Выравнивание стека на границу двойного слова по умолчанию ........... 300
17.4.2. Дополнительный регистр управления .......................................................... 301
17.4.3. Новое значение регистров идентификации ................................................. 301
17.4.4. Возможности отладки ........................................................................................ 301
17.4.5. Особенности режима пониженного энергопотребления ........................ 302
16.7. Порт доступа шины AHB .................................................................................... 290
16.8. Таблица ПЗУ ......................................................................................................... 291
17.5. Чем же хороша ревизия 2 процессора Cortex-M3? ......................................... 303
17.6. Различия между процессорами Cortex-M3 и Cortex-M0 ................................ 304
17.6.1. Модель программирования ............................................................................. 305
17.6.2. Исключения и контроллер NVIC .................................................................... 305
17.6.3. Набор команд ....................................................................................................... 306
17.6.4. Особенности системы памяти ......................................................................... 307
17.6.5. Возможности отладки ........................................................................................ 307
17.6.6. Совместимость ..................................................................................................... 307
Глава 18. Перенос приложений с процессора ARM7
на процессор Cortex-M3 ............................................309
18.1. Общие сведения ................................................................................................... 309
18.2. Особенности системы ......................................................................................... 309
18.2.1. Карта памяти ........................................................................................................ 309
Стр.15
Содержание ■ XV
18.2.2. Прерывания ..........................................................................................................310
18.2.3. Модуль MPU .........................................................................................................311
18.2.4. Управление системой ..........................................................................................311
18.2.5. Режимы работы ....................................................................................................311
18.3. Файлы с исходным текстом на ассемблере ....................................................... 312
18.3.1. Режим Th umb ........................................................................................................313
18.3.2. Состояние ARM ...................................................................................................313
18.4. Файлы с исходным текстом на Си ..................................................................... 315
18.5. Скомпилированные объектные файлы ........................................................... 316
18.6. Оптимизация ....................................................................................................... 316
Глава 19. Разработка приложений для Cortex-M3
с использованием GNU ............................................. 318
19.1. Общие сведения.................................................................................................... 318
19.2. Приобретение инструментария GNU ............................................................... 319
19.3. Процесс разработки программы ....................................................................... 319
19.4. Примеры ................................................................................................................ 321
19.4.1. Пример 1: первая программа ........................................................................... 321
19.4.2. Пример 2: связывание нескольких файлов .................................................. 323
19.4.3. Пример 3: простая программа «Hello World» .............................................. 324
19.4.4. Пример 4: данные в ОЗУ ................................................................................... 326
19.4.5. Пример 5: программа на Си ............................................................................. 327
19.4.6. Пример 6: перенаправление вывода в программе на Си .......................... 330
19.4.7. Пример 7: реализация собственной таблицы векторов .............................331
19.5. Обращения к регистрам специального назначения ...................................... 332
19.6. Использование неподдерживаемых команд ................................................... 332
19.7. Inline-ассемблер в компиляторе GСС ............................................................... 332
Глава 20. Использование пакета RealView MDK-ARM
компании Keil ............................................................334
20.1. Общие сведения ................................................................................................... 334
20.2. Приступая к работе в ИСР μVision .................................................................... 334
20.3. Вывод сообщения «Hello World» по интерфейсу UART ................................ 341
20.4. Тестирование программы .................................................................................. 343
20.5. Использование отладчика ..................................................................................346
20.6. Симулятор ............................................................................................................ 350
20.7. Модификация таблицы векторов ..................................................................... 353
20.8. Прерывания и стандарт CMSIS ......................................................................... 354
20.9. Перевод существующих приложений на стандарт CMSIS ............................ 360
Глава 21. Программирование Cortex-M3 в LabVIEW ..............361
21.1. Общие сведения.................................................................................................... 361
21.2. Знакомство с LabVIEW ........................................................................................ 361
21.2.1. Типичные области применения ...................................................................... 362
Стр.16
XVI ■ Содержание
21.2.2. Что нам нужно, чтобы использовать LabVIEW и ARM ........................... 363
21.3. Процесс разработки .............................................................................................364
21.4. Пример использования среды LabVIEW .......................................................... 366
21.4.1. Создание проекта ................................................................................................ 366
21.4.2. Определение входов и выходов ....................................................................... 367
21.4.3. Создание программы ......................................................................................... 368
21.4.4. Компиляция программы и тестирование приложения ........................... 370
21.5. Как это работает ................................................................................................... 371
21.6. Дополнительные возможности LabVIEW ........................................................ 372
21.7. Перенос проекта на другие процессоры ARM ..................................................... 374
Приложение А. Набор команд Cortex-M3.
Справочный материал ...................................375
Приложение Б. 16-битные команды Th umb
и версии архитектуры ARM ...........................437
Приложение В. Исключения процессора Cortex-M3 ...............438
Приложение Г. Регистры контроллера NVIC
и блока управления системой ...................... 440
Приложение Д. Руководство по локализации ошибок
в программах для Cortex-M3 ..........................455
Приложение Е. Пример сценария компоновщика
для пакета Sourcery G++ ................................468
Приложение Ж. Функции доступа к ядру стандарта CMSIS ..473
Приложение З. Соединители для подключения
отладочных средств ........................................480
Приложение И. Семейство микроконтроллеров Stellaris® ..... 484
Список литературы ...................................................................529
Предметный указатель .............................................................530
Стр.17