Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Ядро Cortex-M3 компании ARM. Полное руководство

Покупка
Артикул: 701399.02.99
Доступ онлайн
649 ₽
В корзину
Настоящая книга представляет собой исчерпывающее руководство по новому 32-битному процессору компании ARM — Cortex-M3. В данном руководстве подробно описана архитектура процессорного ядра Cortex-M3 и его подсистемы памяти. Также подробно рассмотрены остальные узлы процессора, в том числе контроллер векторных прерываний NVIC, модуль защиты памяти MMU и разнообразные компоненты отладки. Приводится детальное описание новой системы команд Tuhmb-2, поддерживаемой данным процессором. Книга содержит большое число примеров программного кода как на языке Си, так и на ассемблере. Это руководство должно присутствовать на столе любого разработчика, использующего в своей работе микроконтроллеры с ядром Cortex-M3. Полнота и ясность изложения материала книги также позволяет рекомендовать её студентам соответствующих специальностей и подготовленным радиолюбителям.
Джозеф, Ю. Ядро Cortex-M3 компании ARM. Полное руководство : практическое руководство / Ю. Джозеф ; пер. с англ. А. В. Евстифеева. - 2-е изд. - Москва : ДМК Пресс, Додэка-XXI, 2023. - 553 с. - (Мировая электроника). - ISBN 978-5-89818-435-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/2104741 (дата обращения: 20.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Ядро Cortex-M3 компании ARM 

Полное руководство
Joseph Yiu

THE DEFINITIVE GUIDE 
TO THE ARM CORTEX-M3
СЕРИЯ
МИРОВАЯ  ЭЛЕКТРОНИКА

Джозеф Ю

ЯДРО CORTEX-M3 
КОМПАНИИ ARM 

Полное руководство

Перевод А. В. Евстифеева

Москва

2023
ДМК Пресс, ДодэкаXXI

2-е издание, электронное
УДК 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. Полное руководство / Дж. Ю ; пер. с англ. А. В. Евстифеева. — 
2-е изд., эл. — 1 файл pdf : 553 с. — Москва : ДМК Пресс, Додэка-XXI, 2023. — (Мировая 
электроника). — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — 
Текст : электронный.
ISBN 978-5-89818-435-3

Настоящая книга представляет собой исчерпывающее руководство по новому 32-битному процессору 
компании 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
Содержание  ■  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

СОДЕРЖАНИЕ
VI  ■  Содержание
Содержание  ■  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
VIII  ■  Содержание
Содержание  ■  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
X  ■  Содержание
Содержание  ■  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
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
Содержание  ■  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
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
16.7.  Порт доступа шины AHB ....................................................................................290
16.8.  Таблица ПЗУ ......................................................................................................... 291

Глава 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
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
Содержание  ■  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
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
ВСТУПИТЕЛЬНОЕ СЛОВО

С момента выхода первого издания книги прошло не так уж много времени, 
а темпы развития сообщества пользователей микроконтроллеров с процессорами 
ARM уже превзошли самые смелые ожидания. Безо всякого преувеличения 
можно сказать, что продукция нашей компании произвела настоящую революцию 
в мире микроконтроллеров. На сегодняшний день в мире насчитывается тысячи 
и тысячи конечных пользователей микроконтроллеров, построенных на 
процессорах ARM, что даёт все основания считать данную технологию наиболее 
быстро развивающейся из представленных на рынке. Поэтому второе издание 
книги Джозефа, содержащее наиболее актуальную информацию о данной технологии 
МК, появилось как нельзя вовремя.
О развитии сообщества можно судить по таким фактам, как увеличение числа 
компаний, предлагающих свои изделия на базе процессора Cortex-M3 (на сегодняшний 
день насчитывается более 30 таких компаний), разработка стандарта 
CMSIS, облегчающего перенос приложений как между различными вариантами 
процессора Cortex, так и между устройствами разных производителей, а также 
появление более совершенных средств разработки. Нельзя не упомянуть и о выпуске 
процессора Cortex-M0, который открыл перед микроконтроллерами ARM 
нишу чрезвычайно дешёвых устройств.
Всё это свидетельствует о наступлении эры встраиваемых систем на базе процессора 
Cortex-M3!

Ричард Йорк (Richard York)
Руководитель подразделения маркетинга продукции, компания ARM
ВСТУПИТЕЛЬНОЕ СЛОВО

Люди, пишущие программы для микроконтроллеров, в чём-то подобны божествам. 
Подчиняя микроконтроллеры своей воле, они вдыхают жизнь в застывшие 
конструкции и в итоге создают фантастические изделия. Далеко не последнюю 
роль в этом акте творения играют средства разработки — вот почему в группу, 
основной задачей которой было упрощение и в то же время усовершенствование 
процессора ARM7TDMI, помимо разработчиков ЦПУ, вошли специалисты 
отдела разработки программных средств компании ARM.
В результате такого совместного творчества на свет появился процессор 
Cortex™-M3, явивший собой потрясающее развитие оригинальной архитектуры 
ARM. Новый процессор органично сочетает в себе все преимущества 32-битной 
архитектуры ARM с поддержкой чрезвычайно эффективного набора команд 
Th umb-2, обеспечивая при этом ряд новых возможностей. Однако, несмотря на 
все усовершенствования, процессор Cortex-M3 сохранил упрощённую модель 
программирования, которая хорошо знакома всем приверженцам архитектуры 
ARM.

Уэйн Лайонз (Wayne Lyons)
Руководитель подразделения встраиваемых решений, компания ARM
ВСТУПИТЕЛЬНОЕ СЛОВО

Сегодня многие российские разработчики и специалисты хорошо знакомы 
или начинают знакомиться с продукцией компании ARM, в том числе с новыми 
продуктами серии Cortex (M0, M3, M4…). На все вопросы, связанные с преимуществами 
архитектуры ядра Cortex-M3, призвана ответить данная книга. Это 
первый и пока единственный технический материал на русском языке, рассказывающий 
о данной архитектуре, выпущенный при содействии компаний Texas 
Instruments и КОМПЭЛ.
В предисловиях автора и сотрудников компании ARM говорится о тенденциях 
в мире микроконтроллеров и актуальных темах, связанных с архитектурой 
ядра. В свою очередь, я бы хотела сфокусировать внимание непосредственно на 
компании Texas Instruments, которая также использует продукты ARM в своих 
разработках, в том числе — в микроконтроллерах на ядре Cortex-M3 (семейство 
Stellaris, см. Приложение И).
Итак, Texas Instruments (TI) — один из самых крупных производителей полупроводниковых 
компонентов с номенклатурой более 80 000 наименований, которая 
значительно расширилась в 2011 в связи с приобретением компании National 
Semiconductor.
Компания TI была основана в 1930 г. и изначально занималась сейсмографической 
разведкой нефти, но уже с 1952 г. переориентировалась на электронику, а в 
1958 г. сотрудник TI Джек Килби изобрел первую в мире интегральную микросхему. 
С этого момента началась новая эпоха в развитии электроники. Компания TI 
самостоятельно разрабатывала микроконтроллеры и цифровые сигнальные процессоры. 
Тем не менее, важной особенностью развития бизнеса TI была и покупка 
других фирм, в основном в области аналоговых компонентов. Это помогло компании 
вырасти из нишевой в гиганта с широчайшей номенклатурой полупроводниковых 
компонентов. Из самых значимых приобретений — Silicon Systems в 1996 г., 
Unitrode и Power Trends в 1999 г., Burr-Brown в 2000 г., Chipcon в 2007 г., Luminary 
Micro в 2009 г. и самая большая покупка на сегодня — компания National 
Semiconductor в 2011 г. Последние приобретения открывают для TI новые технологии 
и продукты. Например, с покупкой Luminary Micro компания приобрела микроконтроллеры 
семейства Stellaris на базе ядра Cortex-M3. Его описанию посвящено 
отдельное приложение в рамках этого издания. TI не останавливается просто 
на покупке: с момента присоединения Luminary Micro линейка продуктов 
продолжает расти. Совсем недавно анонсирована линейка новых микроконтроллеров 
LM4F на базе ядра Cortex-M4. Данная архитектура расширила семейство 
Stellaris, которое получило не только новые вычислительные возможности, но и 
фирменную технологию производства Texas Instruments. Топологической нормой 
для производства новых контроллеров стала отработанная в течение последних 
пяти лет 65-нанометровая технология. В результате стало возможным достичь небывалого 
компромисса между производительностью и энергопотреблением.
Надеюсь, эта книга станет для вас не просто настольным справочником, а настоящим 
помощником в работе с микроконтроллерами, сделанными на базе ядра 
Cortex-M3 от компании ARM.

Мария Рудяк
Руководитель направления по работе с продукцией Texas Instruments
КОМПЭЛ
ПРЕДИСЛОВИЕ АВТОРА

Данная книга предназначена как для разработчиков, так и для программистов, 
заинтересовавшихся процессором Cortex™-M3 компании ARM. Разумеется, 
в официальных документах, таких как «Cortex-M3 Technical Reference Manual» 
и «ARMv7-M Architecture Application Level Reference Manual», содержится практически 
вся информация по этому процессору. Однако указанные документы излишне 
подробны и могут оказаться слишком сложными для понимания.
Эта же книга писалась в расчёте на программистов, разработчиков встраиваемых 
устройств, разработчиков систем на кристалле, радиолюбителей, учёных — 
в общем, самых разных людей, изучающих процессор Cortex-M3 и хоть в какой-
то мере знакомых с микроконтроллерами либо микропроцессорами. В книге достаточно 
подробно рассматриваются архитектура процессора Cortex-M3, набор 
команд с примерами использования некоторых из них, различные аппаратные 
возможности, а также развитая система отладки процессора. Кроме того, в книге 
также приведены примеры программ, позволяющие читателю освоить азы разработки 
ПО для процессора Cortex-M3 с использованием инструментариев ARM 
и GNU. Эта книга также пригодится разработчикам, переносящим свои проекты 
с процессора ARM7TDMI на Cortex-M3, поскольку описывает как различия между 
двумя указанными процессорами, так и собственно процесс переноса прикладных 
программ с процессора ARM7TDMI на Cortex-M3.

Благодарности

Прежде всего, я хотел бы поблагодарить всех тех, кто своими советами, консультациями 
и отзывами оказал мне огромную помощь в написании первого 
и второго изданий книги: Ричарда Йорка (Richard York), Эндрю Фрейма (Andrew 
Frame), Рейнхарда Кейла (Reinhard Keil), Ника Сампейза (Nick Sampays), Дэва Ба-
нерджи (Dev Banerjee), Роберта Бойза (Robert Boys), Доминика Паджака (Dominic 
Pajak), Алана Трингхэма (Alan Tringham), Стивена Теобальда (Stephen Th eobald), 
Дэна Брука (Dan Brook), Дэвида Браша (David Brash), Гайдна Поуви (Haydn Povey), 
Гэри Кэмпбелла (Gary Campbell), Кевина Макдермотта (Kevin McDermott), Ричарда 
Ирншоу (Richard Earnshaw), Шияма Садасивана (Shyam Sadasivan), Саймона 
Краске (Simon Craske), Саймона Аксфорда (Simon Axford), Такаши Угаджина (Ta-
kashi Ugajin), Уэйна Лайонза (Wayne Lyons), Самина Иштиака (Samin Ishtiaq) 
и Саймона Смита (Simon Smith).
Я хотел бы особо поблагодарить Яна Белла (Ian Bell) и Джейми Бреттль (Jamie 
Brettle) из компании National Instruments за помощь в написании главы, посвящённой 
пакету LabVIEW, и за их поддержку. Также я хотел бы выразить мою признательность 
Карлосу О’Донеллу  (Carlos O’Donell), Брайану Баррере (Brian Barrera) и 
Дэниелу Якобовицу (Daniel Jakobowitz) из компании CodeSourcery за их поддержку 
и помощь в подборе материалов, касающихся разработки ПО в пакете Sourcery 
G++. И, конечно же, огромное спасибо всем сотрудникам издательства Elsevier за 
их профессионализм, проявленный при подготовке данной книги к публикации.
Наконец, я хотел бы высказать благодарность Питеру Коулю (Peter Cole) и Ивану 
Ярдли (Ivan Yardley) за их постоянную поддержку и заинтересованность в этом проекте.
ОБОЗНАЧЕНИЯ

В данной книге используются следующие обозначения и правила оформления:


Обычный ассемблерный код

MOV R0, R1; Копируем содержимое регистра R1 в регистр R0

Ассемблерный код с использованием обобщённого синтаксиса
Элементы, обозначенные угловыми скобками, необходимо заменить названиями 
регистров:

MRS <reg>, <special_reg>

Тексты программ на языке Си

for (i=0;i<3;i++) { func1(); }

Псевдокод

if (a > b) { ...

Значения
1. 4’hC, 0x123 — шестнадцатеричные значения.
2. #3 — элемент №3 (например, IRQ #3 означает IRQ с номером 3).
3. #immed _ 12 — 12-битное непосредственное значение (константа).

Биты регистров
Обычно используются для указания части содержимого регистра; например, 
запись «биты [15:12]» относится к битам с 15-го по 12-й.

Доступность битов регистров обозначается следующим образом:
1. R — доступен только для чтения.
2. W — доступен только для записи.
3. R/W — доступен для чтения и для записи.
4. R/Wc — доступен для чтения, при записи сбрасывается.
ГЛОССАРИЙ

ADK 
AMBA Design Kit
Набор разработки AMBA
AHB 
Advanced High-Performance Bus
Усовершенствованная высокопроизводительная шина (шина AHB)
AHB-AP 
AHB Access Port
Порт доступа к шине AHB
AMBA 
Advanced Microcontroller Bus Architecture
Усовершенствованная шинная архитектура для микроконтроллеров
APB 
Advanced Peripheral Bus
Усовершенствованная шина периферии (шина APB)
ARM ARM ARM Architecture Reference Manual
Справочное руководство по архитектуре ARM
ASIC 
Application-Specifi c Integrated Circuit
Заказная интегральная схема
ATB 
Advanced Trace Bus
Усовершенствованная шина трассировки (шина ATB)
BE-8 
Byte-invariant big Endian mode
Обратный порядок байтов с неизменным расположением байтов 
(формат хранения данных)
CMSIS 
Cortex Microcontroller Soft ware Interface Standard
Стандарт программного интерфейса микроконтроллеров с ядром 
Cortex
CPI 
Cycles Per Instruction
Число тактов на команду
CPU 
Central Processing Unit
Центральный процессор, ЦПУ
CS3 
CodeSourcery Common Start-up Code Sequence
Общий стартовый код ИСР CodeSourcery
DAP 
Debug Access Port
Порт доступа к модулю отладки (порт DAP)
DSP 
Digital Signal Processor/Digital Signal Processing
Процессор цифровой обработки сигналов / Цифровая обработка 
сигналов
DWT 
Data Watchpoint and Trace unit
Модуль трассировки и поддержки контрольных точек данных
EABI/ABI 
Embedded Application Binary Interface
Двоичный интерфейс встраиваемых приложений (интерфейс EABI)
ETM 
Embedded Trace Macrocell
Встроенная макроячейка трассировки
FPB 
Flash Patch and Breakpoint unit
Модуль коррекции флэш-памяти и задания точки останова
FPGA 
Field Programmable Gate Array
Программируемая вентильная матрица
Доступ онлайн
649 ₽
В корзину