Программирование встроенных систем на C++17
Покупка
Новинка
Тематика:
Программирование на C и C++
Издательство:
ДМК Пресс
Автор:
Пош Майа
Перевод:
Снастин А. В.
Год издания: 2020
Кол-во страниц: 396
Возрастное ограничение: 12+
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное профессиональное образование
ISBN: 978-5-97060-785-5
Артикул: 767471.02.99
Из этой книги вы узнаете, как создавать автономные и сетевые встроенные системы, обеспечивать их безопасность и рациональное использование памяти. Язык программирования C++ расширяет возможности сопровождения и обладает многочисленными преимуществами по сравнению с другими языками программирования, поэтому прекрасно подходит для такой разработки.
В книге описывается методика создания удобных графических интерфейсов пользователя (GUI) для встроенных систем, а также методы интеграции проверенных стратегий в конкретные проекты для достижения оптимальной производительности аппаратуры. Рассмотрены разнообразные аппаратные платформы — у вас есть возможность выбрать наилучший вариант для своего проекта.
Издание будет полезно архитекторам встроенных систем и опытным разработчикам на C++.
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Майа Пош Программирование встроенных систем на C++17
Hands-On Embedded Programming with C++17 Create versatile and robust embedded solutions for MCUs and RTOSes with modern C++ Maya Posch B I R M I N G H A M – M U M B A I
Программирование
встроенных систем на C++17
Создание универсальных и надежных встроенных
решений для микроконтроллеров и операционных
систем реального времени на современной версии
языка программирования C++
Майа Пош
Москва, 2020
УДК 004.4 ББК 32.973.202 П66 Пош М. П66 Программирование встроенных систем на C++17 / пер. с анг. А. В. Снастина. – М.: ДМК Пресс, 2020. – 394 с.: ил. ISBN 978-5-97060-785-5 Из этой книги вы узнаете, как создавать автономные и сетевые встроенные системы, обеспечивать их безопасность и рациональное использование памяти. Язык программирования C++ расширяет возможности сопровождения и обладает многочисленными преимуществами по сравнению с другими языками программирования, поэтому прекрасно подходит для такой разработки. В книге описывается методика создания удобных графических интерфейсов пользователя (GUI) для встроенных систем, а также методы интеграции проверенных стратегий в конкретные проекты для достижения оптимальной производительности аппаратуры. Рассмотрены разнообразные аппаратные платформы – у вас есть возможность выбрать наилучший вариант для своего проекта. Издание будет полезно архитекторам встроенных систем и опытным разработчикам на С++. УДК 004.4 ББК 32.973.202 Original English language edition published by Packt Publishing Ltd., UK. Copyright © 2019 Packt Publishing. Russian-language edition copyright © 2020 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-78862-930-0 (анг.) Copyright © 2019 Packt Publishing ISBN 978-5-97060-785-5 (рус.) © Оформление, издание, перевод, ДМК Пресс, 2020
Содержание Об авторе.................................................................................................................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
Об авторе Майа Пош (Maya Posch) – ведущий разработчик на языке C++, обладающий более чем 15-летним опытом практической работы. Открыв для себя сначала столь увлекательную область деятельности, как программирование, а немного позже не менее увлекательную электронику, Майа всегда проявляла живой интерес к технологиям и охотно разделяла свое страстное увлечение с другими. Сама Майа называет себя разработчиком на языке C, который со временем увлекся языками C++ и Ada. Ей нравится работать в условиях, ограничивающих объем программного кода и возможности аппаратуры до минимума, и создавать в этих условиях новые, эффективные и удобные системы. Майа также активно интересуется разработками с использованием программируемых пользователем вентильных матриц (ППВМ – FPGA), разработками в области искусственного интеллекта и исследованиями в сфере робототехники, а кроме того, обладает талантами литератора, музыканта и живописца.