Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> LCD&フレームバッファの開発経験

LCD&フレームバッファの開発経験

  
 

フレームバッファデバイスキャラクタデバイス、&'の使用、ファイルレベル - ドライバ層&'、インターフェイスモード。 Linuxは、フレーム・バッファ・インターフェイスは、構造fb_info構造体が定義されているデバイスドライバ層です。ファイルレベルでは、Linuxは、以下の動作機能のために定義:プロセスを実行している構造体file_operations

ソフトウェア:
は、

ファイル・レベルで、ユーザーは構造体file_operationsにおける機能構造体file_operations操作を呼び出します。構造体は、[] xxxfb_init()の最初のコールfb_driversデバイスを初期化するためにデバイスを開くときに、ハードウェア・デバイス・FBは、また、ポインタ構造体fb_ops FBを登録カーネルまで動作するように間接的なコール機能をfb_ops;
< 。P> 1、現像工程とフレーム

関与ファイル:fb.h、fbmem.c、xxxfb.c

fb.h:構造、マクロ変数を定義し、

fbmem.c:一入口と、そのような構造体file_operationsなどのデバイスの初期化、のために、

のエントリポイント:

静的構造体{

のconst char型*名;

のint(* INIT)(ボイド);

のint(*セットアップ)(チャー*);

} fb_drivers [] __initdata = {

の#ifdef CONFIG_FB_YOURCARD

{" DRIVER_NAME" xxxfb_init、xxxfb_setup}、

#endifの

ファイル操作:

静的構造体file_operationsのfb_fops = {

所有者:THIS_MODULE、

読み:

ワット、fb_read儀式:fb_write、

のioctl:fb_ioctl、

のmmap:fb_mmap、

オープン:fb_open、

リリース:fb_release、

#ifdefのHAVE_ARCH_FB_UNMAPPED_AREA

get_unmapped_area:get_fb_unmapped_area、

#endifの

};

xxxfb.c:そのような構造体fb_infoとして、デバイスドライバは、ファイル自体を追加します。

エントリポイント関数:xxxfb_init; xxxfb_setup;

静的構造体fb_ops xxxfb_ops = {

所有者:THIS_MODULE、

fb_open:xxxfb_open、/*のみfbgen_get_fix、

fb_get_var:あなたはそれが何か* /

fb_get_fixを行う必要がある場合にのみxxxfb_release、/*:あなたはそれが* /

fb_release何かをする必要がある場合はfbgen_get_var 、

fb_set_var:fbgen_set_var、

fb_get_cmap:fbgen_get_cmap、

fb_set_cmap:fbgen_set_cmap、

fb_pan_display:fbgen_pan_display、

fb_ioctl:xxxfb_ioctl 、/*オプション* /

};フレームバッファデバイスが何であるか

2、

ウェルにグラフィックス・ハードウェア装置、グラフィカル・ユーザ・インターフェースを抽出することが可能なフレームバッファインタフェース。フレームバッファを使用すると、ユーザーのアプリケーションには良いグラフィックスを作ることができるようになります基礎となるドライバの深い理解を必要としません。

ユーザーのためには、差がない、ユーザはメモリとして

フレームバッファを
ことができ、他の及び/devの次装置であり、データがこのメモリに書き込まれてもよく、それはまた、ありますデータは、このメモリから読み出すことができます。

は、最初のフレームバッファマイナーは、第二のように1に等しいマイナーフレームバッファを登録すると、0に等しい登録されています。

3、フレームバッファの内部構造

データ構造:フレームバッファの機器は、次の4つのデータ構造に大きく依存しています。文のfb.hでこれらの3つの構造。

構造体fb_var_screeninfo

構造体fb_fix_screeninfo

構造体fb_info

第一の構成は、グラフィックスカードの特性を記述するために使用されます。これは、通常、ユーザーに設定されています。なお、表示画面の解像度、ピクセル当たりのビットの数といくつかの変数のタイミングを含みます。彼の党によって占められるスクリーンのピクセル数を定義XRES変数、yresはスクリーンによって占められるピクセルの数を定義し、BITS_PER_PIXELを表現するためのビットの数と、各画素を規定します。

第2の構造は、グラフィックスカードのハードウェア機能は、グラフィックカードユーザが選択を変更することができない定義され、そのハードウェア機能が落ち着くだろう。これは、画面バッファの物理アドレスと長さが含まれています。

第3の構造は、Linuxデバイス・ドライバ・レイヤ定義されたインタフェースのためのフレームバッファです。それは根本的な機能に加えて、データ記録装置の状態だけでなく、含まれています。各フレームバッファと対応するデバイス構造fb_infoあります。 MODENAMEは、前記デバイス、フォント名の表示フォントのためのメンバ変数名は、基礎となるオペレーティング機能を指すようにポインタをfbops。グラフィックスフレームバッファの独立したデバイスの現在の状態、およびグラフィックスカードは、この場合には、2つのフレームバッファを有していてもよく定義し、それは二つの構造fb_info必要があります。これは、目に見えるカーネル空間でのみの構造です。

4、独自のデバイスドライバフレームバッファ
を設計

ユーザーが最初に

静的構造体{

のconst char型
fbmem.cするには、次のコードを追加する必要があります*名;

のint(* INIT)(ボイド);

のint(*セットアップ)(チャー*);

} fb_drivers [] __initdata = {

の#ifdef CONFIG_FB_YOURCARD

{" DRIVER_NAME" xxxfb_init、xxxfb_setup}、

#endifの

次にxxfb.c.におけるニーズに応じて、メモリサイズを再割り当て例えば:

の#define VIDEOMEMSIZE(×1024×1024 1)/* 1メガバイト* /

変数情報再びそれぞれのハードウェアの変更に記載の方法。主な変更点は、

xxfb_set_var(構造体fb_var_screeninfo * VAR、int型の詐欺、構造体fb_info *情報)機能を

5、最初のキャラクタデバイスを入力するときにメイクmenuconfigのではフレームバッファデバイスドライバ

を追加する方法を、Virtualterminalの内部を確認してください。あなたはLCD出力にコンソールをしたい場合は、仮想のコンソールのサポートをご確認くださいターミナル。 (その後、SH<におけるRCに入れ選択さMSH(MINIXシェル);の/dev /ttyS0に、ディスプレイ出力のシリアルポートを介してキー入力がLCDに表示させることができる。)

退避層インターフェースは、我々はあなたが彼らがそこに必要なフレームバッファデバイスを選択することができ、入力するEnterキーを押して、フレームバッファのサポートに分類されますカーソルを入力し、コンソールデバイスオプションを見ることができます。 (uClinuxをで、*はなく選択されたMより選択されるべきである場合)、自身が追加されたデバイスドライバの種類は、それがコンパイル時に対応の.oファイルを有することになります。高度な低レベルで

は、BPPパックピクセルサポートを構成し、その後、Selectcompiled-のフォントを選択することができすることができます。

などした後、あなたは下の/devに、このデバイスFB
を実行しているオペレーティングシステムが表示されます。それは主要な29のものでなければならない、マイナーな最初のデバイスはゼロでなければなりません。

Copyright © Windowsの知識 All Rights Reserved