Яка підсистема / API драйвера Linux використовується для простого пристрою з екраном / монітором?


9

Я розробляю вбудовану систему з сенсорним екраном. Сенсорний екран працює як вхід, так і вихід, з "віртуальною" клавіатурою, що перекриває графічний вихід.

У мене працює драйвер пристрою, який зчитує вхід з сенсорного сенсора і правильно переводить його на натискання клавіш, створене за допомогою цього посібника на kernel.org . Я хочу розширити цей драйвер, щоб також обробляти вихідні зображення на екран.

Я хочу підтримувати і getty, і X, як можна менше дублювання. Я запускаю мінімальний варіант Debian з пакетами, що вибирають вишні, наприклад, мінімальний X. Зауважте, що я не збираюся намагатися завести цього драйвера в конвеєр сховища, хоча я можу скинути його на загальнодоступне сховище GitHub.

Виведення зображень на екран в даний час робиться через кричущий спосіб вирішення: завантажувальна опція для примусового візуалізації до вбудованого графічного обладнання CPU, незважаючи на те, що він не підключений до дисплея, і демон, що постійно знімає екран, який буферизує, змінює жменю попередньо визначені пікселі, щоб створити візуальну клавіатуру, і висуває її на реальний екран.

Це працює як доказ концепції, доказуючи, що я правильно розумію мову, на яку очікує пристрій екрану, але, очевидно, є неоптимальною.

kernel.org також є посібник для драйверів пристроїв "DRM", але це здається серйозним надмірним вмінням того, на що моє обладнання може:

Рівень DRM DRM містить код, призначений для підтримки потреб складних графічних пристроїв, зазвичай містять програмовані конвеєри, які добре підходять для прискорення 3D-графіки.

Жоден з моїх апаратних засобів не має нічого подібного до 3D-прискорення, тому я роблю висновок, що це, мабуть, не те, що я хочу.

Яку підсистему / API я повинен використовувати? Я вважаю, що одна частина відсутньої термінології - це те, що стримує мої пошуки, але будь-яка інша інформація про те, як це досягти, буде вдячна.

Деталі обладнання (напевно, не мають значення): ЦП та екран спілкуються за допомогою 8080-паралельного паралельного протоколу, який ЦП не підтримує в основному, тому я емітую його з GPIO (маніпулюючи регістрами через mmap).

Надсилання повного екранного зображення займає близько 20 мс, але отримання повної копії із вбудованого графічного буфера займає ~ 180 мс, тому пропуск цього кроку є найважливішою метою. Екранне обладнання включає в себе достатню кількість пам'яті SGRAM, щоб зберігати цілий кадр, що вартує даних, та підтримує запис прямокутного підрегіону, тому бажано гаком оновити лише частину екрану, що змінилася.

На екрані немає конкретних даних щодо часу надходження даних. Входом сенсорного датчика керується спеціально створений ІС, який спілкується з процесором через I²C , який підтримує процесор. Нинішній драйвер використовує linux/input-polldev.hінтерфейс. Процесор являє собою Broadcom BCM2835 , екран - TFT із вбудованим контролером Himax HX8357 , декодер датчика сенсорного екрану - ST STMPE610 , а між HX8357 і BCM2835 є перемикач напруги (Nexperia 74LVCH245A ). Більш детальну інформацію можна отримати на запит.


Я впевнений, що у вас є синдром NIH і в основному винайшли колесо - зазвичай сенсорний екран використовує протокол HID, який є більш ніж менш підтримуваним. Зауважте, сенсорний екран - це лише пристрій введення даних.
0андрій

@ 0andriy Повторне винайдення колеса - це щось моє, але я не мав (справжніх) драйверів для цього конкретного пристрою. Я не знаю жодного стандартизованого протоколу для пристроїв інтерфейсу людини, але якщо він є, я впевнений, що сенсорне накладання, яке я тут використовую, не використовує його. Я не погоджуюся з тим, що "сенсорний екран є лише пристроєм введення", оскільки мій, безумовно, виводить зображення.
мемта

Ви просто не розпізнали два апаратні блоки в одному пакеті. Сенсорний екран, не враховуючи його ім'я, є лише пристроєм введення. Вихідним називається, наприклад, панельний або TFT-дисплей.
0андрій

merriam-webster.com/dictionary/touchscreen Так, є два чіткі апаратури: сенсорне накладання та екран TFT. Ці два компоненти поєднуються, утворюючи сенсорний екран. Ви не можете сказати мені, що я неправильно визначаю сенсорний екран, сказавши мені "ігнорувати ім'я".
memtha

Відповіді:


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.