免責事項:私はTexas Instruments Forumでこの質問をクロスポストしていますが、私は5日間何の応答も得ていません。私は組み込みプログラミングにはかなり新しいので、追加情報が必要な場合や、私のアプローチが無意味である場合は、指摘してください。仮想アドレスを物理アドレスに戻してマップします
動機
Iを有する組み込み機器を有するDM3730 processor from Texas Instrumentsプロセッサは、ディスプレイサブシステム(DSS)を介してLCDディスプレイに接続されます(のBeagleBoardの-Xmで見つける同じ)。ディスプレイは非常に暗く見え、ガンマ補正しなければなりません。幸いにも、DSSにはパレット/ガンマルックアップテーブルがあります。残念ながら、私はそれを動作させることができません。私は同等のプロセッサとTIの従業員のためにテキサス・インスツルメンツフォーラムにsimilar questionを見つけ
を見つけた何
は(強調鉱山)以下の説明を与えた:
を移入する必要があるかもしれません私はありません現行のLinuxカーネルでカラーインデックス付きグラフィックスがサポートされていると思いますが、アプリケーションレベルから直接登録設定を使用して有効にするのはかなり簡単です。
[...]
次に、256個の符号なし整数の配列を宣言し、各カラーインデックスエントリの希望RGB値を移入。あなたはおそらくバックそれをマッピングする必要がありますので、これは物理アドレスではなく仮想アドレスを必要とする以前に構成されたアレイ(注1、の物理アドレスへ
設定DISPC_GFX_TABLE_BA。注2、これは32にする必要がありますビット整列アドレスのでアレイが作成される方法に応じて、チャーわずかに大きいのアレイを作成し、開始が32ビット境界になるように配列)
[...]
彼は後でアドレスを翻訳するためにmem_utilを参照し、私は使用することができましたこれをアプリケーションレベル(ユーザー空間)から直接レジスタに書き込むことはできますが、仮想アドレスを物理アドレスに「マップバック」する方法を理解することはできません。私は戻って仮想アドレスを物理アドレスにマッピングするにはどうすればよい
システム情報
~# uname -a
Linux dm37x-evm 2.6.32.1 #1 Fri Dec 2 11:19:53 EST 2011 armv7l unknown
私の質問
- ?
- これはユーザー空間で行うことができますか? (私はユーザーがガンマカーブを調整できるインターフェイスを提供することを構想しています)
- これは一般的なアプローチですか?これをカーネル空間に移すべきですか(私はLinuxカーネルで多くの経験がないので、これをするのは嫌です)
- 良いリソースや例があります!
私は自分のカーネルモジュールを書くべきだと思いますか、それとも既存のドライバに機能を追加するべきですか? drivers/video/omap/dispc.cは既にレジスタDISPC_GFX_TABLE_BAを定義していますが、使用しませんか? – Lucas
@ルーカスあなたはdispcドライバを使い、その中にコントロールを追加するべきですが、おそらくlinux-omapメーリングリストの助けを求めるべきです。実際には、ユーザー空間(つまり、ioctl、フレームバッファAPI、またはV4L2コントロール???)から正しい「エントリポイント」を見つけることは、おそらく最も難しい部分です。あなたはショートカットを取って最初に独自の非標準のioctlを追加して、それがどのようになっているかを見ることができます。カーネルの解決策は長期的には正しいです。 – shodanex
ありがとうございます。私はCMEMで作業するようにしましたが、私はそれをカーネル空間に移動する予定です。 – Lucas