Итак, у меня есть модель Palm Pre (оригинальная P100EWW), в которой я включил режим разработчика и установил chroot Debian Squeeze. Работает отлично. У меня есть планы использовать это для НИЧЕГО (bittorrent peer, веб-сервер), но телефон.
Я заметил, что если я это сделаю, cat /dev/urandom > /dev/fb0
он на самом деле записывает случайные пиксели на экран, пока не No space left on device
будет сгенерирована ошибка. Круто, теперь я могу использовать дисплей.
Итак, какие существуют утилиты, которые позволят мне либо A) разрешить использовать / dev / fb0 в качестве консоли, на которую я могу выводить текст, либо B) отобразить текст на / dev / fb0 из командной строки.
Я пока не знаю о перекомпиляции ядра для этого (я хотел бы в конечном итоге полностью отключить WebOS и превратить это в минимальный сервер ARM), поэтому я спрашиваю инструменты пользовательского пространства, если они существуют. Также предпочел бы визуализировать напрямую в / dev / fb0 и не использовать X.
источник
Ответы:
Для использования кадрового буфера в качестве консоли вам понадобится
fbdev
модуль. Возможно, вам придется перекомпилировать ваше ядро.Вас также может заинтересовать проект DirectFB, представляющий собой библиотеку, которая упрощает использование кадрового буфера. Для этого уже есть приложения и среды графического интерфейса.
источник
dfbg
которая позволяет мне помещать туда картинки (и не удаляет их по завершении, какfbi
). Я знаю, что могу найти утилиту для создания .png или подобного из блочного текста, так что это может сработать ...Несколько человек ответили на части вашего вопроса, касающиеся ядра и размещения изображений (а не текста) в кадровом буфере, но пока остальное остается без внимания. Да, вы можете использовать подсистему виртуального терминала ядра для создания так называемой консоли кадрового буфера . Но есть несколько инструментов, которые позволяют вам использовать устройство кадрового буфера для создания виртуальных терминалов пространства пользователя . Они включают:
console-terminal-emulator
иconsole-fb-realizer
в nosh - виртуальный терминал в пользовательском пространстве, предназначенный для репликации виртуальных терминалов ядра Linux и FreeBSD / PC-BSD. Он также не имеет зависимостей от библиотек X.logind
сервером в systemd и его понятиями «мест».В частности, Али Голами Руди создал больше, чем просто эмулятор терминала для работы с фреймбуферами. Он также написал программу просмотра PDF с непосредственным доступом к кадрам, программу просмотра VNC, медиаплеер и программу чтения Корана.
Полное параллельное сравнение выходит за рамки этого ответа; но вот некоторые моменты, которые имеют отношение к вопросу:
fbpad
и инструменты nosh по своему дизайну не используют никаких библиотек X.bdftobogl
инструмента; и один конвертирует TTF в шрифты "tinyfont", которые используются fbpad с помощью инструмента ft2tf ( Arch ).console-fb-realizer
использует те же шрифты «vt», что и новая подсистема виртуального терминала ядра FreeBSD 10.1 , и, таким образом, использует инструмент манипулирования шрифтами FreeBSDvtfontcvt
для преобразования шрифтов BDF.console-convert-kbdmap
инструмента. Опять же, эти файлы kbdmap используются в подсистеме FreeBSD / PC-BSD vt .login
./etc/ttys
(BSD),/etc/inittab
(система Linux 5init
) или другой системой, которой они оставляют работу по созданию getty / login / shell.console-fb-realizer
нужны только достаточные привилегии для открытия фрейм-буфера и устройств ввода событий, которые не обязательно должны быть привилегиями суперпользователя, и для доступа к FIFO и обычным файламconsole-terminal-emulator
, которые поддерживаются , что, в свою очередь, вообще не требует никаких специальных привилегий.Все это, конечно, эмуляторы терминала . Если вы хотите убрать эмуляцию терминала и поместить текст непосредственно в кадровый буфер, у вас есть несколько вариантов:
console-terminal-emulator
.console-fb-realizer
использует файл дисплея с массивом символьных ячеек, как/dev/vcsa*
обычный файл (не файл специального символа), а с кодовыми точками Юникода, атрибутами ECMA-48 и 24-битным цветом RGB. Таким образом, можно запустить его и просто записать символ + атрибут + цвет непосредственно в файл массива символьных ячеек, позволяяconsole-fb-realizer
выполнять рендеринг шрифта в кадровый буфер.В качестве отступления: обратите внимание, что это противоположно интеграции с BRLTTY , который использует,
console-terminal-emulator
но не работаетconsole-fb-realizer
.источник
fbcon
- в зависимости от параметров времени компиляции . Это также верно для их зависимого терминального эмулятора Терминология : Работает непосредственно в кадровом буфере linux (fbcon) . Кромеterminology
, Я второйkmscon
(и другие работы Дэвида Herrmann) по рекомендации себе .Если вы можете ловить кошку
/dev/urandom > /dev/fb0
и получать случайные пиксели на экране, у вас есть все, что вам нужно.В моем случае мне нужно было сбросить некоторую текстовую информацию. Я проверил это в busybox и raspi, так что это может сработать для вас. Ответ может быть немного длинным, поскольку, если вы не используете какую-либо консоль, вам нужно будет самостоятельно распечатать пиксели символов. К счастью, кто-то проделал тяжелую работу, поэтому нам просто нужно объединить ее.
В busybox или в вашем raspi у вас должен быть
fbset
бинарный файл. Это может помочь вам узнать ваши настройки как размеры экрана.По моему встроено выглядит так:
Важной частью здесь является ширина 480 и высота 272 пикселя.
Как вы упомянули, вы можете выполнить экран с
cat /dev/urandom > /dev/fb0
и вы можете очистить его с
cat /dev/zeros > /dev/fb0
Чем очистить экран, мы должны убедиться, что вы правильно выбрали размеры.
Случайно у моего busybox был бинарный файл fbsplash, который получал в качестве входного файла .ppm.
Поправьте, если я ошибаюсь, но похоже, что
fb0
принимает этот формат. Взглянув на Portable Anymap в Википедии , есть несколько «подформатов» ... fbsplash использует причудливый цвет и т. Д., Но мы хотим иметь возможность просто напечатать что-нибудь читаемое. Давайте используем P1, закодированный в ASCII, для простоты. Если бы мы могли напечатать вертикальную линию, мы бы знали, что наши размеры верны. Давай попробуем:Вертикальная линия в ppm типа P1 должна выглядеть следующим образом:
Таким образом, будет 272 строки, 959 символов в ширину. Документация говорит, что это должно быть 1 вместо f ... на busybox, и raspi f был ярче.
Важно, чтобы у вас не было пробела после 0 ... Эта задача может быть немного утомительной ... вам лучше использовать текстовый редактор, который вам поможет. В vim вы можете скопировать первые две строки, перейти в командный режим (esc), затем ввести следующие символы:
Конечно, я использую свои измерения, вы должны использовать свои. Cat этот файл
/dev/fb0
, он должен выглядеть так:Хорошо, я обманываю ... это не просто одна строка там ... это около 8 ... но когда это не работает (у нас неправильные размеры или у нас есть место в конце, иметь только одну строку много Полегче).
Если вы продвинулись так далеко, нам нужно просто распечатать правильные пиксели, чтобы увидеть их в виде символов. Благодаря Марселю Сондару и его репо на GitHub нам не нужно рисовать каждый символ.
С помощью небольшой настройки вы можете развернуть простую программу для печати
f
вместоX
и0
вместо пробелов, вставлять пробелы между каждым символом, добавлять заголовок, и у нас есть файл .ppm с буквой, соответствующей его коду.Еще один маленький шаг, и вы получаете не символ, а строку. Cat файл, канал к вашей программе и вывод,
/dev/fb0
и вы получите текстовый вывод:Я тестирую это решение также на Raspberry Pi, и это сработало. Система говорит мне, что у меня нет репутации, чтобы публиковать более 2 ссылок. Пока я не получу это, вы должны полагаться на мое слово: D
источник
Со стороны консоли вы можете отображать информацию
/dev/console
или использовать системный журнал, и в зависимости от других настроек он может отображаться на консоли.Для изображений я просто попытался перевести файл bmp в fb0, и это действительно сработало! (sortof - несколько копий, меньший размер)
Я нашел программу bmp-to-framebuffer здесь . Это должно быть прекрасным примером формата, который ожидает fb0. Существует также
fbi
программа для записи непосредственно в буфер кадра.источник
fbi
позволяет мне поместить изображение на экран, что полезно, но оно очищает кадровый буфер после его выхода.Это старый пост, но я понимаю, что обычно вам нужна консоль framebuffer (fbcon) для запуска консоли на framebuffer. Это в конфигурации. (драйверы устройств / графика / дисплей консоли ..)
источник