Программирование встроенных систем на С++ 17
Покупка
Тематика:
Программирование на C и C++
Издательство:
ДМК Пресс
Автор:
Пош Майа
Перевод:
Снастина А. В.
Год издания: 2020
Кол-во страниц: 394
Дополнительно
Вид издания:
Монография
Уровень образования:
ВО - Магистратура
ISBN: 978-5-97060-785-5
Артикул: 739795.01.99
Из этой книги вы узнаете, как создавать автономные и сетевые встроенные системы, обеспечивать их безопасность и рациональное использование памяти. Язык программирования C++ расширяет возможности сопровождения и обладает многочисленными преимуществами по сравнению с другими языками программирования, поэтому прекрасно подходит для такой разработки. В книге описывается методика создания удобных графических интерфейсов пользователя (GUI) для встроенных систем, а также методы интеграции проверенных стратегий в конкретные проекты для достижения оптимальной производительности аппаратуры. Рассмотрены разнообразные аппаратные платформы - у вас есть возможность выбрать наилучший вариант для своего проекта.
Издание будет полезно архитекторам встроенных систем и опытным разработчикам на C++.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
- 09.04.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Майа Пош Программирование встроенных систем на 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
Содержание Шаблоны .................................................................................................................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
Содержание Требования к программному обеспечению ..........................................................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), разработками в области искусственного интеллекта и исследованиями в сфере робототехники, а кроме того, обладает талантами литератора, музыканта и живописца.