Как я могу добавить дополнительное устройство с кадровым буфером в Linux?

15

Я использую Ubuntu 12.04 LTS в качестве домашнего NAS-сервера без X. Недавно я начал настраивать его для использования в качестве устройства воспроизведения видео. Возможно, в этот момент было проще установить X, но я решил попробовать mplayer с воспроизведением кадрового буфера. Это сработало, и все было хорошо и хорошо.

Однако из любопытства и, возможно, из-за практических последствий я не могу перестать думать о кадровых буферах. Кажется, есть только одно устройство кадрового буфера /dev/fb0. (Между прочим, я использую драйвер vesafs) Если я запускаю несколько программ, использующих кадровые буферы, возникает хаос. Например, запуск mplayer из fbterm просто дает сбой. Любопытно, что просмотрщик изображений fbi каким-то образом умеет просматривать изображения. Очевидно, что программы не могут совместно использовать устройство, в конце концов, нет никакой системы управления окнами.

Итак, ограничено ли количество (vesa) fb-устройств аппаратными устройствами отображения? Или может быть больше в принципе, как есть несколько ттис? Будет ли добавлена ​​еще какая-то помощь в запуске одновременно программного обеспечения, которое их использует? Как я мог добавить больше?

Также логика, как кадровые буферы связаны с ttys, мне не совсем понятна ... например, mplayer показывает свой видеокадр на каждом tty, а fbi - нет. Кроме того, консоль Ubuntu по умолчанию (fbcon?) Отображается за оверлеем видео, что мне кажется странным. О чем это все?

GolDDranks
источник

Ответы:

18

Так как никто еще не ответил, и после утомительных часов поиска в Google и тестирования, я понял предмет, я собираюсь ответить на него ...

Поскольку интерфейс устройства фреймбуфера довольно общий, в принципе может быть больше устройств fb. Однако, поскольку драйвер VESA, который я использовал, обеспечивает прямую связь между определенным аппаратным устройством и файлом устройства кадрового буфера, не имеет смысла иметь их больше, чем у реальных устройств.

Есть драйвер для виртуальных устройств с кадровым буфером, vfb. (Примечание: отличается от xvfb, который является виртуальным кадровым буфером для X). Я сам не проверял это, но можно использовать столько устройств fb, сколько нужно, используя виртуальное устройство. Я также думаю, что ничто в принципе не мешает подключить виртуальное устройство к аппаратному устройству кадрового буфера, позволяя построить мультиплексор кадрового буфера

По поводу связи между кадровыми буферами и tty: нет. Кадровый буфер просто выводится на экран, не обращая внимания ни на что.

Что меня изначально смутило, так это поведение программы просмотра изображений fbi. Оказывается, он ловко проверяет, открыт ли tty, в котором он запущен, или нет, и в соответствии с этим обращается к кадровому буферу. (Вот почему он отказывается работать по SSH, в отличие от mplayer - он не принимает псевдотерминал.) Но функциональность, подобная мультиплексору, не имеет ничего общего с самим кадровым буфером.

Если есть несколько процессов, пишущих в кадровый буфер, они не блокируют друг друга . Оказывается, мои более ранние проблемы (сбои и тому подобное) при одновременном использовании нескольких программ fb даже не касались кадрового буфера. Возьмите терминал fbterm и запустите с него mplayer: нет проблем. Терминалы fbterm и fbcon и просмотрщик изображений fbi рисуют в буфер только при обновлении, поэтому mplayer доминирует на экране практически 100% времени. Но если вы попытаетесь запустить два mplayer, вы получите представление, которое мерцает, показывая кадры одного и другого, когда они пытаются нарисовать буфер, имеющий состояние гонки.

Несколько полезных ссылок:

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

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

GolDDranks
источник
Если у вас маленький ЖК-дисплей второго уровня в качестве вторичного (например, 320x240 пикселей, 3 дюйма), для этого имеет смысл использовать fb1. У меня есть маленький Adafruit adafruit.com/product/1601, который использует (только) fb1. Их программное обеспечение с открытым исходным кодом, но их образ ОС пытается запустить Linux с графическим интерфейсом в 320x240 и терпит неудачу. Как второе устройство, это может быть хорошо, я не использовал его пару лет. Смотри мужик, мкнод.
Алан Кори