Mam więc model Palm Pre (oryginalny P100EWW), w którym włączyłem tryb programisty i zainstalowałem chroota Debian Squeeze. Działa świetnie. Planuję używać tego do WSZYSTKIEGO (bittorrent peer, serwer WWW), ale do telefonu.
Zauważyłem, że jeśli to zrobię cat /dev/urandom > /dev/fb0
, faktycznie zapisuje na ekranie losowe piksele, dopóki nie No space left on device
zostanie wygenerowany błąd. Wspaniale, teraz mogę korzystać z wyświetlacza.
Więc jakie są zastosowania, które albo A) pozwolą użyć / dev / fb0 jako konsoli, z której mogę wypisywać tekst lub B) renderować tekst na / dev / fb0 z linii poleceń.
Nie wiem jeszcze o ponownej kompilacji jądra (chciałbym w końcu całkowicie wyłączyć WebOS i przekształcić go w minimalny serwer ARM), więc pytam o narzędzia przestrzeni użytkownika, jeśli istnieją. Wolałby również renderować bezpośrednio do / dev / fb0 i nie używać X.
źródło
Odpowiedzi:
Aby użyć bufora ramki jako konsoli, potrzebujesz
fbdev
modułu. Może być konieczne ponowne skompilowanie jądra.Może Cię również zainteresować projekt DirectFB, który jest biblioteką, która ułatwia korzystanie z bufora ramki. Istnieją już napisane aplikacje i środowiska GUI.
źródło
dfbg
które pozwala mi umieścić tam zdjęcie (i nie usuwa go po ukończeniu jakfbi
). Wiem, że prawdopodobnie mogę znaleźć narzędzie do utworzenia pliku .png lub podobnego z tekstu blokowego, więc może to po prostu zadziałać ...Kilka osób odpowiedziało na części twojego pytania dotyczące jądra i umieszczania obrazów (a nie tekstu) w buforze ramki, ale jak dotąd reszta pozostaje bez odpowiedzi. Tak, możesz użyć podsystemu wirtualnego terminala jądra, aby utworzyć tak zwaną konsolę bufora ramki . Istnieje jednak kilka narzędzi, które pozwalają używać urządzenia buforującego ramki do tworzenia wirtualnych terminali w przestrzeni użytkownika . Obejmują one:
console-terminal-emulator
Iconsole-fb-realizer
narzędzia w nosh - przestrzeni użytkownika wirtualnego terminala na celu replikowania wirtualnych terminali Linuksa i FreeBSD / PC-BSD jądra. To także nie ma zależności od bibliotek X.logind
serwerem w systemie i jego pojęciem „miejsc”.Ali Gholami Rudi w szczególności wyprodukował coś więcej niż tylko emulator terminala do pracy z buforowaniem ramek. Napisał także przeglądarkę plików PDF bezpośrednio do ramki, przeglądarkę VNC, odtwarzacz multimediów i czytnik Koranu.
Pełne porównanie obok siebie wykracza poza zakres tej odpowiedzi; ale oto kilka punktów, które są istotne dla pytania:
fbpad
a narzędzia nosh z założenia nie korzystają z żadnych bibliotek X.bdftobogl
narzędzia można konwertować czcionki BDF na czcionki BOGL ; a jeden konwertuje TTF na czcionki „tinyfont”, które są używane przez fbpad za pomocą narzędzia ft2tf ( Arch ).console-fb-realizer
Narzędzie nosh używa tych samych czcionek „vt”, co nowy podsystem terminala wirtualnego jądra FreeBSD 10.1 , a zatem udostępnia narzędzievtfontcvt
do manipulacji czcionkami FreeBSD do konwersji czcionek BDF.console-convert-kbdmap
narzędzia konwertuje się pliki BSD kbdmap na ten format . Ponownie, te pliki kbdmap są używane w podsystemie FreeBSD / PC-BSD vt .login
./etc/ttys
(BSD),/etc/inittab
(Linux system 5init
) lub innym systemem, do którego pozostawiają zadanie spawnowania getty / login / shell.console-fb-realizer
potrzebuje tylko wystarczających uprawnień do otwarcia bufora ramki i urządzeń zdarzeń wejściowych, które nie muszą być uprawnieniami administratora, oraz dostępu do przechowywanych przez FIFO i zwykłych plikówconsole-terminal-emulator
, co z kolei nie wymaga żadnych specjalnych uprawnień.Wszystkie te są oczywiście terminalowymi emulatorami . Jeśli chcesz usunąć emulację terminala i umieścić tekst bezpośrednio w buforze ramki, masz kilka możliwości:
console-terminal-emulator
.console-fb-realizer
używa pliku wyświetlanego z tablicą komórek znakowych, jak/dev/vcsa*
zwykły plik (nie jest to plik specjalnego urządzenia znakowego), z punktami kodowymi Unicode, atrybutami ECMA-48 i 24-bitowym kolorem RGB. Można go więc uruchomić i po prostu napisać znak + atrybut + kolor bezpośrednio w pliku tablicy komórek znakowych, umożliwiającconsole-fb-realizer
renderowanie czcionek do bufora ramki.Na marginesie: zauważ , że jest to przeciwieństwo integracji z BRLTTY , który używa,
console-terminal-emulator
ale nie działaconsole-fb-realizer
.źródło
fbcon
- w zależności od opcji czasu kompilacji . Dotyczy to również ich zależnego emulatora terminali. Terminologia : Działa bezpośrednio w buforze ramki linux (fbcon) . Inne niżterminology
, I drugikmscon
(i innych pracach Davida Herrmanna) zalecenia siebie .Jeśli potrafisz
/dev/urandom > /dev/fb0
wyskakiwać na ekranie losowe piksele, masz wszystko, czego potrzebujesz.W moim przypadku musiałem zrzucić trochę informacji tekstowych. Przetestowałem to na busyboksie i raspi, więc może ci się przydać. Odpowiedź może być nieco długa, ponieważ jeśli nie używasz konsoli, musisz samodzielnie wydrukować piksele znaków. Na szczęście ktoś wykonał ciężką pracę, więc musimy ją po prostu połączyć.
W busybox lub w raspi powinieneś mieć plik
fbset
binarny. Może to pomóc w ustaleniu ustawień jako wymiarów ekranu.W moim osadzonym wygląda to tak:
Ważną częścią jest tutaj szerokość 480 i wysokość 272 pikseli.
Jak wspomniałeś, możesz wypełnić ekran za pomocą
cat /dev/urandom > /dev/fb0
i możesz to wyczyścić
cat /dev/zeros > /dev/fb0
Niż wyczyść ekran, musimy upewnić się, że prawidłowo uzyskasz wymiary.
Przez przypadek mój busybox miał plik binarny fbsplash, który pobierał jako plik wejściowy .ppm.
Poprawnie, jeśli się mylę, ale wygląda na to, że
fb0
akceptuje ten format. Patrząc na Portable Anymap na Wikipedii , istnieje kilka „podformatów” ... fbsplash używa fantazyjnego z kolorami i tak dalej ... ale chcemy móc po prostu wydrukować coś czytelnego. Dla uproszczenia użyjmy P1 zakodowanego w ASCII. Gdybyśmy mogli wydrukować linię pionową, wiedzielibyśmy, że nasze wymiary są prawidłowe. Spróbujmy:Linia pionowa w ppm typu P1 powinna wyglądać następująco:
Tak więc będzie 272 wierszy o szerokości 959 znaków. Dokumentacja mówi, że powinna być 1 zamiast f ... na busyboksie, a raspi f był jaśniejszy.
Ważne jest, aby po zerach nie było miejsca ... To zadanie może być trochę nudne ... lepiej użyj edytora tekstu, który ci pomoże. W vimie możesz skopiować pierwsze dwa wiersze, przejść do trybu poleceń (esc), a następnie wpisać następujące znaki:
Oczywiście używam swoich wymiarów, powinieneś użyć swoich. Cat ten plik do
/dev/fb0
, powinien wyglądać następująco:Ok, oszukuję ... to nie jest tylko jedna linia ... to jest około 8 ... ale kiedy to nie działa (mamy złe wymiary lub na końcu mamy spację, posiadanie tylko jednej linii to dużo łatwiej).
Jeśli zaszedłeś tak daleko, musimy po prostu wydrukować odpowiednie piksele, aby zobaczyć je w postaci znaków. Dzięki Marcelowi Sondaarowi i jego repozytorium na GitHub nie będziemy musieli rysować każdego znaku.
Po drobnej poprawce rozwinął swój prosty program do drukowania
f
zamiastX
i0
zamiast spacji, wstaw spacje między każdym znakiem, dodaj nagłówek, a my mamy plik .ppm z literą odpowiadającą jego kodowi znaków.Jeden mały krok dalej i nie dostajesz znaku jako wejścia, ale wiersz. Cat plik, potok do swojego programu i wyjście do,
/dev/fb0
a otrzymasz wynik tekstowy:Testuję to rozwiązanie również na Raspberry Pi i zadziałało. System mówi mi, że nie mam reputacji, aby publikować więcej niż 2 linki. Dopóki tego nie otrzymam, musisz polegać na moim słowie: D
źródło
Po stronie konsoli możesz echo rzeczy
/dev/console
lub możesz użyć syslog, aw zależności od różnych innych ustawień, może pojawić się na konsoli.W przypadku obrazów właśnie próbowałem przechwycić plik bmp do fb0 i faktycznie zadziałało! (sortof - wiele kopii, mniejszy rozmiar)
Tutaj znalazłem program bmp-to-framebuffer . To powinien być doskonały przykład formatu, którego oczekuje fb0. Istnieje również
fbi
program do zapisu bezpośrednio do bufora ramki.źródło
fbi
pozwala mi umieścić obraz na ekranie, co jest przydatne, ale usuwa bufor ramki po wyjściu.To stary post, ale rozumiem, że normalnie potrzebujesz konsoli bufora ramki (fbcon), aby uruchomić konsolę na buforze ramki. Jest w konfiguracji. (sterowniki urządzeń / grafika / wyświetlacz konsoli ..)
źródło