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

Архитектура встраиваемых систем

Разработка защищенных и подключенных устройств с примерами кода на C
Покупка
Новинка
Артикул: 855984.01.99
Доступ онлайн
1 549 ₽
В корзину
Книга, которую вы держите в руках, продолжает серию «Книжная полка Истового Инженера», которая издается при поддержке компании YADRO. Это издание подготовлено к публикации Московским институтом электроники и математики им. А. Н. Тихонова НИУ ВШЭ совместно с «ДМК Пресс». В книге описываются принципы работы и взаимодействия различных компонентов в реальных системах. Представлен общий обзор процесса разработки встраиваемых систем; показано, как настроить среду разработки, рассматриваются структура, механизмы загрузки и управление памятью встраиваемой системы. Вы изучите программный интерфейс и драйверы устройств, узнаете, как устанавливать связь через TCP/IP, как повысить безопасность устройств интернета вещей. Наконец, вы на практике познакомитесь с многопоточными операционными системами, самостоятельно разработав планировщик, и научитесь использовать механизмы доверенного выполнения с аппаратной поддержкой. Издание предназначено для программистов и инженеров, желающих освоить область разработки встраиваемых систем.
12
19
73
137
172
228
261
Лакамера, Д. Архитектура встраиваемых систем : разработка защищенных и подключенных устройств с примерами кода на C : практическое пособие / Д. Лакамера ; пер. с англ. В. С. Яценкова ; под науч. ред. А. Ю. Романова. – Москва : ДМК Пресс, 2023. - 334 с. – ISBN 978-5-93700-206-8. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2204236 (дата обращения: 19.05.2025). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Даниэле Лакамера
Архитектура  
встраиваемых систем


Daniele Lacamera
Embedded Systems 
Architecture
Design and write software  
for embedded devices to build safe  
and connected systems
BIRMINGHAM—MUMBAI


Даниэле Лакамера
Архитектура 
встраиваемых систем
Разработка защищенных 
и подключенных устройств 
с примерами кода на C
Москва, 2023


УДК	 004.04
ББК 32.371
Л19
Лакамера Д.
Л19 	 Архитектура встраиваемых систем / пер. с англ. В. С. Яценкова; под науч. ред. 
А. Ю. Романова. – М.: ДМК Пресс, 2023. – 332 с.: ил. 
ISBN 978-5-93700-206-8
Книга, которую вы держите в руках, продолжает серию «Книжная полка Истового Инженера», которая издается при поддержке компании YADRO. Это издание 
подготовлено к публикации Московским институтом электроники и математики 
им. А. Н. Тихонова НИУ ВШЭ совместно с «ДМК Пресс». 
В книге описываются принципы работы и взаимодействия различных компонентов в реальных системах. Представлен общий обзор процесса разработки 
встраиваемых систем; показано, как настроить среду разработки, рассматриваются 
структура, механизмы загрузки и управление памятью встраиваемой системы. Вы 
изучите программный интерфейс и драйверы устройств, узнаете, как устанавливать связь через TCP/IP, как повысить безопасность устройств интернета вещей. 
Наконец, вы на практике познакомитесь с многопоточными операционными 
системами, самостоятельно разработав планировщик, и научитесь использовать 
механизмы доверенного выполнения с аппаратной поддержкой.
Издание предназначено для программистов и инженеров, желающих освоить 
область разработки встраиваемых систем.
УДК  004.04
ББК  32.371
Copyright © Packt Publishing 2023. First published in the English language under the title 
‘Embedded Systems Architecture – Second Edition – (9781803239545)’.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения 
владельцев авторских прав.
ISBN 978-1-80323-954-5 (англ.) 	
©  2023 Packt Publishing
	
©  Научное редактирование, 
НИУ ВШЭ, 2023
ISBN 978-5-93700-206-8 (рус.) 	
©  Перевод, оформление, издание,  
ДМК Пресс, 2023
Научный редактор
Романов А. Ю. – канд. техн. наук, доцент Московского института 
электроники и математики им. А. Н. Тихонова Национального 
исследовательского университета «Высшая школа экономики».


Содержание
От издательства.......................................................................................................11
Автор............................................................................................................................12
Рецензент...................................................................................................................12
Научный редактор русского перевода............................................................12
Предисловие.............................................................................................................13
Предисловие от научного редактора русского перевода........................17
Часть I. Введение в разработку встраиваемых систем..............................19
Глава 1. Встраиваемые системы с практической точки  
зрения..........................................................................................................................20
1.1. Определение предметной области.......................................................................20
1.1.1. Встраиваемые Linux-системы........................................................................21
1.1.2. 8-разрядные микроконтроллеры..................................................................22
1.1.3. Аппаратная архитектура................................................................................22
1.1.4. Типичные затруднения..................................................................................25
1.1.5. Многопоточность............................................................................................26
1.2. ОЗУ..........................................................................................................................27
1.3. Флеш-память..........................................................................................................28
1.4. Универсальный ввод/вывод (GPIO)......................................................................29
1.4.1. АЦП и ЦАП.......................................................................................................29
1.4.2. Таймеры и ШИМ.............................................................................................30
1.5. Интерфейсы и периферийные устройства...........................................................30
1.5.1. Асинхронная последовательная связь на основе UART...............................30
1.5.2. SPI....................................................................................................................31
1.5.3. I2C.....................................................................................................................32
1.5.4. USB...................................................................................................................32
1.6. Подключенные системы........................................................................................32
1.6.1. Особенности распределенных систем..........................................................34
1.7. Механизмы изоляции............................................................................................34
1.8. Базовая платформа................................................................................................35
1.8.1. Базовая архитектура ARM..............................................................................35
1.8.2. Микропроцессор Cortex-M.............................................................................36
1.9. Заключение.............................................................................................................37
Глава 2. Рабочая среда и оптимизация рабочего процесса.....................39


6    Содержание
2.1. Обзор рабочего процесса.......................................................................................40
2.1.1. Компилятор C..................................................................................................40
2.1.2. Компоновщик..................................................................................................41
2.1.3. Инструмент автоматизации сборки Make.....................................................43
2.1.4. Отладчик..........................................................................................................46
2.1.5. Цикл разработки встраиваемых систем........................................................46
2.2. Текстовый редактор или интегрированная среда?.............................................49
2.3. Инструментарий GCC............................................................................................50
2.3.1. Кросс-компилятор..........................................................................................51
2.3.2. Кто компилирует компиляторы?...................................................................53
2.3.3. Компоновка исполняемого файла.................................................................54
2.3.4. Преобразование двоичного формата............................................................58
2.4. Взаимодействие с целевым устройством.............................................................59
2.4.1. Сеанс GDB........................................................................................................62
2.5. Тестирование..........................................................................................................64
2.5.1. Функциональные тесты..................................................................................65
2.5.2. Аппаратные инструменты.............................................................................66
2.5.3. Внешнее тестирование...................................................................................67
2.5.4. Эмуляторы.......................................................................................................69
2.6. Заключение.............................................................................................................71
Часть II. Базовая архитектура встраиваемых систем.................................73
Глава 3. Шаблоны архитектуры встраиваемых систем.............................74
3.1. Управление конфигурацией проекта...................................................................74
3.1.1. Контроль версий.............................................................................................75
3.1.2. Отслеживание деятельности..........................................................................76
3.1.3. Проверка кода.................................................................................................77
3.1.4. Непрерывная интеграция..............................................................................78
3.2. Организация исходного кода................................................................................79
3.2.1. Аппаратная абстракция..................................................................................79
3.2.2. Промежуточный уровень...............................................................................80
3.2.3. Код приложения..............................................................................................81
3.3. Соображения безопасности...................................................................................82
3.3.1. Устранение уязвимостей................................................................................82
3.3.2. Применение криптографии...........................................................................83
3.3.3. Аппаратная криптография.............................................................................84
3.3.4. Запуск ненадежного кода...............................................................................84
3.4. Жизненный цикл проекта встраиваемой системы.............................................85
3.4.1. Определение этапов проекта.........................................................................86
3.4.2. Прототипирование.........................................................................................87
3.4.3. Рефакторинг....................................................................................................88
3.4.4. API и документация........................................................................................88
3.5. Заключение.............................................................................................................90
Глава 4. Процедура загрузки...............................................................................91
4.1. Технические требования.......................................................................................91
4.2. Таблица векторов прерываний.............................................................................91


