Basit bir ekran / monitör cihazı için hangi Linux sürücü alt sistemi / API kullanılır?


9

Dokunmatik ekranlı gömülü bir sistem geliştiriyorum. Dokunmatik ekran hem giriş hem de çıkış olarak çalışır ve grafiksel çıkışı kaplayan "sanal" bir klavye bulunur.

Dokunmatik sensörden girişi okuyan ve kernel.org'daki bu kılavuzun yardımıyla oluşturulan tuşlara doğru çeviren çalışan bir aygıt sürücüm var . Bu sürücüyü ekrana görüntü çıkışını da işleyecek şekilde genişletmek istiyorum.

Hem getty hem de X'i mümkün olduğunca az çoğaltma ile desteklemek istiyorum. Ben en az X gibi kiraz aldı paketleri ile en az Debian varyantı çalıştırıyorum. Ben genel bir GitHub depo dökümü olabilir, ancak bu sürücüyü depo boru hattına almak niyetinde değilim.

Ekran görüntülerinin çıktısı şu anda çirkin bir geçici çözümle yapılır: bir ekrana bağlı olmamasına rağmen CPU'nun gömülü grafik donanımına renderlemeyi zorlamak için bir önyükleme seçeneği ve bu arabelleği sürekli olarak ekrandan sıyıryan bir daemon, bir avuç önceden klavyeyi görsel olarak oluşturmak için pikselleri tanımladı ve gerçek ekrana doğru itti.

Bu, ekran cihazının beklediği dili doğru bir şekilde anladığımı kanıtladığım bir kavram kanıtı olarak çalışır, ancak açıkça en uygunudur.

kernel.org Ayrıca "DRM" aygıt sürücüleri için bir rehber vardır, ancak bu donanımımın neler yapabileceğine dair ciddi bir aşırılık gibi görünüyor:

Linux DRM katmanı, genellikle 3B grafik hızlandırmaya uygun programlanabilir boru hatlarını içeren karmaşık grafik cihazlarının ihtiyaçlarını desteklemeye yönelik kod içerir.

Donanımımın hiçbirinde 3D hızlandırmaya benzeyen bir şey yok, bu yüzden muhtemelen istediğim şey olmadığı sonucuna varıyorum.

Hangi alt sistemi / API'yi kullanmalıyım? Eksik bir terminolojinin bir parçasını aramalarımı tutan şey olarak anlıyorum, ancak bunu nasıl yapacağınız hakkında daha fazla bilgi takdir edilecektir.

Donanım ayrıntıları (muhtemelen ilgisiz): CPU ve ekran, CPU'nun yerel olarak desteklemediği 8080-esque paralel protokolü ile iletişim kurar, bu yüzden GPIO'larla taklit ediyorum (mmap aracılığıyla kayıtları manipüle ederek).

Tam ekran görüntüsü göndermek yaklaşık 20 ms sürer, ancak gömülü grafik arabelleğinden tam bir kopya elde etmek ~ 180 ms sürer, bu nedenle bu adımı atlamak en önemli hedeftir. Ekran donanımı, tüm kare değerinde veriyi tutmak için yeterli SGRAM belleği içerir ve dikdörtgen bir alt bölge yazmayı destekler, bu nedenle ekranın yalnızca değişen kısmını güncellemek için bir kanca istenir.

Ekran, gelen verilerin zamanlaması ile ilgili değildir. Dokunmatik sensör girişi, CPU ile desteklediği I²C aracılığıyla CPU ile iletişim kuran özel olarak oluşturulmuş bir IC tarafından işlenir . Mevcut sürücü linux/input-polldev.harayüzü kullanır . CPU bir Broadcom BCM2835 , ekran gömülü Himax HX8357 denetleyiciye sahip bir TFT , dokunmatik ekran sensör kod çözücüsü bir ST STMPE610 ve HX8357 ile BCM2835 arasında bir voltaj seviye kaydırıcı (Nexperia 74LVCH245A ) var. Talep üzerine daha fazla ayrıntı verilebilir.


NIH sendromuna sahip olduğunuzdan ve temel olarak bir tekerleği yeniden keşfettiğinizden eminim - genellikle dokunmatik ekran, daha az desteklenmekten çok daha fazla olan HID protokolünü kullanır. Dokunmatik ekran yalnızca giriş cihazıdır.
0andriy

@ 0andriy Tekerleği yeniden icat etmek benim için bir şey, ama başladığımda bu cihaz için (gerçek) sürücüler yoktu. İnsan arayüz cihazları için herhangi bir standart protokolün farkında değilim, ancak bir tane varsa, burada kullandığım dokunmatik yer paylaşımının kullanmadığından eminim. Benimki kesinlikle görüntüler çıkardığı için bir "dokunmatik ekran sadece giriş cihazı" diye katılmıyorum.
memtha

Tek bir pakette iki donanım bloğunu tanımadınız. Dokunmatik ekran, adını göz ardı ederek, yalnızca giriş cihazıdır. Birinci çıkış, örneğin panel veya TFT ekran olarak adlandırılır.
0andriy

merriam-webster.com/dictionary/touchscreen Evet iki ayrı donanım vardır: dokunmaya duyarlı bir kaplama ve bir TFT ekran. Bu iki bileşen dokunmatik ekranı oluşturmak için birleşir. Bana "adı göz ardı et" diyerek dokunmatik ekranı yanlış tanımladığımı söyleyemezsiniz.
memtha

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.