Программирование встроенных систем на С++ 17

Майа Пош

Обложка:


Содержание
Об авторе................................................................................................................10
О рецензентах ......................................................................................................11
Предисловие .........................................................................................................12
Часть I. ОСНОВЫ ПРОГРАММИРОВАНИЯ ВСТРОЕННЫХ
СИСТЕМ И РОЛЬ C++......................................................................................17
Глава 1. Что такое встроенные системы....................................................18
Разнообразие встраиваемых систем........................................................................18
Микроконтроллеры ...................................................................................................20
TMS 1000.................................................................................................................20
Intel MCS-48 ...........................................................................................................22
Intel MCS-51 ...........................................................................................................24
PIC...........................................................................................................................27
AVR..........................................................................................................................33
M68k и микроконтроллеры на основе Z80...........................................................38
ARM Cortex-M.........................................................................................................38
H8 (SuperH).............................................................................................................39
ESP8266/ESP32 .......................................................................................................39
Другие микроконтроллеры...................................................................................41
Особенности...........................................................................................................42
Одноплатный компьютер, или система на кристалле ............................................42
Особенности...........................................................................................................43
Резюме........................................................................................................................44
Глава 2. C++ как язык программирования встроенных систем .......45
Связь C++ с C ..............................................................................................................45
C++ как язык программирования встроенных систем ...........................................47
Функциональные возможности языка C++..............................................................50
Пространства имен................................................................................................50
Строгая типизация ................................................................................................51
Преобразование типов..........................................................................................52
Классы ....................................................................................................................52
Наследование.........................................................................................................55
Виртуальные базовые классы ...............................................................................56
Встроенные функции ............................................................................................57
Информация о типах во время выполнения .......................................................58
Обработка исключений.........................................................................................58
6  Содержание
Шаблоны.................................................................................................................58
Стандартная библиотека шаблонов .........................................................................59
Удобство сопровождения ..........................................................................................59
Резюме........................................................................................................................60
Глава 3. Разработка для встроенной ОС Linux и подобных
систем.......................................................................................................................61
Встроенные операционные системы .......................................................................61
Операционные системы реального времени ..........................................................64
Специализированные периферийные устройства и драйверы .............................65
Добавление часов реального времени.................................................................65
Специализированные драйверы..........................................................................67
Ограничение ресурсов ..............................................................................................68
Пример: мониторинг клубного зала ........................................................................69
Аппаратные устройства ........................................................................................69
Реализация.............................................................................................................77
Конфигурация сервиса........................................................................................101
Права доступа ......................................................................................................102
Окончательные результаты ................................................................................102
Пример: простой медиа-плеер...............................................................................103
Резюме......................................................................................................................105
Глава 4. Встроенные системы с ограниченными ресурсами...........106
Общий обзор применения малых систем..............................................................106
Пример: устройство управления лазерным резаком........................................108
Функциональная спецификация........................................................................110
Проектные требования .......................................................................................111
Варианты выбора реализации............................................................................112
Интегрированные среды разработки и рабочие среды для встроенных
систем.......................................................................................................................118
Программирование микроконтроллеров ..............................................................119
Программирование памяти и отладка устройства ...........................................120
Загрузчик..............................................................................................................124
Управление памятью...............................................................................................124
Стек и динамически распределяемая память ...................................................126
Прерывания, ESP8266 IRAM_ATTR......................................................................127
Параллельный режим выполнения ........................................................................129
Разработка для AVR с использованием Nodate......................................................130
Вводная информация о Nodate...........................................................................131
Пример: инструмент тестирования интегральной микросхемы CMOS..........132
Практическое использование.............................................................................137
Разработка для ESP8266 с использованием Sming................................................141
Разработка для микроконтроллеров ARM .............................................................142
Использование операционной системы реального времени...............................142
Резюме......................................................................................................................143
Содержание  7
Глава 5. Пример: монитор влажности почвы
с использованием протокола Wi-Fi ...........................................................145
Уход за растениями .................................................................................................145
Предлагаемое решение ...........................................................................................147
Аппаратура...............................................................................................................148
Специализированное программное обеспечение ................................................152
Настройка рабочей среды Sming ........................................................................152
Код модуля для растения (plant).........................................................................154
Компиляция и запись в ПЗУ ...............................................................................182
Первоначальное конфигурирование .................................................................183
Использование системы .....................................................................................184
Дальнейшие действия .............................................................................................184
Сложности................................................................................................................185
Резюме......................................................................................................................185
Часть II. ТЕСТИРОВАНИЕ, МОНИТОРИНГ.........................................186
Глава 6. Тестирование приложений, предназначенных
для конкретных ОС ..........................................................................................187
Почему следует избегать разработки на реальной аппаратуре ...........................187
Кросс-компиляция для одноплатных компьютеров.............................................189
Комплексный тест для сервиса управления состоянием клубного
помещения...............................................................................................................190
Имитация или реальная аппаратура..................................................................198
Тестирование с использованием Valgrind..............................................................200
Многоцелевая система сборки ...............................................................................201
Удаленное тестирование на реальной аппаратуре ...............................................210
Резюме......................................................................................................................212
Глава 7. Тестирование платформ с ограниченными ресурсами.....213
Снижение степени износа оборудования..............................................................213
Планирование проектного решения......................................................................214
Системы сборки, независимые от платформы......................................................215
Использование кросс-компиляторов.....................................................................216
Локальная отладка и отладка на микросхеме........................................................216
Пример: комплексный тест ESP8266......................................................................217
Сервер...................................................................................................................218
Узел.......................................................................................................................239
Сборка проекта ....................................................................................................265
Резюме......................................................................................................................266
Глава 8. Пример: информационно-развлекательная система
на основе ОС Linux ...........................................................................................268
Одно устройство выполняет все задачи.................................................................268
Необходимая аппаратура........................................................................................269
8  Содержание
Требования к программному обеспечению ..........................................................270
Bluetooth-источники и приемники аудио .............................................................271
Организация потока в режиме онлайн..................................................................272
Управляемый голосом пользовательский интерфейс ..........................................273
Использование сценариев ......................................................................................273
Исходный код...........................................................................................................274
Сборка проекта ........................................................................................................282
Расширение системы ..............................................................................................283
Резюме......................................................................................................................284
Глава 9. Пример: мониторинг и управление внутренним
микроклиматом в здании..............................................................................285
Растения, помещения и прочее..............................................................................285
История разработки ................................................................................................286
Функциональные модули........................................................................................288
Исходный код специализированного ПО ..............................................................288
Ядро ......................................................................................................................288
Модули..................................................................................................................289
Сервер управления и контроля...............................................................................318
Инструментальное средство администрирования ...............................................329
Система кондиционирования воздуха ..................................................................329
База данных InfluxDB для записи показаний датчиков........................................332
Вопросы обеспечения безопасности......................................................................334
Дальнейшие разработки .........................................................................................335
Резюме......................................................................................................................335
Часть III. ИНТЕГРАЦИЯ С ДРУГИМИ
ИНСТРУМЕНТАЛЬНЫМИ СРЕДСТВАМИ
И РАБОЧИМИ СРЕДАМИ...........................................................................337
Глава 10. Разработка встроенных систем с использованием Qt...338
Главное преимущество правильно выбранной рабочей среды ...........................338
Использование Qt для приложений с интерфейсом командной строки.............339
Приложения с использованием графического пользовательского
интерфейса Qt..........................................................................................................341
Qt для встроенных систем ......................................................................................344
Графические пользовательские интерфейсы с использованием таблиц
стилей.......................................................................................................................345
QML...........................................................................................................................345
3D Designer...............................................................................................................345
Пример добавления графического пользовательского интерфейса
в информационно-развлекательную систему.......................................................346
Основной файл исходного кода (main) ..............................................................347
QmlInterface .........................................................................................................347
Резюме......................................................................................................................364
Содержание  9
Глава 11. Разработка для гибридных систем SoC/FPGA...................365
Организация исключительно параллельного выполнения..................................365
Языки описания аппаратуры..................................................................................367
Архитектура ППВМ..................................................................................................368
Гибридные микросхемы FPGA/SoC ........................................................................368
Пример: простой осциллограф...............................................................................369
Аппаратура...........................................................................................................370
Код VHDL..............................................................................................................371
Код C++ .................................................................................................................376
Сборка проекта ........................................................................................................379
Резюме......................................................................................................................379
Приложение А. Эффективные практические методики....................380
Тщательно продуманные планы ............................................................................380
Работа с аппаратурой ..............................................................................................381
Огромный мир периферийных устройств.............................................................381
Изучайте свои инструментальные средства..........................................................382
Выбор асинхронных методов .................................................................................382
Изучение спецификаций ........................................................................................383
Обеспечение краткости обработчиков прерываний.............................................383
8 бит означает 8 бит.................................................................................................383
Не следует заново изобретать колесо.....................................................................384
Подумайте, прежде чем начать оптимизацию......................................................384
Требования – это основа, а не дополнение............................................................384
Документация жизненно важна .............................................................................385
Тестирование кода означает попытку нарушить его выполнение ......................386
Резюме......................................................................................................................386
Предметный указатель ...................................................................................387