Автор: Джозеф Ю
Издательство: Додэка-ХХI
Серия: Мировая электроника
Год издания: 2012
Страниц: 552
ISBN: 978-5-94120-243-0
Формат: DjVu
Размер: 20,8 Мб
Качество: хорошее
Настоящая книга представляет собой исчерпывающее руководство по новому 32-битному процессору компании ARM - Cortex-МЗ. В данном руководстве подробно описана архитектура процессорного ядра Cortex-МЗ и его подсистемы памяти. Также подробно рассмотрены остальные узлы процессора, в том числе контроллер векторных прерываний NVIC, модуль защиты памяти MMU и разнообразные компоненты отладки. Приводится детальное описание новой системы команд Tbumb-2, поддерживаемой данным процессором.
Книга содержит большое число примеров программного кода как на языке Си, так и на ассемблере.
Это руководство должно быть у любого разработчика, использующего в своей работе микроконтроллеры с ядром Cortex-МЗ. Полнота и ясность изложения материала книги также позволяет рекомендовать её студентам соответствующих специальностей и подготовленным радиолюбителям.
Вступительное слово
Предисловие автора
Обозначения
Глоссарий
Глава 1. Введение
1.1. Процессор ARM Cortex-МЗ — что же это такое?
1.2. ARM — компания и архитектура
1.2.1. Историческая справка
1.2.2. Версии архитектуры
1.2.3. Обозначения процессоров
1.3. Развитие набора команд
1.4. Технология Thumb-2 и архитектура набора команд
1.5. Области применения процессора Cortex-МЗ
1.6. Структура книги
1.7. Дополнительная литература
Глава 2. Обзор Cortex-МЗ
2.1. Основные сведения
2.2. Регистры
2.2.1. R0...R12 — регистры общего назначения
2.2.2. R13 — указатели стека
2.2.3. R14 — регистр связи
2.2.4. R15 — счётчик команд
2.2.5. Регистры специального назначения
2.3. Режимы работы
2.4. Встроенный контроллер вложенных векторных прерываний
2.4.1. Поддержка вложенных прерываний
2.4.2. Поддержка векторных прерываний
2.4.3. Поддержка динамического изменения приоритетов
2.4.4. Уменьшение времени реакции на прерывание
2.4.5. Маскирование прерываний
2.5. Карта памяти
2.6. Интерфейсы шин
2.7. Модуль защиты памяти MPU
2.8. Набор команд
2.9. Прерывания и исключения
2.9.1. Низкое энергопотребление и высокая энергоэффективность
2.10. Возможности отладки
2.11. Резюме
2.11.1. Высокая производительность
2.11.2. Развитые средства поддержки прерываний
2.11.3. Низкое энергопотребление
2.11.4. Системные возможности
2.11.5. Поддержка отладки
Глава 3. Основы Cortex-МЗ
3.1. Регистры
3.1.1. Регистры общего назначения с R0 по R7
3.1.2. Регистры общего назначения с R8 по R12
3.1.3. Указатель стека R13
3.1.4. Регистр связи R14
3.1.5. Счётчик команд R15
3.2. Регистры специального назначения
3.2.1. Регистры состояния программы
3.2.2. Регистры PRIMASK, FAULTMASK и BASEPRI
3.2.3. Регистр управления CONTROL
3.3. Режимы работы
3.4. Исключения и прерывания
3.5. Таблица векторов
3.6. Стек
3.6.1. Основные стековые операции
3.6.2. Реализация стека в процессоре Cortex-МЗ
3.6.3. Два стека процессора Cortex-МЗ
3.7. Цикл сброса
Глава 4. Набор команд
4.1. Основы языка ассемблера
4.1.1. Язык ассемблера: основы синтаксиса
4.1.2. Язык ассемблера: использование суффиксов
4.1.3. Язык ассемблера: унифицированный язык ассемблера
4.2. Список команд
4.2.1. Неподдерживаемые команды
4.3. Описание команд
4.3.1. Язык ассемблера: пересылка данных
4.3.2. Псевдокоманды LDR и ADR
4.3.3. Язык ассемблера: обработка данных
4.3.4. Язык ассемблера: вызов подпрограмм и безусловный переход
4.3.5. Язык ассемблера: условное выполнение и переходы
4.3.6. Язык ассемблера: объединение операций сравнения и условного перехода
4.3.7. Язык ассемблера: команды барьерной синхронизации
4.3.8. Язык ассемблера: операции насыщения
4.4. Некоторые полезные команды процессора Cortex-МЗ
4.4.1. Команды MSR и MRS
4.4.2. Ещё раз об IT-блоке
4.4.3. Команды SDIV и UDIV
4.4.4. Команды REV, REVH и REVSH
4.4.5. Перестановка битов
4.4.6. Команды SXTB, SXTH, UXTB и UXTH
4.4.7. Очистка и вставка битового поля
4.4.8. Команды UBFX и SBFX
4.4.9. Команды LDRD и STRD
4.4.10. Команды табличного перехода ТВВ и ТВН
Глава 5. Система памяти
5.1. Основные особенности системы памяти
5.2. Карта памяти
5.3. Атрибуты доступа к памяти
5.4. Права доступа к памяти, принятые по умолчанию
5.5. Операции побитового доступа
5.5.1. Преимущества использования метода bit-band
5.5.2. Битовые операции с данными разной разрядности
5.5.3. Битовые операции в Си-программах
5.6. Обращения к не выровненным данным
5.7. Монопольный доступ
5.8. Порядок расположения байтов
Глава 6. Особенности реализации Cortex-МЗ
6.1. Конвейер
6.2. Подробная блок-схема
6.3. Интерфейсы шин в процессоре Cortex-МЗ
6.3.1. Шина I-Code
6.3.2. Шина D-Code
6.3.3. Системная шина
6.3.4. Внешняя шина РРВ
6.3.5. Шина DAP
6.4. Другие интерфейсы процессора Cortex-МЗ
6.5. Внешняя шина РРВ
6.6. Типичная схема подключения процессора
6.7. Виды сброса и сигналы сброса
Глава 7. Исключения
7.1. Типы исключений
7.2. Приоритеты исключений
7.3. Таблица векторов
7.4. Входы прерываний и отложенная обработка прерываний
7.5. Исключения отказов
7.5.1. Отказы шины
7.5.2. Отказы системы управления памятью
7.5.3. Отказы программы
7.5.4. Тяжёлые отказы
7.5.5. Обработка отказов
7.6. Вызов супервизора и системных служб
Глава 8. Контроллер вложенных векторных прерываний и управление прерываниями
8.1. Общие сведения о контроллере прерываний
8.2. Базовые средства конфигурации прерываний
8.2.1. Разрешение и запрещение прерываний
8.2.2. Установка/сброс признака отложенного прерывания
8.2.3. Уровни приоритета
8.2.4. Активное состояние
8.2.6. Регистр BASEPRI
8.2.7. Конфигурационные регистры остальных исключений
8.3. Примеры инициализации прерывания
8.4. Программные прерывания
8.5. Системный таймер SYSTICK
Глава 9. Прерывания
9.1. Последовательность обработки прерываний/исключений
9.1.1. Сохранение контекста
9.1.2. Выборка вектора
9.1.3. Обновление регистров
9.2. Выход из исключения
9.3. Вложенные прерывания
9.4. «Цепочечная» обработка прерываний
9.5. «Опоздавшие» исключения
9.6. Ещё раз о значении EXCJRETURN
9.7. Задержка обработки прерывания
9.8. Отказы, связанные с прерываниями
9.8.1. Сохранение контекста
9.8.2. Восстановление контекста
9.8.3. Выборка вектора
9.8.4. Некорректный возврат
Глава 10. Программирование Cortex-МЗ
10.1. Общие сведения
10.2. Типичный процесс разработки ПО
10.3. Использование языка Си
10.3.1. Компиляция простой Си-программы в пакете RVDS
10.3.2. Компиляция простой Си-программы в пакете MDK-ARM
10.3.3. Отображённые в память регистры и язык Си
10.3.4. Встроенные функции
10.3.5. Встроенный и inline-ассемблер
10.4. Стандарт CMSIS
10.4.1. Предпосылки появления стандарта CMSIS
10.4.2. Области стандартизации
10.4.3. Структура CMSIS
10.4.4. Использование стандарта CMSIS
10.4.5. Выгода от использования CMSIS
10.5. Использование ассемблера
10.5.1. Интерфейс между ассемблером и Си
10.5.2. Программирование на ассемблере — первые шаги
10.5.3. Вывод результатов работы программы
10.5.4. Программа «Hello World»
10.5.5. Использование памяти данных
10.6. Монопольный доступ и семафоры
10.7. Метод bit-band и семафоры
10.8. Использование команд извлечения битового поля и команд табличных переходов
Глава 11. Работа с прерываниями/исключениями
11.1. Использование прерываний
11.1.1. Конфигурирование стека
11.1.2. Настройка таблицы векторов прерываний
11.1.3. Назначение приоритетов прерываний
11.1.4. Разрешение прерываний
11.2. Обработчики исключений/прерываний
11.3. Программные прерывания
11.4. Пример перемещения таблицы векторов
11.5. Использование команды SVC
11.6. Пример использования команды SVC: функции вывода текстовых сообщений
11.7. Использование команды SVC в программах на языке Си
Глава 12. Продвинутые программные возможности и поведение системы
12.1. Реализация системы с двумя раздельными стеками
12.2. Выравнивание стека на границу двойного слова
12.3. Переход в режим потока с любого уровня вложенности
12.4. Пара слов о производительности
12.5. Состояние блокировки
12.5.1. Что происходит во время блокировки?
12.5.2. Предотвращение блокировки
12.6. Регистр FAULTMASK
Глава 13. Модуль защиты памяти MPU
13.1. Общие сведения
13.2. Регистры модуля MPU
13.3. Настройка модуля MPU
13.4. Типичный процесс настройки модуля MPU
13.4.1. Пример использования запрета подобластей
Глава 14. Прочие возможности процессора Cortex-МЗ
14.1. Системный таймер SYSTICK
14.2. Управление электропитанием
14.2.1. Спящие режимы
14.2.2. Функция Sleep-On-Exit
14.2.3. Контроллер WIC
14.3. Межпроцессорный обмен
14.4. Управление сбросом
Глава 15. Архитектура системы отладки
15.1. Общие сведения о возможностях отладки
15.2. Обзор архитектуры CoreSight
15.2.1. Отладочный интерфейс процессора
15.2.2. Интерфейс хоста отладки
15.2.3. Модули DP, АР и DAP
15.2.4. Интерфейс трассировки
15.2.5. Характеристики архитектуры CoreSight
15.3. Режимы отладки
15.4. События отладки
15.5. Точки останова в процессоре Cortex-МЗ
15.6. Получение доступа к содержимому регистров при отладке
15.7. Прочие отладочные возможности ядра
Глава 16. Компоненты отладки
16.1. Общие сведения
16.1.1. Система трассировки в процессоре Cortex-МЗ
16.2. Компоненты трассировки: модуль DWT
16.3. Компоненты трассировки: модуль ITM
16.3.1. Программная трассировка с использованием модуля ITM
16.3.2. Аппаратная трассировка с использованием модулей ITM и DWT
16.3.3. Временные отметки модуля ITM
16.4. Компоненты трассировки: модуль ЕТМ
16.5. Компоненты трассировки: модуль TPIU
16.6. Модуль FPB
16.6.1. Точка останова
16.6.2. Функция Flash Patch
16.6.3. Компараторы
16.7. Порт доступа шины АНВ
16.8. Таблица ПЗУ
Глава 17. Приступая к работе с процессором Cortex-МЗ
17.1. Выбор устройства с ядром Cortex-МЗ
17.2. Средства разработки
17.2.1. Си-компиляторы и отладчики
17.2.2. Поддержка встраиваемых ОС
17.3. Различия между процессорами Cortex-МЗ ревизий 0 и 1
17.3.1. Ревизия 1 — замена модуля JTAG-DP на SWJ-DP
17.4. Различия между процессорами Cortex-МЗ ревизий 1 и 2
17.4.1. Выравнивание стека на границу двойного слова по умолчанию
17.4.2. Дополнительный регистр управления
17.4.3. Новое значение регистров идентификации
17.4.4. Возможности отладки
17.4.5. Особенности режима пониженного энергопотребления
17.5. Чем же хороша ревизия 2 процессора Cortex-МЗ?
17.6. Различия между процессорами Cortex-МЗ и Cortex-МО
17.6.1. Модель программирования
17.6.2. Исключения и контроллер NVIC
17.6.3. Набор команд
17.6.4. Особенности системы памяти
17.6.5. Возможности отладки
17.6.6. Совместимость
Глава 18. Перенос приложений с процессора ARM7 на процессор Cortex-МЗ
18.1. Общие сведения
18.2. Особенности системы
18.2.1. Карта памяти
18.2.2. Прерывания
18.2.3. Модуль MPU
18.2.4. Управление системой
18.2.5. Режимы работы
18.3. Файлы с исходным текстом на ассемблере
18.3.1. Режим Thumb
18.3.2. Состояние ARM
18.4. Файлы с исходным текстом на Си
18.5. Скомпилированные объектные файлы
18.6. Оптимизация
Глава 19. Разработка приложений для Cortex-МЗ с использованием GNU
19.1. Общие сведения
19.2. Приобретение инструментария GNU
19.3. Процесс разработки программы
19.4. Примеры
19.4.1. Пример 1: первая программа
19.4.2. Пример 2: связывание нескольких файлов
19.4.3. Пример 3: простая программа «Hello World»
19.4.4. Пример 4: данные в ОЗУ
19.4.5. Пример 5: программа на Си
19.4.6. Пример 6: перенаправление вывода в программе на Си
19.4.7. Пример 7: реализация собственной таблицы векторов
19.5. Обращения к регистрам специального назначения
19.6. Использование неподдерживаемых команд
19.7. Inline-ассемблер в компиляторе GCC
Глава 20. Использование пакета RealView MDK-ARM компании Keil
20.1. Общие сведения
20.2. Приступая к работе в ИСР µVision
20.3. Вывод сообщения «Hello World» по интерфейсу UART
20.4. Тестирование программы
20.5. Использование отладчика
20.6. Симулятор
20.7. Модификация таблицы векторов
20.8. Прерывания и стандарт CMSIS
20.9. Перевод существующих приложений на стандарт CMSIS
Глава 21. Программирование Cortex-МЗ в LabVIEW
21.1. Общие сведения
21.2. Знакомство с LabVIEW
21.2.1. Типичные области применения
21.2.2. Что нам нужно, чтобы использовать LabVIEW и ARM
21.3. Процесс разработки
21.4. Пример использования среды LabVIEW
21.4.1. Создание проекта
21.4.2. Определение входов и выходов
21.4.3. Создание программы
21.4.4. Компиляция программы и тестирование приложения
21.5. Как это работает
21.6. Дополнительные возможности LabVIEW
21.7. Перенос проекта на другие процессоры ARM
Приложение А. Набор команд Cortex-МЗ. Справочный материал
Приложение Б. 16-битные команды Thumb и версии архитектуры ARM
Приложение В. Исключения процессора Cortex-МЗ
Приложение Г. Регистры контроллера NVIC и блока управления системой
Приложение Д. Руководство по локализации ошибок в программах для Cortex-МЗ
Приложение Е. Пример сценария компоновщика для пакета Sourcery G++
Приложение Ж. Функции доступа к ядру стандарта CMSIS
Приложение 3. Соединители для подключения отладочных средств
Приложение И. Семейство микроконтроллеров Stellaris®
Список литературы
Предметный указатель