Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。910件71組み込みLinuxやUNIXのGUIについて質問です。Windowデスクトップは見えないですが、Xウィンドウマネージャー上に描画しているのでしょうか?それともXlibの上、もしくはX.org上に直接描画しているのでしょうか。抽象的な質問ですが、お教えいただけると幸甚です。追記:組み込みという表現が少し誤解を与えてしまったかもしれません、例えばTeslaのセンターディスプレイや、PlayStationのメインメニューなどのような高解像度なグラフィックを想定して質問させていただきました。票3関係者(中の人)が答えてくれるのがベストですが、外側から考えると以下のようになるでしょう。フレームバッファという技術を使うfb/framebuffer.txtLinuxフレームバッファ(fbdev)は、グラフィックをハードウェアに依存しない抽象レイヤで、コンピュータのモニタ(通常はコンソール)に表示します。フレームバッファという語は現在のビデオフレームを含むビデオメモリの一部を意味し、LinuxフレームバッファはSVGALibや他のユーザ空間ソフトウェアのようなシステム特有のライブラリに頼ることなく、「Linuxカーネルの下でのフレームバッファへのアクセス方法」を意味します。個の銅バッジ返信遅れてしまいすみません。表示装置の制御コマンドを使用するのはArduinoみたいなマイコンで使うことがメインだと思ってましたが、Linuxなどでも使われるのですね。フレームバッファという存在は全く知らなかったです。参考になります、ありがとうございます。|4モノによって異なります。組み込みだからといってXが使われないわけではありません。通常のX+ウィンドウマネージャの構成だが、アプリケーション自体またはウィンドウマネージャのキオスクモード的な機能により1ウインドウに見せかけているものXで動くが、ウィンドウマネージャを使わないものXを使わずに、Linuxのフレームバッファのような、OSのグラフィックス抽象レイヤを操作するものグラフィクスハードウェアを直接または専用のライブラリ経由などで操作するもの上の方が高機能でできることは増えますが要求するリソース(プロセッサのパフォーマンス、消費電力、メモリ、フットプリント、その他)は大きくなります。逆の見方をすると、リソースに余裕があるなら上の方のやり方を選択するほうが(一般には)簡単です。リソースが限られている場合(または、リソースをギリギリまで使うためにオーバーヘッドを排したい場合)は必然的に下の方を選択せざるを得ないことになります。Qtのように、2.3.の違いをある程度隠蔽してくれるGUIツールキットを使うことで、開発段階ではXで動かし、実機ではXなしということもあります。Windowデスクトップは見えないですが、Xウィンドウマネージャー上に描画しているのでしょうか?ここは若干誤解があるように思います。Xのウィンドウマネージャは、アプリケーションに対しては(すごく大雑把に言うと)枠をつけているだけです。アプリケーションの中身の描画はウインドウマネージャではなくXのレイヤで行われています。ウインドウマネージャをすげ替えても動くわけです。それともXlibの上、もしくはX.org上に直接描画しているのでしょうか。組み込みかどうかは関係なく、X.orgを直接操作する(=自前でXプロトコルをしゃべる)アプリケーションというのはほぼなく、Xlibやさらに上位のライブラリ経由です。個の銅バッジ1−4はそれぞれ役割が異なりリソースなどで選んでいるわけではありません。3−4のレイヤーは特にセキュリティー面が考えられたレイヤーになっています。layerからhwに合った形に加工します。その際に1などは組み込み機器がサポートされていない場合などがあり使えないケースが出てきます。17:454のレイヤーで操作される組み込みでつかわれるようなデバイスにセキュリティ機能はありませんし、3でもパーミッション程度の極めて限定されたものです。逆にXには(ほぼ使われませんが)認証の仕組みがあります。アプリケーションがハードウェアを意識しなければならないのは4のレイヤーで操作されるデバイスの場合で、3はデバイスドライバーとOSが、1,2はさらにXがそれぞれ下位のレイヤーを隠蔽するのでハードウェアを意識することは少なくなります。組み込み機器がサポートされていないので1が使えないというのはリソースによってアプリケーションの作り方が制約を受ける典型的な例です。23:21ご回答ありがとうございました。色々な手段があるのですね、キオスクモードというのも知りませんでした。セキュリティ面の違いもあるのですね。個人的にはあまりにも低レベル層で作るのは骨が折れそうなので、1,2などを参考にさせていただきます。ありがとうございました。|2昔から組み込みにもGUIはたくさんあります。XWindowSystemやアプリケーションを作成するSDKは最終的に1枚の画像データを生成します。その画像データをkernel層に渡しメモリにセットしLCDへ転送していきます。1枚の画像データを生成出来れば例えばopenglでプログラムを組んでlibglから得られた画像データをkernel層に渡しLCDへ表示すればGUI表示できます。質問にありましたがアプリケーションSDKやXWindowではキャンバス上に描画していくだけにすぎずその出来上がった画像データをLCDまで実際に描画するとは別物です。組み込みLinuxの描画というキーワードがあるので補足しますが、/dev/fb0(フレームバッファ)に書き込めば描画されるわけでは無く、/dev/fb0に書き込むとuserspaceからkernelspaceへシステムコールが行われ、kernel層では画像データを受け取りLCDなどへ転送する処理などを行っていきます。組み込み開発では、userspaceだけでなくkernelspaceの開発も入ってくる事の方が多いです。個の銅バッジご回答ありがとうございます。返信遅れてしまいすみません。知らない世界でした、ありがとうございました。|-2組み込みシステムは限られた容積、CPUパワーやメモリ容量で動作しなければならないという制約を受けます。Interface)だけのものも多いです。CUIであれば3本ケーブルのシリアル通信で入出力できるので小規模システムでも導入できます。回答としてずれているように思われます。1:46回答ありがとうございます。私が知りたかったのはGUIを持つものはどういう構成なのかでした。分かりにくい質問ですみません。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。