Linux'a nasıl ek bir framebuffer cihazı ekleyebilirim?


16

X olmadan bir ev NAS sunucusu olarak bir Ubuntu 12.04 LTS kullanıyorum. Son zamanlarda bir video oynatma medya cihazı olarak hizmet etmek için ayarladım. Bu noktada X'i yüklemek daha kolay olabilirdi, ancak mplayer'ı framebuffer oynatmayı denemeye karar verdim. İşe yaradı ve her şey güzel ve iyiydi.

Bununla birlikte, merak ve belki de pratik sonuçlar için, çerçeve tamponları hakkında düşünmeyi bırakamam. Sadece bir çerçeve tampon cihazı var gibi görünüyor /dev/fb0. (Btw. Ben vesafs sürücüsü kullanıyorum) Framebuffers kullanan birden fazla program çalıştırırsam, kaos başlar. Örneğin, mplayer'ı fbterm'den çalıştırmak sadece çöküyor. İlginçtir ki, fbi resim görüntüleyici görüntüleri bir şekilde görüntülemeyi başarır. Açıkçası programlar cihazı paylaşamıyor, sonuçta pencereleme sistemi yok.

Peki, (vesa) fb cihazlarının sayısı donanım görüntüleme cihazlarıyla sınırlı mı? Veya prensip olarak, birden fazla tty gibi daha fazlası olabilir mi? Bunları kullanan yazılımların aynı anda çalıştırılmasına yardımcı olmak biraz daha yardımcı olur mu? Nasıl daha fazla ekleyebilirim?

Ayrıca çerçeve tamponlarının tty'lere nasıl bağlandığı mantığı benim için oldukça açık değil ... örneğin, mplayer her tty'de video karesini gösteriyor, ancak fbi değil. Dahası, Ubuntu varsayılan konsolu (fbcon?) Video katmanının arkasında gösteriyor, bu da beni garipleştiriyor. Bütün bunlar ne hakkında?

Yanıtlar:


18

Henüz kimse cevap vermediğinden ve saatlerce süren googling ve testlerden sonra, konuyu biraz kavradım, cevap vereceğim ...

Framebuffer cihaz arayüzü oldukça genel bir arayüz olduğundan, prensipte daha fazla fb cihazı olabilir. Ancak, kullandığım VESA sürücüsü belirli bir donanım aygıtı ile çerçeve arabellek aygıtı dosyası arasında doğrudan bir bağlantı sağladığından , gerçek aygıtlara sahip olduğundan daha fazlasına sahip olmak mantıklı değil.

Sanal çerçeve arabelleği aygıtları için bir sürücü var, vfb. (Not: X için sanal bir çerçeve arabelleği olan xvfb'den farklı) Bunu kendim test etmedim, ancak bir kişinin sanal cihazı kullanarak istediği kadar fb cihazı olabilir. Ayrıca prensipte hiçbir şeyin sanal bir cihazı donanım çerçeve tampon cihazına bağlamasını önleyerek çerçeve tamponu çoklayıcı oluşturmasına izin vermediğini düşünüyorum

Framebuffers ve tty's arasındaki bağlantı hakkında: yok. Çerçeve tamponu, hiçbir şeyi göz ardı ederek basitçe ekrana çizilir.

Beni gerçekten şaşırtan şey fbi resim görüntüleyicinin davranışı. Çalıştığı tty'nin açık olup olmadığını akıllıca kontrol ettiği ve çerçeveye çekip çekmediği ortaya çıkıyor. (Bu yüzden mplayer'ın aksine SSH'yi çalıştırmayı reddediyor - sahte bir terminali kabul etmiyor.) Ancak çoklayıcı benzeri işlevin çerçevenin kendisiyle hiçbir ilgisi yok.

Çerçeve arabelleğine birden çok işlem yazılıyorsa, birbirlerini engellemezler . Eşzamanlı olarak birden fazla fb programı kullanarak önceki sorunlarımın (çökmeler ve benzeri) bile framebuffer hakkında olmadığı ortaya çıktı. Fbterm terminalini alın ve mplayer'ı çalıştırın: sorun değil. Fbterm ve fbcon terminalleri ve fbi resim görüntüleyici yalnızca bir şey güncellendiğinde arabelleğe alınır, böylece mplayer ekrana neredeyse% 100 hakim olur. Ancak iki mplayer çalıştırmaya çalışırsanız, bir yarış koşuluna sahip olan tampona çizmeye çalıştıklarından, birinin ve diğerinin karelerini gösteren bir görünüm elde edersiniz.

Bazı yararlı bağlantılar:

http://moi.vonos.net/linux/framebuffer-drivers/

https://www.kernel.org/doc/Documentation/fb/framebuffer.txt


Fb1 kullanarak ikincil olarak küçük bir LCD 2. ekranınız varsa (320x240 piksel, 3 inç düşünün) bunun için mantıklı. Ben Adafruit biraz iç adafruit.com/product/1601 biri that use (yalnızca) FB1'i. Yazılımları açık kaynaklıdır, ancak işletim sistemi imajları 320x240'ta bir GUI ile Linux'u çalıştırmaya çalışır ve sefil bir şekilde başarısız olur. İkinci bir cihaz olarak sorun değil, birkaç yıldır kullanmadım. Bakınız adam mknod.
Alan Corey
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.