Глава 5.34 UIO-драйвер RGB-светодиода: исходный код и сборка
Автор: KONTAKT`S
Загружено: 2025-06-25
Просмотров: 68
Описание:
The Linux Driver Development Guide for RPi 3 📘
===
🎬 Пишем UIO-драйвер для RGB LED — от тупика до победы!
👨💻 Raspberry Pi • mmap • GPIO • C/Bash
💡 UIO-драйвер для RGB LED на Raspberry Pi — наш путь от тупика к победе!
В этом видео вы увидите настоящий инженерный путь — от тупика до победного финала.
Мы хотели написать простой UIO-драйвер для управления RGB-светодиодом напрямую через GPIO Raspberry Pi.
Задача выглядела "легкой", но реальность оказалась куда глубже...
---
🔍 Что было:
🧩 Попытки замапить физическую память GPIO — упирались в конфликты (`resource busy`)
🌀 Неудачные маппинги через `devm_ioremap_resource` → kernel panic / сбои
📉 Несовместимость `reg = 0x3f200000 0x1000` из Device Tree с тем, как ядро резервирует GPIO
🤖 Неработающие светодиоды, молчащий `/dev/uio0`, отсутствие логики в user space
---
✅ Что мы сделали:
Поняли, что нельзя запрашивать ресурсы, уже занятые `bcm2835-gpio`
Решили использовать **UIO-драйвер без запроса региона памяти**, просто `ioremap()`
Сделали кастомный `Device Tree`-ноду с `compatible = "kontakts,rgb-uio"`
Использовали `UIO_MEM_PHYS`, чтобы mmap в user space прошёл без ошибок
Реализовали **C-программу**, включающую цвета с параметрами: `red`, `green`, `blue`, `off`, `rgb`
Добавили **Bash-тест**, который спрашивает: «горит ли?» и помогает пройти ручной тест RGB-светодиода
И даже сделали **интерактивную версию на Python**!
---
🛠️ Используемые технологии:
Linux UIO Framework
Raspberry Pi GPIO memory-mapped I/O
Device Tree overlay
Пользовательский режим: `mmap()`, `/dev/uio0`
Bash и C
---
💬 Итог:
Сложность была в том, что доступ к GPIO напрямую из UIO-драйвера перекрывается системным GPIO-драйвером.
Решение — **не пытаться захватывать ресурс**, а просто корректно отобразить его и использовать.
Теперь вы можете управлять RGB напрямую через mmap — быстро, гибко и без перегрузки ядра.
---
▶️ Подписывайтесь, ставьте 👍 и присоединяйтесь к инженерным приключениям с KONTAKT’S и ChatGPT!
Разработано с KONTAKT’S и ChatGPT
Повторяем попытку...

Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: