• отличие драйверов устройств от прикладного ПО,
• сборку модулей ядра,
• функции, которые доступны из модулей,
• структура file,
• регистрацию, подключение устройств,
• пример драйвера символьного устройства c доступом на чтение и запись,
• блокировка процессов при конкурентном доступе к устройству,
• специфика управления памятью в ядре Linux,
• блочные устройства,
• пример драйвера, использующего семафоры,
• типы данных и структуры ядра и многое другое.
Целевая аудитория
Курс рассчитан на программистов, которые хотели бы освоить востребованное
направление по разработке драйверов устройств для Linux и Android.
Курс рассчитан на программистов, которые хотели бы освоить востребованное направление по разработке драйверов устройств для Linux и Android. Необходимая предварительная подготовка основы программирования на С, Java.
- Архитектура ядра Linux;
- Отличия разработки драйверов от прикладного ПО;
- Потенциальные проблемы с безопасностью;
- Лицензирование модулей ядра.
Модуль 2:
- Простейший модуль ядра;
- Знакомство с printk();
- Сборка модулей ядра;
- Макроопределения _init и _exit;
- Вопросы документирования модулей;
- Передача модулю параметров командной строки;
- Модули, состоящие из нескольких файлов;
- Сборка модулей под существующее ядро.
Модуль 3:
- Модули ядра и прикладные программы;
- Функции, которые доступны из модулей;
- Пространство пользователя и пространство ядра;
- Пространство имен;
- Старший и младший номер устройства.
Модуль 4:
- Файлы символьных устройств;
- Структура file_operations;
- Структура file;
- Регистрация устройства;
- Отключение устройства;
- Пример драйвера символьного устройства с доступом только на чтение;
- Специфика поддержки записи для символьных устройств;
- Пример драйвера символьного устройства с доступом на чтение и запись.
Модуль 5:
- Особенность файловой системы /proc;
- Пример драйвера, создающего файл в /proc с доступом на чтение;
- Пример драйвера, создающего файл в /proc с доступом на запись;
- Блокировка процессов при конкурентном доступе к устройству;
- Пример драйвера, приостанавливающего работу процессов.
Модуль 6:
- Специфика управления памятью в ядре Linux;
- Преобразование адреса в ядре;
- Отображение файла в память ядра;
- Управление отображением в память.
Модуль 7:
- Блочные устройства;
- Регистрация блочного устройства;
- Операции, поддерживаемые для блочных устройств;
- Обработка запросов к блочному устройству;
- Детали реализации блочного устройства;
- Пример драйвера блочного устройства.
Модуль 8:
- Конкуренция и ситуация гонок;
- Семафоры и мьютексы;
- Реализация семафора в ядре Linux;
- Семафоры на чтение и запись;
- Взаимоблокировки;
- Пример драйвера, использующего семафоры.
Модуль 9:
- Типы данных и структура ядра;
- Специфика использования стандартных типов данных;
- Назначение типам данных явного размера;
- Специфичные типы данных;
- Аспекты, связанные с совместимостью;
- Измерение временных интервалов;
- Размер страницы;
- Порядок следования байт в словах;
- Выравнивание данных;
- Размер указателя.
Этот курс в скором времени появится на сайте courses24.net Проверьте по поиску, возможно данный курс уже добавлен.