ฉันจะเพิ่มอุปกรณ์ framebuffer เพิ่มเติมใน Linux ได้อย่างไร


16

ฉันใช้ Ubuntu 12.04 LTS เป็นเซิร์ฟเวอร์ NAS ที่บ้านโดยไม่มี X เมื่อเร็ว ๆ นี้ฉันได้ทำการปรับแต่งเพื่อใช้เป็นอุปกรณ์เล่นวิดีโอ ในตอนนี้การติดตั้ง X อาจทำได้ง่ายกว่านี้ แต่ฉันตัดสินใจลองใช้ mplayer ด้วยการเล่น framebuffer มันใช้งานได้และทุกอย่างก็ดีและดี

อย่างไรก็ตามสำหรับความอยากรู้อยากเห็นและอาจส่งผลในทางปฏิบัติด้วยฉันไม่สามารถหยุดคิดเกี่ยวกับ framebuffers ดูเหมือนจะมีเพียงอุปกรณ์เฟรมเฟรมเดียว, /dev/fb0. (Btw. ฉันใช้ไดร์เวอร์ vesafs) ถ้าฉันรันหลาย ๆ โปรแกรมที่ใช้ framebuffers ความสับสนวุ่นวายก็จะตามมา ตัวอย่างเช่นการเรียกใช้ mplayer จาก fbterm เพียงขัดข้อง อยากรู้อยากเห็นโปรแกรมดูภาพ fbi จัดการเพื่อดูภาพอย่างใด เห็นได้ชัดว่าโปรแกรมไม่สามารถแชร์อุปกรณ์ได้ แต่ไม่มีระบบหน้าต่างทั้งหมด

ดังนั้นจำนวนของอุปกรณ์ (vesa) fb จำกัด อยู่ที่อุปกรณ์แสดงผลของฮาร์ดแวร์หรือไม่ หรืออาจมีหลักการมากกว่านี้เหมือนมีหลาย ttys หรือไม่? จะเพิ่มความช่วยเหลือเพิ่มเติมในการใช้งานซอฟต์แวร์ที่ใช้งานพร้อมกันหรือไม่ ฉันจะเพิ่มมากขึ้นได้อย่างไร

ตรรกะที่ว่า framebuffers เชื่อมต่อกับ ttys ยังไม่ชัดเจนสำหรับฉัน ... ตัวอย่างเช่น mplayer แสดงให้เห็นว่ามันเป็นเฟรมวิดีโอในทุก ๆ tty แต่ fbi ไม่ได้ นอกจากนี้คอนโซลเริ่มต้นของ Ubuntu (fbcon?) ยังแสดงอยู่หลังวิดีโอโอเวอร์เลย์ซึ่งทำให้ฉันแปลก ทั้งหมดนี้เกี่ยวกับอะไร?

คำตอบ:


18

เนื่องจากยังไม่มีใครตอบและหลังจากเวลาผ่านไปหลายชั่วโมงที่น่าเบื่อและการทดสอบ Google ฉันได้รับความเข้าใจในเรื่องนี้ฉันจะตอบมัน ...

เนื่องจากส่วนต่อประสานอุปกรณ์ framebuffer นั้นค่อนข้างทั่วไปจึงอาจมีอุปกรณ์ fb เพิ่มเติมตามหลักการ อย่างไรก็ตามเนื่องจากไดรเวอร์ VESA ที่ฉันใช้ให้การเชื่อมต่อโดยตรงระหว่างอุปกรณ์ฮาร์ดแวร์บางตัวและไฟล์อุปกรณ์ framebuffer จึงไม่เหมาะสมที่จะมีมากกว่าหนึ่งตัวที่มีอุปกรณ์จริง

มีไดรเวอร์สำหรับอุปกรณ์ framebuffer เสมือน vfb (หมายเหตุ: แตกต่างจาก xvfb ซึ่งเป็น framebuffer เสมือนจริงสำหรับ X) ฉันไม่ได้ทดสอบตัวเอง แต่มีอุปกรณ์ fb ได้มากเท่าที่ต้องการใช้อุปกรณ์เสมือน ฉันยังคิดว่าไม่มีอะไรในหลักการที่จะป้องกันไม่ให้อุปกรณ์ piping อุปกรณ์เสมือนกับฮาร์ดแวร์ framebuffer อนุญาตให้สร้าง framebuffer multiplexer

เกี่ยวกับการเชื่อมต่อระหว่าง framebuffers และ tty's:ไม่มีเลย framebuffer ถูกวาดลงบนหน้าจอโดยไม่สนใจสิ่งใด

สิ่งที่ทำให้ฉันสับสนในตอนแรกคือพฤติกรรมของโปรแกรมดูภาพ fbi ปรากฎว่ามันตรวจสอบอย่างชาญฉลาดว่า tty ที่กำลังทำงานอยู่เปิดอยู่หรือไม่และดึงไปที่ framebuffer หรือไม่ตามนั้น (นั่นเป็นเหตุผลที่มันปฏิเสธที่จะทำงานมากกว่า SSH ซึ่งแตกต่างจาก mplayer - ไม่ยอมรับเทอร์มินัลหลอก) แต่ฟังก์ชั่นมัลติเพล็กเซอร์เหมือนไม่มีอะไรที่เกี่ยวข้องกับ framebuffer เอง

หากมีกระบวนการหลายเขียนถึง framebuffer, พวกเขาไม่ได้ปิดกั้นแต่ละอื่น ๆ ปรากฎว่าปัญหาก่อนหน้าของฉัน (เกิดปัญหาและเช่นนั้น) โดยใช้โปรแกรม fb หลายรายการพร้อมกันไม่ได้เกี่ยวกับ framebuffer เลย ใช้เทอร์มินัล fbterm และเรียกใช้ mplayer จากมัน: ไม่มีปัญหา เทอร์มินัล fbterm และ fbcon และโปรแกรมดูรูปภาพ fbi วาดเพื่อบัฟเฟอร์เฉพาะเมื่อมีการอัปเดตดังนั้น mplayer จึงครองหน้าจอเกือบ 100% ของเวลา แต่ถ้าคุณพยายามเรียกใช้ mplayers สองตัวคุณจะได้รับมุมมองที่กะพริบแสดงเฟรมของเฟรมหนึ่งและอีกอันเนื่องจากพวกเขาพยายามวาดลงในบัฟเฟอร์ที่มีสภาพการแข่งขัน

ลิงค์ที่มีประโยชน์:

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

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


หากคุณมีจอแสดงผล LCD 2nd ขนาดเล็กเป็นรอง (คิด 320x240 พิกเซล, 3 นิ้ว) โดยใช้ fb1 เหมาะสมสำหรับเรื่องนั้น ฉันมีน้อย Adafruit adafruit.com/product/1601หนึ่งที่ใช้ (เท่านั้น) FB1 ซอฟต์แวร์ของพวกเขาคือโอเพ่นซอร์ส แต่อิมเมจ OS ของพวกเขาพยายามเรียกใช้ Linux ด้วย GUI ใน 320x240 และล้มเหลวอย่างน่าสังเวช ในฐานะที่เป็นอุปกรณ์ที่สองมันอาจจะโอเคฉันไม่ได้ใช้มันในสองสามปีที่ผ่านมา เห็นผู้ชาย mknod
อลันคอเรย์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.