web-dev-qa-db-ja.com

単純な画面/モニターデバイスに使用されるLinuxドライバーサブシステム/ APIは何ですか?

タッチスクリーン付きの組み込みシステムを開発しています。タッチスクリーンは入力と出力の両方として機能し、「仮想」キーボードがグラフィック出力をオーバーレイします。

kernel.orgのこのガイド を使用して作成された、タッチセンサーからの入力を読み取り、それをキープレスに正しく変換する機能するデバイスドライバーがあります。このドライバーを拡張して、画面への画像出力も処理したいと考えています。

できるだけ少ない重複でgettyとXの両方をサポートしたいと思います。私は、ミニマルXなどの、厳選されたパッケージで最小のDebianバリアントを実行しています。パブリックGitHubリポジトリにダンプする可能性がありますが、このドライバーをリポジトリパイプラインに入れようとするつもりはありません。

画面イメージの出力は、現在、危険な回避策を介して行われています。ディスプレイに接続されていないにもかかわらず、CPUの組み込みグラフィックスハードウェアにレンダリングを強制するブートオプションと、そのバッファーを継続的に画面スクレイピングするデーモンが、いくつかの事前変更を変更します。キーボードビジュアルを作成するピクセルを定義し、それを実際の画面にプッシュします。

これは概念実証として機能し、画面デバイスが期待する言語を正しく理解していることを証明していますが、明らかに最適ではありません。

kernel.orgには、「DRM」デバイスドライバーのガイドもありますが、私のハードウェアで可能なことは、次のように深刻なようです。

Linux DRMレイヤーには、複雑なグラフィックスデバイスのニーズをサポートするためのコードが含まれており、通常、3Dグラフィックスアクセラレーションに適したプログラム可能なパイプラインが含まれています。

私のハードウェアには3Dアクセラレーションに似たものは何もないので、これはおそらく私が望んでいるものではないと結論付けます。

どのサブシステム/ APIを使用すればよいですか?欠落している用語の1つが私の検索を妨げているものだと思いますが、これを達成する方法についての情報がありましたら、いただければ幸いです。

ハードウェアの詳細(おそらく無関係):CPUと画面は、8080-esqueパラレルプロトコルを介して通信します。CPUはネイティブでサポートしていないため、エミュレートしています。 GPIOを使用して(mmapを介してレジスターを操作して)。

完全な画面画像の送信には約20ミリ秒かかりますが、埋め込みグラフィックバッファから完全なコピーを取得するには約180ミリ秒かかるため、そのステップをスキップすることが最も重要な目的です。画面ハードウェアには、フレーム全体のデータを保持するのに十分な [〜#〜] sgram [〜#〜] メモリが含まれており、長方形のサブ領域の書き込みをサポートしているため、パーツのみを更新するフック変更された画面の方が望ましいでしょう。

画面は、着信データのタイミングに特別ではありません。タッチセンサー入力は、CPUがサポートする I²C を介してCPUと通信する専用のICによって処理されます。現在のドライバーはlinux/input-polldev.h インターフェース。 CPUはBroadcom BCM2835 、画面は埋め込みHimax HX8357 コントローラー付きのTFT、タッチスクリーンセンサーデコーダーはST STMPE61 、およびHX8357とBCM2835の間には、電圧レベルシフター(Nexperia 74LVCH245A )があります。詳細はご要望に応じてご提供いたします。

9
memtha

不足している用語は framebuffer device です。 kernel.orgのドキュメント here を見つけることができます。

2
LasseF-H