Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 637335)
Контекстум
Электро-2024

Встраиваемые системы на основе Linux (4000,00 руб.)

0   0
Первый авторСиммондс
ИздательствоМ.: ДМК Пресс
Страниц362
ID794819
АннотацияВ книге подробно рассказано о том, как сконструировать встраиваемую Linux-систему из свободных программ с открытым исходным кодом, получив в результате надежный и эффективный продукт. Рассмотрены наборы инструментов, начальные загрузчики, ядро Linux и конфигурирование корневой файловой системы. Показано, как работать с системами сборки Buildroot и Yocto Project. Описаны процессы, потоки и управление памятью. Не обделены вниманием вопросы отладки и оптимизации платформы, а также выполнение приложений реального времени. Издание рассчитано на разработчиков программного обеспечения на платформе Linux и системных программистов, уже знакомых со встраиваемыми системами. Предполагаются знание основ языка C и опыт системного программирования.
ISBN978-5-97060-483-0
УДК004.453/.453: 004.451.9Linux
ББК32.972.1
Симмондс, К. Встраиваемые системы на основе Linux / К. Симмондс .— Москва : ДМК Пресс, 2017 .— 362 с. — ISBN 978-5-97060-483-0 .— URL: https://rucont.ru/efd/794819 (дата обращения: 02.06.2024)

Предпросмотр (выдержки из произведения)

