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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

В книге описываются принципы работы и взаимодействия различных компонентов в реальных системах. Представлен общий обзор процесса разработки встраиваемых систем; показано, как настроить среду разработки, рассматриваются структура, механизмы загрузки и управление памятью встраиваемой системы. Вы изучите программный интерфейс и драйверы устройств, узнаете, как устанавливать связь через TCP/IP, как повысить безопасность устройств интернета вещей. Наконец, вы на практике познакомитесь с многопоточными операционными системами, самостоятельно разработав планировщик, и научитесь использовать механизмы доверенного выполнения с аппаратной поддержкой.

Author(s): Даниэле Лакамера
Publisher: ДМК Пресс
Year: 2023

Language: Russian
Pages: 332
City: М.

Содержание
От издательства
Автор
Рецензент
Научный редактор русского перевода
Предисловие
Для кого эта книга
Краткое содержание книги
Как получить максимальную пользу от этой книги
Используемые соглашения
Предисловие от научного редактора русского перевода
Часть I. Введение в разработку встраиваемых систем
Глава 1. Встраиваемые системы с практической точки зрения
1.1. Определение предметной области
1.1.1. Встраиваемые Linux-системы
1.1.2. 8-разрядные микроконтроллеры
1.1.3. Аппаратная архитектура
1.1.4. Типичные затруднения
1.1.5. Многопоточность
1.2. ОЗУ
1.3. Флеш-память
1.4. Универсальный ввод/вывод (GPIO)
1.4.1. АЦП и ЦАП
1.4.2. Таймеры и ШИМ
1.5. Интерфейсы и периферийные устройства
1.5.1. Асинхронная последовательная связь на основе UART
1.5.2. SPI
1.5.3. I2C
1.5.4. USB
1.6. Подключенные системы
1.6.1. Особенности распределенных систем
1.7. Механизмы изоляции
1.8. Базовая платформа
1.8.1. Базовая архитектура ARM
1.8.2. Микропроцессор Cortex-M
1.9. Заключение
Глава 2. Рабочая среда и оптимизация рабочего процесса
2.1. Обзор рабочего процесса
2.1.1. Компилятор C
2.1.2. Компоновщик
2.1.3. Инструмент автоматизации сборки Make
2.1.4. Отладчик
2.1.5. Цикл разработки встраиваемых систем
2.2. Текстовый редактор или интегрированная среда?
2.3. Инструментарий GCC
2.3.1. Кросс-компилятор
2.3.2. Кто компилирует компиляторы?
2.3.3. Компоновка исполняемого файла
2.3.4. Преобразование двоичного формата
2.4. Взаимодействие с целевым устройством
2.4.1. Сеанс GDB
2.5. Тестирование
2.5.1. Функциональные тесты
2.5.2. Аппаратные инструменты
2.5.3. Внешнее тестирование
2.5.4. Эмуляторы
2.6. Заключение
Часть II. Базовая архитектура встраиваемых систем
Глава 3. Шаблоны архитектуры встраиваемых систем
3.1. Управление конфигурацией проекта
3.1.1. Контроль версий
3.1.2. Отслеживание деятельности
3.1.3. Проверка кода
3.1.4. Непрерывная интеграция
3.2. Организация исходного кода
3.2.1. Аппаратная абстракция
3.2.2. Промежуточный уровень
3.2.3. Код приложения
3.3. Соображения безопасности
3.3.1. Устранение уязвимостей
3.3.2. Применение криптографии
3.3.3. Аппаратная криптография
3.3.4. Запуск ненадежного кода
3.4. Жизненный цикл проекта встраиваемой системы
3.4.1. Определение этапов проекта
3.4.2. Прототипирование
3.4.3. Рефакторинг
3.4.4. API и документация
3.5. Заключение
Глава 4. Процедура загрузки
4.1. Технические требования
4.2. Таблица векторов прерываний
4.2.1. Код запуска
4.2.2. Обработчик сброса
4.2.3. Размещение стека
4.2.4. Обработчики отказов
4.3. Схема памяти
4.4. Сборка и запуск загрузочного кода
4.4.1. Make-файл
4.4.2. Запуск приложения
4.5. Загрузка в несколько этапов
4.5.1. Загрузчик
4.5.2. Сборка образа
4.5.3. Отладка системы с поэтапным загрузчиком
4.5.4. Общие библиотеки
4.5.5. Удаленное обновление прошивки
4.5.6. Безопасная загрузка
4.6. Заключение
Глава 5. Управление памятью
5.1. Технические требования
5.2. Отображение памяти
5.2.1. Модель памяти и адресное пространство
5.2.2. Область исполняемого кода
5.2.3. Области оперативной памяти
5.2.4. Области доступа к периферийным устройствам
5.2.5. Системная область
5.2.6. Порядок транзакций памяти
5.3. Стек выполнения
5.3.1. Размещение стека
5.3.2. Переполнение стека
5.3.3. Закрашивание стека
5.4. Управление динамическим выделением памяти
5.4.1. Пользовательская реализация
5.4.2. Использование библиотеки newlib
5.4.3. Ограничение кучи
5.4.4. Несколько пулов памяти
5.4.5. Распространенные ошибки использования динамической памяти
5.5. Блок защиты памяти
5.5.1. Регистры конфигурации MPU
5.5.2. Программирование MPU
5.6. Заключение
Часть III. Аппаратные модули и интерфейс связи
Глава 6. Периферийные устройства общего назначения
6.1. Технические требования
6.1.1. Побитовые операции
6.2. Контроллер прерываний
6.2.1. Настройка прерываний от периферийных устройств
6.3. Системное время
6.3.1. Настройка состояний ожидания флеш-памяти
6.3.2. Настройка источника тактовых импульсов
6.3.3. Распределение тактовых импульсов
6.3.4. Включение SysTick
6.4. Таймеры общего назначения
6.5. Линии ввода/вывода общего назначения (GPIO)
6.5.1. Конфигурация выводов
6.5.2. Цифровой выход
6.5.3. Широтно-импульсная модуляция
6.5.4. Цифровой вход
6.5.5. Ввод, управляемый прерыванием
6.5.6. Аналоговый вход
6.6. Сторожевой таймер
6.7. Заключение
Глава 7. Интерфейсы локальной шины
7.1. Технические требования
7.2. Принцип работы последовательного канала
7.2.1. Синхронизация тактов и символов
7.2.2. Физические линии шины
7.2.3. Программирование периферийных устройств
7.3. Асинхронная последовательная шина на основе UART
7.3.1. Описание протокола
7.3.2. Программирование контроллера
7.3.3. Hello world!
7.3.4. Функция printf библиотеки newlib
7.3.5. Получение данных
7.3.6. Ввод/вывод с использованием прерываний
7.4. Шина SPI
7.4.1. Описание протокола
7.4.2. Программирование приемопередатчика
7.4.3. Транзакции по шине SPI
7.4.4. Передача данных по шине SPI на основе прерываний
7.5. Шина I2C
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.3. Режимы работы с низким энергопотреблением
8.3.1. Конфигурация глубокого сна
8.3.2. Режим остановки
8.3.3. Режим ожидания
8.3.4. Интервалы пробуждения
8.4. Измерение мощности
8.4.1. Отладочные платы
8.5. Проектирование встраиваемых приложений с низким энергопотреблением
8.5.1. Замена циклов ожидания спящим режимом
8.5.2. Глубокий сон во время длительных периодов бездействия
8.5.3. Выбор тактовой частоты
8.5.4. Переключение профилей питания
8.6. Заключение
Глава 9. Распределенные системы и архитектура интернета вещей
9.1. Технические требования
9.2. Сетевые интерфейсы
9.2.1. MAC
Ethernet
Wi-Fi
Низкоскоростные беспроводные персональные сети (LR-WPAN)
Промышленные расширения канального уровня LR-WPAN
6LoWPAN
Bluetooth
Сети мобильной связи
Сети дальней связи с низким энергопотреблением (LPWAN)
9.2.2. Выбор подходящих сетевых интерфейсов
9.3. Интернет-протоколы
9.3.1. Частные реализации стандартных протоколов
9.3.2. Стек TCP/IP
9.3.4. Драйверы сетевых устройств
9.3.5. Выполнение стека TCP/IP
9.3.6. Использование сокетов
9.3.7. Протоколы без установления соединения
9.3.8. Mesh-сети и динамическая маршрутизация
9.4. TLS
9.4.1. Защита связи через сокет
9.5. Протоколы приложений
9.5.1. Протоколы сообщений
9.5.2. Архитектурный шаблон REST
9.5.3. Распределенные системы – единые точки отказа
9.6. Заключение
Часть IV. Многопоточность
Глава 10. Параллельные задачи и планирование
10.1. Технические требования
10.2. Управление задачами
10.2.1. Блок задач
10.2.2. Переключение контекста
10.2.3. Создание задач
10.3. Реализация планировщика
10.3.1. Вызовы супервайзера
10.3.2. Планировщик совместного выполнения
10.3.3. Параллелизм и кванты времени
10.3.4. Блокировка задач
10.3.5. Ожидание ресурсов
10.3.6. Планирование в реальном времени
10.4. Синхронизация
10.4.1. Семафоры
10.4.2. Мьютексы
10.4.3. Инверсия приоритета
10.5. Разделение системных ресурсов
10.5.1. Уровни привилегий
10.5.2. Сегментация памяти
10.5.3. Системные вызовы
10.6. Встраиваемые операционные системы
10.6.1. Выбор операционной системы
10.6.2. FreeRTOS
10.6.3. Riot
10.7. Заключение
Глава 11. Доверенная среда выполнения
11.1. Технические требования
11.2. Песочница
11.3. TrustZone-M
11.3.1. Тестовая платформа
11.3.2. Защищенные и незащищенные области выполнения
11.4. Разделение системных ресурсов
11.4.1. Атрибуты безопасности и области памяти
11.4.2. Флеш-память и водяные знаки
11.4.3. Конфигурация GTZC и защита SRAM на основе блоков
11.4.4. Настройка безопасного доступа к периферийным устройствам
11.5. Сборка и запуск примера
11.5.1. Включение TrustZone-M
11.5.2. Безопасная точка входа в приложение
11.5.3. Компиляция и компоновка приложений защищенной среды
11.5.4. Компиляция и компоновка приложений незащищенной среды
11.5.5. Переходы между средами выполнения
11.6. Заключение
Предметный указатель