| Код | MnRi KE3 |
|---|---|
| Назва дисципліни | Проєктування драйверів вбудованих систем на основі ОС Linux |
| Назва дисципліни англійською | |
| Емблема у форматі 600х300px | ![]() |
| Категорія | Радіотехнічні кола та сигнали |
| Кафедра, яка забезпечує викладання | Кафедра конструювання електронно-обчислювальної апаратури |
| Мова викладання | Українська |
| Пререквізити, вимоги до початку вивчення | Базові знання мови програмування С, розуміння мови програмування Assembler та особливості архітектур (розміщення даних Little Endian, Big Endian), створення та розуміння рецептів побудови Makefile, розуміння додатків контролю версій (Git, HG), основи теорії електричних кіл, базові навички роботи з середовищем OC Linux через термінал (команди копіювання, запуск додатків тощо) та розуміння англомовної документації. |
| Розширений опис дисципліни | Що буде вивчатися Ця дисципліна акцентує увагу на основах розробки драйверів для ОС Linux мовою програмування С та охоплює такі розділи: - концепція статичних та динамічних драйверів в ОС Linux; - опис та конфігурація периферійних пристроїв за допомогою Device Tree Source (DTS); - клонування та модифікація репозиторіїв Yocto, а також побудова власної збірки ОС Linux; - додавання та інтеграція власних модулів ядра ОС Linux; - вивчення основних компонентів модулів ядра Linux, зокрема процедур ініціалізації та деініціалізації; - побудова інтерфейсів взаємодії між модулями ядра та простором користувача із використанням ioctl, sysfs та module parameters; - вивчення контекстів виконання коду в драйверах ОС Linux, основ багатопоточності та механізмів синхронізації доступу до спільних ресурсів; - використання механізмів переривань і таймерів у драйверах ОС Linux; - основи роботи з мережевими пристроями, створення віртуальних мережевих інтерфейсів та вивчення базових механізмів взаємодії мережевих драйверів. Чому це цікаво/треба вивчати На сьогодні переважна більшість вбудованих систем, які містять власне програмне забезпечення для взаємодії між апаратними та програмними компонентами, реалізуються на базі ОС Linux із використанням прикладного програмного забезпечення та драйверів ядра. Це стосується як відносно простих пристроїв, так і складних систем, зокрема Wi-Fi маршрутизаторів, комутаторів (switch), IoT-пристроїв та промислових контролерів. Розробка драйверів для ОС Linux мовою програмування С має низку специфічних особливостей, пов’язаних із необхідністю взаємодії безпосередньо з ядром операційної системи, апаратними ресурсами та механізмами синхронізації. У порівнянні з прикладною розробкою програмного забезпечення цей напрям є більш вузькоспеціалізованим і потребує глибокого розуміння архітектури ОС Linux та принципів роботи вбудованих систем. Водночас на ринку праці спостерігається стабільний попит на фахівців у даній області як серед українських, так і міжнародних компаній, що обумовлено активним розвитком embedded-систем та мережевого обладнання. Чому можна навчитися (результати навчання) Створювати прикладні програми та драйвери різного рівня складності для широкого спектра задач, зокрема для розробки власних Wi-Fi пристроїв та систем із використанням спеціалізованих протоколів передачі даних. Проєктувати технічні рішення, що забезпечують коректну взаємодію між потоками виконання та різними контекстами роботи всередині драйвера або модуля ядра ОС Linux. Отримати практичні навички аналізу та інтерпретації повідомлень аварійного завершення роботи ядра (Kernel Panic), спричинених помилками під час розробки та налагодження модулів ядра Linux. Як можна користуватися набутими знаннями і уміннями (компетентності) Здатність розробляти власні або розширювати існуючі модулі для ОС Linux та вміти налагоджувати їх, а також проєктувати різні інтерфейси користувача для доступу до даних модулів ядра.
|