Содержание    7
4.2.1. Код запуска......................................................................................................92
4.2.2. Обработчик сброса..........................................................................................94
4.2.3. Размещение стека...........................................................................................94
4.2.4. Обработчики отказов.....................................................................................95
4.3. Схема памяти.........................................................................................................96
4.4. Сборка и запуск загрузочного кода......................................................................99
4.4.1. Make-файл.......................................................................................................99
4.4.2. Запуск приложения.......................................................................................102
4.5. Загрузка в несколько этапов...............................................................................102
4.5.1. Загрузчик.......................................................................................................103
4.5.2. Сборка образа................................................................................................105
4.5.3. Отладка системы с поэтапным загрузчиком..............................................106
4.5.4. Общие библиотеки........................................................................................107
4.5.5. Удаленное обновление прошивки...............................................................109
4.5.6. Безопасная загрузка.....................................................................................109
4.6. Заключение...........................................................................................................110
Глава 5. Управление памятью...........................................................................111
5.1. Технические требования.....................................................................................111
5.2. Отображение памяти...........................................................................................111
5.2.1. Модель памяти и адресное пространство...................................................112
5.2.2. Область исполняемого кода.........................................................................113
5.2.3. Области оперативной памяти......................................................................114
5.2.4. Области доступа к периферийным устройствам........................................115
5.2.5. Системная область........................................................................................115
5.2.6. Порядок транзакций памяти.......................................................................115
5.3. Стек выполнения.................................................................................................116
5.3.1. Размещение стека.........................................................................................117
5.3.2. Переполнение стека......................................................................................119
5.3.3. Закрашивание стека.....................................................................................120
5.4. Управление динамическим выделением памяти..............................................121
5.4.1. Пользовательская реализация.....................................................................123
5.4.2. Использование библиотеки newlib..............................................................125
5.4.3. Ограничение кучи.........................................................................................127
5.4.4. Несколько пулов памяти..............................................................................128
5.4.5. Распространенные ошибки использования динамической  
памяти.....................................................................................................................130
5.5. Блок защиты памяти............................................................................................131
5.5.1. Регистры конфигурации MPU......................................................................132
5.5.2. Программирование MPU..............................................................................132
5.6. Заключение...........................................................................................................136
Часть III. Аппаратные модули и интерфейс связи.....................................137
Глава 6. Периферийные устройства общего назначения.......................138
6.1. Технические требования.....................................................................................139
6.1.1. Побитовые операции....................................................................................139
6.2. Контроллер прерываний.....................................................................................139
6.2.1. Настройка прерываний от периферийных устройств...............................140


8    Содержание
6.3. Системное время..................................................................................................142
6.3.1. Настройка состояний ожидания флеш-памяти..........................................142
6.3.2. Настройка источника тактовых импульсов................................................143
6.3.3. Распределение тактовых импульсов...........................................................147
6.3.4. Включение SysTick........................................................................................148
6.4. Таймеры общего назначения..............................................................................150
6.5. Линии ввода/вывода общего назначения (GPIO)..............................................153
6.5.1. Конфигурация выводов................................................................................154
6.5.2. Цифровой выход...........................................................................................155
6.5.3. Широтно-импульсная модуляция...............................................................157
6.5.4. Цифровой вход..............................................................................................161
6.5.5. Ввод, управляемый прерыванием...............................................................162
6.5.6. Аналоговый вход...........................................................................................164
6.6. Сторожевой таймер..............................................................................................168
6.7. Заключение...........................................................................................................171
Глава 7. Интерфейсы локальной шины..........................................................172
7.1. Технические требования......................................................................................172
7.2. Принцип работы последовательного канала.....................................................173
7.2.1. Синхронизация тактов и символов.............................................................173
7.2.2. Физические линии шины.............................................................................174
7.2.3. Программирование периферийных устройств...........................................176
7.3. Асинхронная последовательная шина на основе UART....................................176
7.3.1. Описание протокола.....................................................................................177
7.3.2. Программирование контроллера.................................................................178
7.3.3. Hello world!.....................................................................................................181
7.3.4. Функция printf библиотеки newlib.............................................................182
7.3.5. Получение данных........................................................................................183
7.3.6. Ввод/вывод с использованием прерываний...............................................184
7.4. Шина SPI................................................................................................................186
7.4.1. Описание протокола.....................................................................................186
7.4.2. Программирование приемопередатчика....................................................187
7.4.3. Транзакции по шине SPI...............................................................................190
7.4.4. Передача данных по шине SPI на основе прерываний..............................193
7.5. Шина I2C................................................................................................................194
7.5.1. Описание протокола.....................................................................................195
7.5.2. Затягивание тактов.......................................................................................197
7.5.3. Несколько ведущих на одной шине.............................................................198
7.5.4. Программирование контроллера.................................................................199
7.5.5. Обработка прерываний................................................................................202
7.6. Заключение...........................................................................................................202
Глава 8. Управление питанием и энергосбережение...............................204
8.1. Технические требования.....................................................................................205
8.2. Конфигурация системы.......................................................................................205
8.2.1. Аппаратная часть системы...........................................................................206
8.2.2. Управление тактированием.........................................................................206
8.2.3. Управление напряжением............................................................................209


Содержание    9
8.3. Режимы работы с низким энергопотреблением...............................................209
8.3.1. Конфигурация глубокого сна.......................................................................211
8.3.2. Режим остановки..........................................................................................213
8.3.3. Режим ожидания...........................................................................................216
8.3.4. Интервалы пробуждения.............................................................................220
8.4. Измерение мощности..........................................................................................221
8.4.1. Отладочные платы........................................................................................221
8.5. Проектирование встраиваемых приложений с низким  
энергопотреблением..................................................................................................222
8.5.1. Замена циклов ожидания спящим режимом..............................................222
8.5.2. Глубокий сон во время длительных периодов бездействия......................224
8.5.3. Выбор тактовой частоты..............................................................................224
8.5.4. Переключение профилей питания..............................................................225
8.6. Заключение...........................................................................................................226
Глава 9. Распределенные системы и архитектура интернета  
вещей.........................................................................................................................228
9.1. Технические требования.....................................................................................229
9.2. Сетевые интерфейсы...........................................................................................229
9.2.1. MAC................................................................................................................230
Ethernet...............................................................................................................231
Wi-Fi....................................................................................................................231
Низкоскоростные беспроводные персональные сети (LR-WPAN)..................232
Промышленные расширения канального уровня LR-WPAN..........................233
6LoWPAN.............................................................................................................233
Bluetooth.............................................................................................................234
Сети мобильной связи.......................................................................................235
Сети дальней связи с низким энергопотреблением (LPWAN)........................235
9.2.2. Выбор подходящих сетевых интерфейсов..................................................237
9.3. Интернет-протоколы...........................................................................................238
9.3.1. Частные реализации стандартных протоколов..........................................239
9.3.2. Стек TCP/IP....................................................................................................239
9.3.4. Драйверы сетевых устройств.......................................................................241
9.3.5. Выполнение стека TCP/IP.............................................................................243
9.3.6. Использование сокетов................................................................................246
9.3.7. Протоколы без установления соединения..................................................248
9.3.8. Mesh-сети и динамическая маршрутизация..............................................248
9.4. TLS.........................................................................................................................251
9.4.1. Защита связи через сокет.............................................................................253
9.5. Протоколы приложений......................................................................................256
9.5.1. Протоколы сообщений.................................................................................257
9.5.2. Архитектурный шаблон REST......................................................................258
9.5.3. Распределенные системы – единые точки отказа......................................259
9.6. Заключение...........................................................................................................259
Часть IV. Многопоточность.................................................................................261
Глава 10. Параллельные задачи и планирование.....................................262


10    Содержание
10.1. Технические требования...................................................................................263
10.2. Управление задачами........................................................................................263
10.2.1. Блок задач....................................................................................................264
10.2.2. Переключение контекста...........................................................................266
10.2.3. Создание задач............................................................................................268
10.3. Реализация планировщика...............................................................................271
10.3.1. Вызовы супервайзера.................................................................................271
10.3.2. Планировщик совместного выполнения..................................................273
10.3.3. Параллелизм и кванты времени................................................................274
10.3.4. Блокировка задач........................................................................................275
10.3.5. Ожидание ресурсов.....................................................................................279
10.3.6. Планирование в реальном времени..........................................................282
10.4. Синхронизация..................................................................................................286
10.4.1. Семафоры....................................................................................................287
10.4.2. Мьютексы....................................................................................................289
10.4.3. Инверсия приоритета.................................................................................290
10.5. Разделение системных ресурсов.......................................................................291
10.5.1. Уровни привилегий....................................................................................291
10.5.2. Сегментация памяти..................................................................................293
10.5.3. Системные вызовы.....................................................................................295
10.6. Встраиваемые операционные системы............................................................299
10.6.1. Выбор операционной системы..................................................................299
10.6.2. FreeRTOS......................................................................................................300
10.6.3. Riot...............................................................................................................303
10.7. Заключение.........................................................................................................306
Глава 11. Доверенная среда выполнения....................................................307
11.1. Технические требования...................................................................................308
11.2. Песочница...........................................................................................................308
11.3. TrustZone-M........................................................................................................310
11.3.1. Тестовая платформа...................................................................................310
11.3.2. Защищенные и незащищенные области выполнения.............................312
11.4. Разделение системных ресурсов.......................................................................313
11.4.1. Атрибуты безопасности и области памяти...............................................314
11.4.2. Флеш-память и водяные знаки..................................................................317
11.4.3. Конфигурация GTZC и защита SRAM на основе блоков...........................318
11.4.4. Настройка безопасного доступа к периферийным устройствам............319
11.5. Сборка и запуск примера..................................................................................321
11.5.1. Включение TrustZone-M.............................................................................321
11.5.2. Безопасная точка входа в приложение......................................................321
11.5.3. Компиляция и компоновка приложений защищенной среды................322
11.5.4. Компиляция и компоновка приложений незащищенной среды............324
11.5.5. Переходы между средами выполнения.....................................................324
11.6. Заключение.........................................................................................................328
Предметный указатель........................................................................................329


Доступ онлайн
1 549 ₽
В корзину