Làm cách nào tôi có thể thêm một thiết bị bộ đệm khung bổ sung trong Linux?


15

Tôi đang chạy Ubuntu 12.04 LTS với tư cách là máy chủ NAS gia đình, không có X. Gần đây tôi cũng đã điều chỉnh nó để phục vụ như một thiết bị phương tiện phát video. Tại thời điểm này có thể dễ dàng hơn để cài đặt X, nhưng tôi đã quyết định thử mplayer với phát lại bộ đệm khung. Nó đã làm việc, và mọi thứ đều ổn và tốt.

Tuy nhiên, vì tò mò và có thể vì những hậu quả thực tế, tôi không thể ngừng suy nghĩ về bộ đệm khung. Dường như chỉ có một thiết bị bộ đệm khung , /dev/fb0. (Btw. Tôi đang sử dụng trình điều khiển vesafs) Nếu tôi chạy nhiều chương trình sử dụng bộ đệm khung, sự hỗn loạn xảy ra. Ví dụ, chạy mplayer từ fbterm chỉ gặp sự cố. Thật kỳ lạ, người xem hình ảnh fbi quản lý để xem hình ảnh bằng cách nào đó. Rõ ràng các chương trình không thể chia sẻ thiết bị, rốt cuộc không có hệ thống cửa sổ nào.

Vì vậy, số lượng thiết bị (vesa) fb có giới hạn trong các thiết bị hiển thị phần cứng không? Hoặc có thể có nhiều hơn về nguyên tắc, giống như có nhiều ttys? Sẽ thêm một số trợ giúp chạy đồng thời phần mềm sử dụng chúng? Làm thế nào tôi có thể thêm nhiều hơn?

Ngoài ra logic về cách các bộ đệm khung được kết nối với ttys không rõ ràng đối với tôi ... ví dụ, mplayer hiển thị khung hình video trên mỗi tty, nhưng fbi thì không. Hơn nữa, bảng điều khiển mặc định của Ubuntu (fbcon?) Hiển thị đằng sau lớp phủ video, điều này làm tôi thấy kỳ lạ. Tất cả những thứ này là về cái gì?

Câu trả lời:


18

Vì chưa có ai trả lời, và sau nhiều giờ tẻ nhạt và thử nghiệm, tôi đã hiểu được chủ đề này, tôi sẽ trả lời nó ...

Vì giao diện thiết bị bộ đệm là khá chung chung, về nguyên tắc có thể có nhiều thiết bị fb hơn. Tuy nhiên, vì trình điều khiển VESA mà tôi đã sử dụng cung cấp kết nối trực tiếp giữa một thiết bị phần cứng nhất định và tệp thiết bị bộ đệm khung, không có ý nghĩa gì khi có nhiều trong số chúng hơn một thiết bị thực.

Có một trình điều khiển cho các thiết bị bộ đệm khung ảo, vfb. (Lưu ý: khác với xvfb là bộ đệm khung ảo cho X) Tôi chưa tự mình thử nghiệm điều này, nhưng người ta có thể có nhiều thiết bị fb như người ta muốn sử dụng thiết bị ảo. Tôi cũng nghĩ rằng về nguyên tắc, không có gì ngăn người ta chuyển một thiết bị ảo sang thiết bị bộ đệm khung phần cứng, cho phép xây dựng bộ ghép kênh bộ đệm khung

Về mối liên hệ giữa bộ đệm khung và tty's: không có. Bộ đệm khung chỉ đơn giản là được vẽ lên màn hình, coi thường bất cứ thứ gì.

Điều khiến tôi bối rối ban đầu là hành vi của người xem hình ảnh fbi. Nó chỉ ra rằng nó khéo léo kiểm tra xem tty nó đang chạy có mở hay không, và rút ra bộ đệm khung hay không theo đó. .

Nếu có nhiều quá trình viết cho bộ đệm khung, chúng không chặn nhau . Nó chỉ ra rằng các vấn đề trước đây của tôi (sự cố và như vậy) khi sử dụng nhiều chương trình fb đồng thời thậm chí không phải là về bộ đệm khung. Lấy thiết bị đầu cuối fbterm và chạy mplayer từ nó: không vấn đề gì. Các thiết bị đầu cuối fbterm và fbcon và trình xem hình ảnh fbi chỉ vẽ vào bộ đệm khi có thứ gì đó được cập nhật, do đó, mplayer thống trị màn hình gần như 100% thời gian. Nhưng nếu bạn cố chạy hai người chơi, bạn sẽ có một cái nhìn rằng các flickers hiển thị các khung của cái này và cái kia, khi họ cố gắng vẽ vào bộ đệm có điều kiện cuộc đua.

Một số liên kết hữu ích:

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

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


Nếu bạn có màn hình LCD thứ 2 nhỏ ở dạng thứ cấp (nghĩ 320x240 pixel, 3 inch) sử dụng fb1 có ý nghĩa cho điều đó. Tôi có một ít Adaf nhung adafbean.com/product/1601 một cái sử dụng (chỉ) fb1. Phần mềm của họ là mã nguồn mở, nhưng hình ảnh HĐH của họ cố chạy Linux với GUI ở 320x240 và thất bại thảm hại. Là một thiết bị thứ 2 có thể ổn, tôi đã không sử dụng nó trong một vài năm. Xem người đàn ông mknod.
Alan Corey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.