Встраиваемые_системы_на_основе_Linux.pdf
Стр.5
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Стр.14
Стр.15
Встраиваемые_системы_на_основе_Linux.pdf
УДК 004.453/.453: 004.451.9Linux ББК 32.972.1 С37 С37 Встраиваемые системы на основе Linux / пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2017. – 360 с.: ил. Симмондс К. ISBN 978-5-97060-483-0 В книге подробно рассказано о том, как сконструировать встраиваемую Linux-систему из свободных программ с открытым исходным кодом, получив в результате надежный и эффективный продукт. Рассмотрены наборы инструментов, начальные загрузчики, ядро Linux и конфигурирование корневой файловой системы. Показано, как работать с системами сборки Buildroot и Yocto Project. Описаны процессы, потоки и управление памятью. Не обделены вниманием вопросы отладки и оптимизации платформы, а также выполнение приложений реального времени. Издание рассчитано на разработчиков программного обеспечения на платформе Linux и системных программистов, уже знакомых со встраиваемыми системами. Предполагаются знание основ языка C и опыт системного программирования. УДК 004.453/.453: 004.451.9Linux ББК 32.972.1 Copyright © Packt Publishing 2016. First published in the English language under the title ‘Mastering Embedded Linux Programming (9781784392536)’. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-78439-253-6 (анг.) Copyright © 2015 Packt Publishing ISBN 978-5-97060-483-0 (рус.) © Оформление, издание, перевод, ДМК Пресс, 2017
Стр.5
Содержание Предисловие..................................................................15 Об.авторе.......................................................................16 О.рецензентах................................................................17 Вступление. ...................................................................19 Глава.1..Приступая.к.работе. .............................................25 Выбор правильной операционной системы ................................................................................26 Игроки .....................................................................................................................................................27 Жизненный цикл проекта .................................................................................................................28 Четыре составные части встраиваемой Linux-системы ....................................................29 Программное обеспечение с открытым исходным кодом .....................................................30 Лицензии ...........................................................................................................................................30 Оборудование для встраиваемых Linux-систем .......................................................................31 Используемое оборудование............................................................................................................33 Плата BeagleBone Black ...............................................................................................................33 QEMU .................................................................................................................................................34 Используемое программное обеспечение ...................................................................................35 Резюме .....................................................................................................................................................35 Глава.2..О.наборах.инструментов.......................................36 Что такое набор инструментов? ......................................................................................................36 Типы наборов инструментов – платформенные и перекрестные .......................................38 Архитектура процессора ..............................................................................................................39 Выбор библиотеки C ...........................................................................................................................40 Получение набора инструментов ...................................................................................................42 Сборка набора инструментов с помощью crosstool-NG ....................................................43 Установка crosstool-NG .................................................................................................................43 Выбор набора инструментов .......................................................................................................44 Анатомия набора инструментов .....................................................................................................46 Получение информации о кросс-компиляторе ....................................................................46 sysroot, библиотека и файлы-заголовки .................................................................................48 Другие элементы набора инструментов .......................................................................................48 Компоненты библиотеки C .........................................................................................................49 Статическая и динамическая компоновка с библиотеками ..................................................50 Статические библиотеки ..............................................................................................................50 Разделяемые библиотеки .............................................................................................................51
Стр.6
6  Содержание Искусство кросс-компиляции .........................................................................................................53 Простые make-файлы ....................................................................................................................54 Autotools .............................................................................................................................................54 Конфигурирование пакета ..........................................................................................................57 Проблемы кросс-компиляции .........................................................................................................58 Резюме .....................................................................................................................................................58 Глава.3..Все.о.начальных.загрузчиках. ................................60 Что делает начальный загрузчик? ..................................................................................................60 Последовательность начальной загрузки ....................................................................................61 Этап 1: код в ПЗУ ...........................................................................................................................62 Этап 2: SPL ........................................................................................................................................63 Этап 3: TPL .......................................................................................................................................63 Загрузка из UEFI-прошивки ...........................................................................................................64 Переход от начального загрузчика к ядру ...................................................................................65 Введение в деревья устройств .........................................................................................................66 Основные сведения о деревьях устройств ..................................................................................66 Свойство reg .....................................................................................................................................67 Указатели на описатели и прерывания ...................................................................................68 Включаемые файлы деревьев устройств ................................................................................69 Компиляция дерева устройств ...................................................................................................71 Выбор начального загрузчика .........................................................................................................71 U-Boot ......................................................................................................................................................72 Сборка U-Boot .................................................................................................................................72 Установка U-Boot ...........................................................................................................................73 Работа с U-Boot ...............................................................................................................................74 Загрузка Linux .................................................................................................................................78 Kconfig и U-Boot .............................................................................................................................79 Сборка и тестирование .................................................................................................................82 Режим Сапсан ..................................................................................................................................82 Barebox .....................................................................................................................................................82 Получение Barebox .........................................................................................................................83 Сборка Barebox ................................................................................................................................83 Резюме .....................................................................................................................................................84 Глава.4..Портирование.и.конфигурирование.ядра.................86 Что делает ядро?...................................................................................................................................86 Выбор ядра .............................................................................................................................................88 Цикл разработки ядра ...................................................................................................................88 Стабильные и долгосрочные версии ........................................................................................89 Поддержка со стороны производителя ...................................................................................90 Сборка ядра ............................................................................................................................................90 Получение исходного кода ..........................................................................................................90
Стр.7
Содержание  7 О конфигурировании ядра ..........................................................................................................91 Использование переменной LOCALVERSION для идентификации ядра .................95 Модули ядра .....................................................................................................................................96 Компиляция ...........................................................................................................................................96 Компиляция образа ядра ..............................................................................................................97 Компиляция деревьев устройств ..............................................................................................99 Компиляция модулей ....................................................................................................................99 Удаление артефактов сборки ......................................................................................................99 Загрузка ядра .......................................................................................................................................100 BeagleBone Black ...........................................................................................................................100 QEMU ...............................................................................................................................................100 Паника ядра ....................................................................................................................................101 Подготовка пользовательского пространства ....................................................................102 Сообщения ядра ............................................................................................................................102 Командная строка ядра ...............................................................................................................103 Портирование Linux на новую плату ..........................................................................................104 С деревом устройств ....................................................................................................................104 Без дерева устройств ...................................................................................................................105 Дополнительная литература ..........................................................................................................107 Резюме ...................................................................................................................................................107 Глава.5..Построение.корневой.файловой.системы..............109 Что должно быть в корневой файловой системе? ..................................................................109 Структура каталогов ....................................................................................................................111 Каталог технологической подготовки ...................................................................................111 Программы в корневой файловой системе ...............................................................................114 Программа init ...............................................................................................................................114 Оболочка ..........................................................................................................................................115 Утилиты ............................................................................................................................................115 BusyBox спешит на помощь! .....................................................................................................115 ToyBox – альтернатива BusyBox .............................................................................................117 Библиотеки для корневой файловой системы ........................................................................118 Уменьшение размера путем удаления таблицы символов .............................................119 Узлы устройств ...................................................................................................................................119 Файловые системы proc и sysfs .....................................................................................................120 Монтирование файловых систем ............................................................................................121 Модули ядра ........................................................................................................................................122 Перенос корневой файловой системы на целевое устройство ...........................................122 Создание загрузочного ram-диска ................................................................................................123 Автономный ram-диск .................................................................................................................123 Загрузка ram-диска ......................................................................................................................124 Встраивание ram-диска в формате cpio в образ ядра .......................................................125 Старый формат initrd ..................................................................................................................126
Стр.8
8  Содержание Программа init .....................................................................................................................................126 Конфигурирование учетных записей пользователей ............................................................127 Добавление учетных записей пользователей в корневую файловую систему ........129 Запуск процесса-демона ..................................................................................................................129 Улучшенный способ управления узлами устройств ..............................................................129 Пример использования devtmpfs ..................................................................................................130 Пример использования mdev ...................................................................................................130 А так ли плохи статические узлы устройств? .....................................................................131 Конфигурирование сети ..................................................................................................................131 Сетевые компоненты для glibc .................................................................................................132 Создание образов файловой системы с помощью таблиц устройств ..............................133 Копирование корневой файловой системы на карту SD ................................................134 Монтирование корневой файловой системы по NFS ...........................................................134 Тестирование в эмуляторе QEMU ..........................................................................................135 Тестирование с платой BeagleBone Black .............................................................................136 Проблемы с правами доступа к файлам ...............................................................................136 Загрузка ядра по протоколу TFTP ..............................................................................................137 Дополнительная литература ..........................................................................................................138 Резюме ...................................................................................................................................................138 Глава.6..Выбор.системы.сборки.......................................139 Довольно самопальных встраиваемых систем ........................................................................139 Системы сборки ..................................................................................................................................139 Форматы пакетов и менеджеры пакетов ...................................................................................141 Buildroot ................................................................................................................................................141 История ............................................................................................................................................142 Стабильные версии и поддержка ............................................................................................142 Установка .........................................................................................................................................142 Конфигурирование ......................................................................................................................143 Выполнение ....................................................................................................................................144 Создание специального BSP-пакета ......................................................................................145 Добавление своего кода ..............................................................................................................146 Соответствие лицензионным требованиям .........................................................................148 Yocto Project .........................................................................................................................................149 История ............................................................................................................................................149 Стабильные версии и поддержка ............................................................................................150 Установка Yocto Project...............................................................................................................151 Конфигурирование ......................................................................................................................151 Сборка ...............................................................................................................................................152 Выполнение ....................................................................................................................................153 Слои ...................................................................................................................................................154 Настройка образов с помощью local.conf .............................................................................159 Рецепт создания образа ..............................................................................................................159
Стр.9
Содержание  9 Создание SDK ................................................................................................................................160 Контроль лицензий ......................................................................................................................162 Дополнительная литература ..........................................................................................................162 Резюме ...................................................................................................................................................162 Глава.7..Выбор.стратегии.хранения..................................164 Типы запоминающих устройств ...................................................................................................164 Флэш-память типа NOR ............................................................................................................165 NAND-память.................................................................................................................................166 Управляемая флэш-память .......................................................................................................168 Доступ к флэш-памяти из начального загрузчика .................................................................169 U-Boot и флэш-память типа NOR ..........................................................................................170 U-Boot и флэш-память типа NAND .......................................................................................170 U-Boot и карты MMC, SD и eMMC .......................................................................................170 Доступ к флэш-памяти из Linux ...................................................................................................170 Устройства на основе технологии памяти ............................................................................171 Драйвер блочного устройства MMC .....................................................................................176 Файловые системы для флэш-памяти ........................................................................................177 Уровень флэш-преобразования ...............................................................................................177 Файловые системы для флэш-памяти типа NOR и NAND.................................................178 JFFS2 .................................................................................................................................................178 YAFFS2 .............................................................................................................................................181 UBI и UBIFS ..................................................................................................................................182 Файловые системы для управляемой флэш-памяти .............................................................186 Flashbench ........................................................................................................................................187 Discard и TRIM ..............................................................................................................................188 Ext4 ....................................................................................................................................................189 F2FS ...................................................................................................................................................190 FAT16/32 ..........................................................................................................................................190 Сжатые неизменяемые файловые системы ..............................................................................191 squashfs ..............................................................................................................................................191 Временные файловые системы .....................................................................................................192 Превращение корневой файловой системы в неизменяемую ............................................193 Варианты выбора файловой системы .........................................................................................194 Обновление в месте эксплуатации ..............................................................................................194 Степень детализации: файл, пакет или образ? ...................................................................195 Атомарное обновление образа ..................................................................................................196 Дополнительная литература ..........................................................................................................197 Резюме ...................................................................................................................................................198 Глава.8..Введение.в.драйверы.устройств...........................199 Роль драйверов устройств ..............................................................................................................199 Символьные устройства ..................................................................................................................200
Стр.10
10  Содержание Блочные устройства ..........................................................................................................................202 Сетевые устройства ...........................................................................................................................203 Получение информации о драйверах на этапе выполнения ...............................................205 Получение информации из sysfs..............................................................................................207 Устройства: /sys/devices .............................................................................................................207 Драйверы: /sys/class ....................................................................................................................208 Блочные устройства: /sys/block ..............................................................................................209 Поиск подходящего драйвера устройства .................................................................................209 Драйверы устройств в пользовательском пространстве ......................................................210 GPIO..................................................................................................................................................210 Светодиоды .....................................................................................................................................213 Шина I2C .........................................................................................................................................214 Шина SPI .........................................................................................................................................216 Написание драйвера устройства ...................................................................................................216 Проектирование интерфейса символьного устройства ..................................................216 Анатомия драйвера устройства ................................................................................................218 Загрузка модулей ядра .....................................................................................................................222 Определение конфигурации оборудования .............................................................................222 Деревья устройств ........................................................................................................................223 Платформенные данные .............................................................................................................223 Связывание оборудования с драйверами .............................................................................224 Дополнительная литература ..........................................................................................................226 Резюме ...................................................................................................................................................226 Глава.9..Инициализация.системы.–.программа.init..............228 После того как ядро загрузилось ..................................................................................................228 Введение в программы init .............................................................................................................229 BusyBox init ..........................................................................................................................................229 Скрипты инициализации в Buildroot ....................................................................................231 System V init .........................................................................................................................................231 inittab .................................................................................................................................................233 Скрипты init.d ................................................................................................................................235 Добавление нового демона ........................................................................................................235 Запуск и остановка служб .........................................................................................................236 systemd ...................................................................................................................................................237 Сборка systemd в Yocto Project и Buildroot .........................................................................237 Как systemd загружает систему................................................................................................239 Добавление своей службы ..............................................................................................................240 Добавление сторожевого таймера ...........................................................................................241 Применение во встраиваемых Linux-системах ..................................................................242 Дополнительная литература ..........................................................................................................243 Резюме ...................................................................................................................................................243
Стр.11
Содержание  11 Глава.10..Процессы.и.потоки...........................................244 Процесс или поток? ...........................................................................................................................244 Процессы ...............................................................................................................................................246 Создание нового процесса .........................................................................................................246 Завершение процесса ..................................................................................................................247 Выполнение другой программы ..............................................................................................249 Демоны .............................................................................................................................................251 Межпроцессное взаимодействие .............................................................................................251 Потоки ...................................................................................................................................................256 Создание нового потока .............................................................................................................256 Завершение потока .......................................................................................................................258 Компиляция многопоточной программы .............................................................................258 Межпроцессное взаимодействие .............................................................................................258 Мьютексы ........................................................................................................................................259 Изменение условий ......................................................................................................................259 Разбиение проблемы на части ..................................................................................................260 Планирование .....................................................................................................................................262 Справедливость и детерминированность .............................................................................262 Политики с разделением времени ..........................................................................................263 Политики реального времени...................................................................................................264 Выбор политики ............................................................................................................................265 Выбор приоритета реального времени ..................................................................................266 Дополнительная литература ..........................................................................................................266 Резюме ...................................................................................................................................................267 Глава.11..Управление.памятью. .......................................268 Основы виртуальной памяти .........................................................................................................268 Структура памяти ядра ....................................................................................................................269 Сколько памяти потребляет ядро? .........................................................................................270 Структура памяти в пользовательском пространстве ..........................................................272 Карта памяти процесса ...............................................................................................................274 Подкачка ...............................................................................................................................................275 Выгрузка страниц в сжатую память (zram) .........................................................................275 Отображение памяти с помощью mmap .....................................................................................276 Использование mmap для выделения частной памяти ...................................................276 Использование mmap для разделения памяти ...................................................................276 Использование mmap для доступа к памяти устройства ................................................277 Сколько памяти потребляет мое приложение? .......................................................................277 Потребление памяти на уровне процесса ..................................................................................278 Использование top и ps ...............................................................................................................278 Использование smem ...................................................................................................................279 Другие инструменты ....................................................................................................................281
Стр.12
12  Содержание Обнаружение утечек памяти ..........................................................................................................281 mtrace ................................................................................................................................................281 Valgrind .............................................................................................................................................282 Нехватка памяти ................................................................................................................................283 Дополнительная литература ..........................................................................................................285 Резюме ...................................................................................................................................................285 Глава.12..Отладка.в.GDB.................................................287 Отладчик GNU....................................................................................................................................287 Подготовка к отладке........................................................................................................................287 Отладка приложений в GDB .........................................................................................................288 Удаленная отладка с помощью gdbserver ..................................................................................289 Настройка Yocto Project .............................................................................................................290 Настройка Buildroot ....................................................................................................................290 Начало отладки ...................................................................................................................................290 Подключение GDB к gdbserver ................................................................................................290 Задание sysroot ..............................................................................................................................291 Командные файлы GDB .............................................................................................................292 Обзор команд GDB ......................................................................................................................292 Выполнение до точки прерывания .........................................................................................293 Отладка разделяемых библиотек .................................................................................................294 Yocto Project ....................................................................................................................................294 Buildroot ...........................................................................................................................................295 Другие библиотеки .......................................................................................................................295 Своевременная отладка ...................................................................................................................295 Отладка разветвлений и потоков .................................................................................................296 Core-файлы ..........................................................................................................................................296 Использование GDB для анализа core-файлов .................................................................298 Пользовательские интерфейсы к GDB ......................................................................................298 Терминальный пользовательский интерфейс ....................................................................299 Отладчик DDD ..............................................................................................................................299 Eclipse ................................................................................................................................................300 Отладка кода ядра ..............................................................................................................................301 Отладка кода ядра в kgdb ...........................................................................................................301 Пример сеанса отладки ...............................................................................................................302 Отладка на ранних стадиях .......................................................................................................304 Отладка модулей ...........................................................................................................................304 Отладка кода ядра в kdb .............................................................................................................305 Сообщения об ошибках ядра ....................................................................................................306 Сохранение сообщения об ошибке ядра ...............................................................................307 Дополнительная литература ..........................................................................................................308 Резюме ...................................................................................................................................................309
Стр.13
Содержание  13 Глава.13..Профилирование.и.трассировка.........................310 Эффект наблюдателя ........................................................................................................................310 Таблицы символов и флаги компиляции .............................................................................311 Приступая к профилированию .....................................................................................................311 Профилирование с помощью top .................................................................................................312 Профилировщик для бедных ...................................................................................................313 Применение perf .................................................................................................................................314 Конфигурирование ядра для работы с perf ..........................................................................314 Сборка perf в Yocto Project.........................................................................................................315 Сборка perf в Buildroot................................................................................................................315 Профилирование с помощью perf ...........................................................................................315 Графы вызовов ...............................................................................................................................317 perf annotate ....................................................................................................................................318 Другие профилировщики: OProfile и gprof ..............................................................................319 Трассировка событий ........................................................................................................................321 Введение в Ftrace ...............................................................................................................................321 Подготовка к работе с Ftrace ....................................................................................................322 Динамический режим Ftrace и фильтры трассировки ....................................................324 События трассировки..................................................................................................................325 Использование LTTng ......................................................................................................................326 LTTng и Yocto Project ..................................................................................................................327 LTTng и Buildroot .........................................................................................................................327 Применение LTTng для трассировки ядра ..........................................................................327 Использование Valgrind для профилирования приложений .............................................330 Callgrind .................................................................................................................................................330 Helgrind .................................................................................................................................................330 Использование strace для показа системных вызовов ..........................................................331 Резюме ...................................................................................................................................................333 Глава.14..Программирование.в.режиме.реального.. времени.......................................................................335 Что такое реальное время? .............................................................................................................335 Определение источников недетерминированности ..............................................................337 Задержки планирования .................................................................................................................339 Вытеснение в ядре .............................................................................................................................340 Ядро Linux реального времени (PREEMPT_RT) ..................................................................340 Потоковые обработчики прерываний .........................................................................................341 Вытесняемые блокировки ядра.....................................................................................................343 Получение заплат PREEMPT_RT ..............................................................................................344 Yocto Project и PREEMPT_RT ................................................................................................344 Таймеры высокого разрешения .....................................................................................................345 Предотвращение страничных отказов в приложении реального времени ....................345
Стр.14
14  Содержание Экранирование прерываний ..........................................................................................................346 Измерение задержек планирования ............................................................................................347 cyclictest ...........................................................................................................................................347 Ftrace .................................................................................................................................................350 Комбинирование cyclictest и Ftrace .......................................................................................352 Дополнительная литература ..........................................................................................................352 Резюме ...................................................................................................................................................353 Предметный.указатель...................................................354
Стр.15

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст