質問: 組み込みLinuxやUNIXのGUIについて質問です。 工業機器やカーナビ、ゲーム機などLINUX/UNIXで動いているアプリケーションのGUIはどのように描画されているのですか? 起動時にGNOMEやMATE、XFCEのようなX Windowデスクトップは見えないですが、Xウィンドウマネージャー上に描画しているのでしょうか? それともXlibの上、もしくはX.org上に直接描画しているのでしょうか。 抽象的な質問ですが、お教えいただけると幸甚です。 よろしくお願いいたします。 追記:組み込みという表現が少し誤解を与えてしまったかもしれません、例えばTeslaのセンターディスプレイや、PlayStationのメインメニューなどのような高解像度なグラフィックを想定して質問させていただきました。
回答: 関係者(中の人)が答えてくれるのがベストですが、外側から考えると以下のようになるでしょう。 **フレームバッファという技術を使う** fb/framebuffer.txt > > Linuxフレームバッファ(fbdev)は、グラフィックをハードウェアに依存しない抽象レイヤで、コンピュータのモニタ(通常はコンソール)に表示します。 > > フレームバッファという語は現在のビデオフレームを含むビデオメモリの一部を意味し、LinuxフレームバッファはSVGALibや他のユーザ空間ソフトウェアのようなシステム特有のライブラリに頼ることなく、「Linuxカーネルの下でのフレームバッファへのアクセス方法」を意味します。 > > > グラフィックスデータ用のメモリが(少し工夫は必要だが)普通のメモリのようにアクセスできるので、そこにGUIのデータを直接書いて行く方法 使い方例:ラズパイでフレームバッファ(/dev/fb0)を使用して、直接ディスプレイ画像を入出力する 少し古いですがツールの調査:組込み機器向けHMI/GUIツール調査(2017.10時点) 上記記事に出ていた中の、いくつかのツールの紹介ページ(製品によっては次のコマンド直接送信サポートも含むかも) * Qt for Embedded Linux / 組み込み Linux のサポート * TouchGFX * GENWARE * EMConnect / EMBrowser * exbeans UI Conductor * QNX® SDK for Apps and Media(アプリとメディア用QNX® SDK) * Crank Storyboard Suite ライブラリ情報 * Choosing a GUI Library for Your Embedded Device * Microwindows or the Nano-X Window System * LittlevGL - Open-source Embedded GUI Library * MiniGUI * μGFX * GLG Toolkit **表示装置の制御コマンドを直接送信する** シリアル(RS232/RS422/I2C/SPI/etc.)/パラレル等に接続された表示装置の提供している制御方法でコマンド&データを作成・送信して表示を行う 表示装置の設計次第で、低機能(キャラクタ/ビットデータ)から高機能(Canvas/SVG相当や3D/アニメーション等)まで様々なバリエーションが考えられる メーカーがライブラリや開発環境/ツールを提供していたりする 例えば:128×64モノクログラフィックLCDシールド / LCDドライバICのデータシート グラフィック組込みモジュール 組込み機器の可能性を無限に引き出すグラフィックスLSI「AG10」 グラフィックLCD開発ソフトウエア Visual GLCD [GLCD-1A]