Subsistem / API driver Linux apa yang digunakan untuk perangkat layar / monitor sederhana?

9

Saya sedang mengembangkan sistem tertanam dengan layar sentuh. Layar sentuh beroperasi sebagai input dan output, dengan keyboard "virtual" yang overlay output grafis.

Saya memiliki driver perangkat yang berfungsi yang membaca input dari sensor sentuh dan menerjemahkannya dengan benar ke penekanan tombol, yang dibuat dengan bantuan panduan ini di kernel.org . Saya ingin memperluas driver ini untuk juga menangani output gambar ke layar.

Saya ingin mendukung getty dan X, dengan duplikasi sesedikit mungkin. Saya menjalankan varian Debian minimal dengan paket cherry-pick, seperti minimal X. Perhatikan bahwa saya tidak bermaksud mencoba memasukkan driver ini ke dalam pipa repositori, meskipun saya mungkin membuangnya di repositori GitHub publik.

Meng-output gambar layar saat ini dilakukan melalui solusi ngeri: opsi boot untuk memaksa rendering ke perangkat keras grafis tertanam CPU, meskipun tidak terhubung ke layar, dan daemon yang terus-menerus menyaring goresan yang buffer, memodifikasi beberapa pra- piksel yang ditentukan untuk membuat visual keyboard, dan mendorongnya ke layar nyata.

Ini berfungsi sebagai bukti konsep, membuktikan bahwa saya benar-benar memahami bahasa yang diharapkan perangkat layar, tetapi jelas kurang optimal.

kernel.org juga memiliki panduan untuk driver perangkat "DRM", tetapi itu kelihatannya seperti kerja keras yang serius untuk kemampuan perangkat keras saya:

Lapisan DRM Linux berisi kode yang dimaksudkan untuk mendukung kebutuhan perangkat grafik yang kompleks, biasanya berisi saluran pipa yang dapat diprogram yang cocok untuk akselerasi grafik 3D.

Tak satu pun dari perangkat keras saya memiliki sesuatu yang menyerupai akselerasi 3D, jadi saya menyimpulkan bahwa ini mungkin bukan yang saya inginkan.

Subsistem / API apa yang harus saya gunakan? Saya pikir salah satu bagian dari terminologi yang hilang adalah apa yang menahan pencarian saya, tetapi informasi lebih lanjut tentang bagaimana mencapai ini akan dihargai.

Detail perangkat keras (mungkin tidak relevan): CPU dan layar berkomunikasi melalui protokol paralel 8080-esque, yang tidak didukung CPU secara asli, jadi saya meniru itu dengan GPIO (dengan memanipulasi register melalui mmap).

Mengirim gambar layar lengkap membutuhkan sekitar 20 ms, tetapi mendapatkan salinan lengkap dari buffer grafis yang disematkan membutuhkan ~ 180 ms, jadi melewatkan langkah itu adalah tujuan yang paling penting. Perangkat keras layar menyertakan memori SGRAM yang cukup untuk menyimpan seluruh data bernilai frame, dan mendukung penulisan sub-wilayah segi empat, sehingga pengait untuk hanya memperbarui bagian layar yang telah diubah akan diinginkan.

Layar tidak khusus tentang waktu data yang masuk. Input sensor sentuh ditangani oleh IC yang dibuat khusus yang berkomunikasi dengan CPU melalui I²C , yang didukung CPU. Driver sekarang menggunakan linux/input-polldev.hantarmuka. CPU adalah Broadcom BCM2835 , layar adalah TFT dengan tertanam Himax HX8357 controller, dekoder sensor layar sentuh adalah ST STMPE610 , dan ada pengubah level tegangan (Nexperia 74LVCH245A ) dalam permainan antara HX8357 dan BCM2835. Rincian lebih lanjut tersedia berdasarkan permintaan.

memtha
sumber
Saya cukup yakin Anda menderita sindrom NIH dan pada dasarnya menemukan kembali roda - biasanya layar sentuh menggunakan protokol HID, yang lebih dari kurang didukung. Catatan, layar sentuh hanya perangkat input.
0andriy
@ 0andriy Menciptakan kembali roda adalah sesuatu yang saya tbh, tetapi tidak ada driver (nyata) untuk perangkat khusus ini ketika saya mulai. Saya tidak mengetahui adanya protokol standar untuk perangkat antarmuka manusia, tetapi jika ada, saya cukup yakin overlay sentuh yang saya gunakan di sini tidak menggunakannya. Saya tidak setuju bahwa "layar sentuh hanya perangkat input," karena milik saya adalah yang paling menghasilkan gambar.
memtha
Anda tidak mengenali dua blok perangkat keras dalam satu paket. Layar sentuh, mengabaikan namanya, hanya perangkat input. Output satu disebut, misalnya, tampilan panel atau TFT.
0andriy
merriam-webster.com/dictionary/touchscreen Ya ada dua bagian perangkat keras yang berbeda: overlay sentuh sensitif dan layar TFT. Kedua komponen ini bergabung membentuk layar sentuh. Anda tidak dapat memberi tahu saya bahwa saya mendefinisikan layar sentuh salah dengan mengatakan kepada saya untuk "mengabaikan nama."
memtha

Jawaban: