1104108_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1104108_ja-JP

1104108_ja-JP

iMX6QD Androidで24ビットLVDSサポートを追加する方法<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

はじめに

データフローを駆動するLVDSディスプレイパネル:

Picture2.png

ディスプレイ品質:

Androidの24ビットLVDSディスプレイパネルで最高の表示品質を得るには、 32ビットフレームバッファを使用し、IPUv3ディスプレイエンジンとLDBが24ビットピクセルを出力するようにする必要があります。

表示を有効にするための2つのステージ:

Ubootスプラッシュスクリーンとカーネルフレームバッファ

ガイドライン


Ubootプラッシュ画面:

変更は、board/ freescale /mx6q_sabresd/mx6q_sabresd.c などのボード ファイルで行う必要があります 。

1. 新しい 24bit LVDS ディスプレイ パネルの仕様に従って 、struct fb_videomode でビデオ モードを設定します(このドキュメントの最後にある例を参照してください)。

2. lcd_enable() pwm, iomux /display 関連のクロックツリー を設定します。 これらは、スムーズなUI移行をサポートするためにカーネル設定に合わせる必要があることに注意してください

Ubootのスプラッシュ画面からカーネルフレームバッファ

3. ipuv3_fb_init()を呼び出す際に 、IPUv3ディスプレイエンジンとLDBの出力ピクセルフォーマットをIPU_PIX_FMT_RGB24に設定します 。

4. ipuv3_fb_init() を呼び出すときは、新しい 24bit LVDS ディスプレイ パネルの仕様に従ってピクセル クロックを設定します

5.タフなディスプレイビデオモード(高解像度または高ピクセルクロック周波数)をサポートするためにデュアルLDBチャネルが必要な場合は 、2つのLDBの両方を有効にする必要があります

チャネルを作成し、LDB を分割モードで動作するように設定します。レジスタLDB_CTRL lcd_enable()でそれに応じて設定する必要があります。


Kernel framebuffer:

カーネル ブートアップ コマンドラインに 'video=' と ' ldb =' オプション を追加できるので、カーネルコードは Uboot コード よりもさまざまな表示色深度を持つさまざまな LVDS ディスプレイパネルを柔軟に処理できます 。'video=' と ' ldb =' オプションの詳細については、MXC Linux BSP リリースノートと Android ユーザーガイドを参照してください。いくつかの既知のポイントは次のとおりです。

1. 新しい 24bit LVDS ディスプレイ パネルの仕様 に従って、 drivers/video/ mxc / ldb.c の struct fb_videomode に ビデオ モードを追加します (次の例を参照してください)。

このドキュメントの終わり)。

2.プラットフォームコードで pwm バックライト/ディスプレイ関連の iomux を設定します 。

3. カーネル ブートアップ コマンドライン で適切な「video=」オプションを設定します 。

       video=mxcfb0:dev=ldb,LDB-NEW,if=RGB24,fbpix=RGB32

4. カーネルブートアップコマンドラインで、タフなディスプレイビデオモードをサポートするために デュアルLDBチャンネル が必要な場合、 適切な「 ldb =」オプション を設定します 。

       ldb=spl0 (IPUv3 DI0を使用) または ldb=spl1 (IPUv3 DI1を使用)

5. カーネル ブートアップ コマンドライン で適切な「fbmem=」オプションを設定して、フレームバッファ用に十分な メモリ を確保します 。たとえば、1280x800 LVDS パネルを使用するとします

fb0 で fb0 が RGB32 ピクセル形式の場合、 式が次のとおりであるため、'fbmem=12M' を使用する必要があります。

       fbmem= 幅*高さ*3(トリプル BUF)*Bytes_per_pixel= 1280*800*3*4B=12MB

構造体 fb_videomode を設定する例:

実際の1280x800@60 24ビットLVDSパネル仕様から引用されたタイミングの説明を見てみましょう

Picture3.pngPicture4.png

また、標準の linux struct fb_videomode include/linux/fb.h で定義されています

構造体 fb_videomode {

const char *名前;      /*随意*/

U32リフレッシュ;           /*随意*/

        u32 xres;

        u32 yres;

U32 pixclock;

        u32 left_margin;

U32 right_margin;

        u32 upper_margin;

U32 lower_margin;

        u32 hsync_len;

        u32 vsync_len;

U32同期;

        u32 vmode;       

        u32 flag;

};

必要なことは、 LVDS ディスプレイ パネルの仕様のタイミング記述 に従って 、struct fb_videomode のすべてのフィールドを正しく設定 することです。

1.name: 'LDB-WXGA' に設定できます。

2.更新:オプションですが、一般的な値、つまり60(60Hzのリフレッシュレート)に設定できます。

3.xres: アクティブな幅、つまり 1280。

4.yres: アクティブな高さ、つまり 800。

5.pixclock:次の式で計算します– pixclock=(10 ^ 12)/clk_freqここでは、通常、この例では 、pixclock=(10^12)/71100000=14065です。

   6. left_margin/right_margin/hsync_len:

       仕様ではHSバックポーチ(HBP)/ HSフロントポーチ(HFP)/ HS幅(HW)と同じです。仕様は私たちにそれを教えるだけなので、通常は

HBP+HFP+HW=160 です。left_margin=40、right_margin=40、hsync_len=80 と設定できます。

   7. upper_margin/lower_margin/vsync_len:

水平タイミングと同様に、垂直タイミングは upper_margin=10lower_margin=3、 vsync_len=10 に設定できます。

8.sync:タイミングチャートはhsync / vsyncがアクティブローであることを示しているため、FB_SYNC_HOR_HIGH_ACTまたは

FB_SYNC_VERT_HIGH_ACT。また、 クロック 極性とデータ極性は無効であるため、ここでは同期をゼロに設定します

9.vmode:これはプログレッシブビデオモードなので、vmodeをFB_VMODE_NONINTERLACEDに設定します

10. フラグ:ビデオモードはドライバーによって提供されるため、フラグをFB_MODE_IS_DETAILEDに設定します

グラフィックスとディスプレイi.MX6Duali.MX6Quad日時:iMX6QDのAndroidで24ビットLVDSサポートを追加する方法<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

私は問題を見つけました、それはpixclockが40MHzまでしか設定できないようです、40MHzより低く、それは常に40MHzを出力しています、そして私の液晶は27MHzから32Mhzでしか動作できません

日時:iMX6QDのAndroidで24ビットLVDSサポートを追加する方法<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

20160624143341.pngQQ图片20160624143437.png

日時:iMX6QDのAndroidで24ビットLVDSサポートを追加する方法<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

チュートリアルをいただきありがとうございます。しかし、私が見るように、それは "ldb.c"ので、Android Lollipopリリースには適用されませんは異なります。

私の場合、 タイミングは問題ありませんEDIDをサポートしていないLVDSパネルがあります。デフォルトの解像度を1024x768から1024x600に変更したいだけです。lvdsパネルは正常に機能しますが、底部はパネルの外側にとどまります。Android Lollipopでこれを修正するにはどうすればよいですか?

日時:iMX6QDのAndroidで24ビットLVDSサポートを追加する方法<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

こんにちは、

この詳細なガイドをありがとう、非常に役に立ちました!

しかし、私は私のピクセルクロックに任意の変更を見ることができないようです、あなたはあなたのu-bootステップ#4 "4について詳しく教えてください。ipuv3_fb_init()を呼び出すときは、新しい24bit LVDSディスプレイパネルの仕様に従ってピクセルクロックを設定します

これは実際にはどのように行われるのでしょうか?u-bootでどのファイルを変更する必要がありますか。何を変更しても、常に75MHzを出力しているように見えます。メインラインのu-boot 2014-10ソースを使用しています。

ありがとうございます

パトリック

Tags (1)
No ratings
Version history
Last update:
‎01-06-2026 12:58 AM
Updated by: