Armadilloフォーラム

表示用のビデオ環境設定ファイルについて

okamoto_sc30

2015年5月26日 11時22分

お世話になっております。

現在、almaddilo-440を使用しておりますが、表示モニタにノイズのようなちらつきが出ており、
弊社プログラムが起動する前の電源投入直後のブートコマンド画面から出ております。
使用機能自体には支障ないのですが気になるレベルで出ております。

表示器含めたalmaddilo-440をアッセンブリ購入しましたメーカーによりますと、
ブートローダのバージョンが異なるため発生しているとのことです。
(納入時はブートローダV2.0.2でしたが、同ブートローダではQtプロジェクトがロードできず、
 弊社の別担当が過日当フォーラムで質問しV2.2.0を使用するよう回答いただきブートローダを更新いたしました)

購入元メーカーより、ビデオパラメータファイルが存在しており、
その調整で改善するのではないかとの情報をいただきました。
つきましては、以下情報がありましたらいただけますでしょうか。
・表示モニタ調整用のビデオパラメータファイルの場所とファイル名
・パラメータファイルの各項目内容
・変更した際に再構成が必要であればその手順・方法

以上よろしくお願いいたします。

コメント

at_takashi.sasayama

2015年5月26日 15時09分

笹山です。

> 現在、almaddilo-440を使用しておりますが、表示モニタにノイズのようなちらつきが出ており、
> 弊社プログラムが起動する前の電源投入直後のブートコマンド画面から出ております。

本現象ですが、LCDコントローラにてアンダーランエラーが発生している為に、
ちらつきが発生していると考えられます。

> つきましては、以下情報がありましたらいただけますでしょうか。
> ・表示モニタ調整用のビデオパラメータファイルの場所とファイル名
> ・パラメータファイルの各項目内容
> ・変更した際に再構成が必要であればその手順・方法

表示モニタ調整用のパラメーターは、以下のソースで設定できます。
また、後述する fbset コマンドでも設定ができます。

アンダーランを抑制するにはLCDのリフレッシュレートを落とすのが効果的です。
以下、Armadillo-440 液晶モデル開発セットを例に説明します。

■ パラメータの意味について

Armadillo-440 のデフォルト設定は、以下に定義されています。

linux-2.6.26-at25:drivers/video/mxc/mxcfb_modedb.c:121行目

"FG040360DSSWBG03", 60, 480, 272, 110229 ,35, 5, 6, 8, 5, 2, 

上記の各値は、以下の意味を持ちます。

FG040360DSSWBG03: 設定値の識別名
60:     リフレッシュレートの申告値
480:    Xレゾリューション (xres)
272:    Yレゾリューション (yres)
110229: ピクセルクロック  (pixclk, 単位:ps)
35: 左マージン (lm)
5:  右マージン (rm)
6:  上マージン (um)
8:  下マージン (dm)
5:  水平同期幅 (hs)
2:  垂直同期幅 (vs)

なおデフォルトの設定値は以下のカーネルコンフィギュレーションで選択できます。

Linux Kernel Configuration
    Device Drivers  --->
        Graphics support  --->
            <*> Support for frame buffer devices  --->
                <*>   MXC Framebuffer support
                        Default videomode (FG040360DSSWBG03)  ---> # ここで選択します

■ LCDのリフレッシュレート計算方法

LCD に出力するクロック (LSCLK) は、120MHz(UPLL 240MHz/2)を分周したものとなります。
分周する値(i.MX25 LCDC LPCR PCD)は、以下の式で算出できます。

PCD = 120MHz / (1sec / 110229ps) = 13.22748 

小数で分周はできないため、小数点以下を切り捨ててPCDは 13 として扱われます。
PCD を元に LSCLK を計算すると、以下のようになります。

LSCLK = 120MHz / 13 = 約 9.231MHz

LSCLK を元に LCDのリフレッシュレートを計算すると、以下のようになります。

LCDのリフレッシュレート = LSCLK / ((xres + lm + rm + hs) * (yres + um + dm + vs))
LCDのリフレッシュレート = 9.231 MHz / ((480 + 35 + 5 + 5) * (272 + 6 + 8  + 2)) = 約 61.052 Hz

計算の結果、LCDのリフレッシュレートは約61Hz に設定されていることがわかります。

PCD が 14 になるようにピクセルクロックを 120000 に設定すれば、リフレッシュレートは 約57Hz
PCD が 15 になるようにピクセルクロックを 130000 に設定すれば、リフレッシュレートは 約53Hz になります。

■ fbset コマンドによる確認

fbset コマンドを使用することで Armadillo上でビデオパラメーターを設定することができます。

armadillo-440 のユーザーランドに標準で含まれている fbset では、
正しく設定ができない為、以下の手順で debian 版の fbset を使用してください。

Download Page for fbset_2.1-24_armel.deb on EABI ARM machines
https://packages.debian.org/squeeze/armel/fbset/download

[armadillo]# wget http://ftp.jp.debian.org/debian/pool/main/f/fbset/fbset_2.1-24_armel.deb
[armadillo]# dpkg-deb -x fbset_2.1-24_armel.deb ./
[armadillo]# cd bin/
[armadillo]# ./fbset -xres=480 -yres=272 -t 110229 35 5 6 8 5 2
 
タイミングを指定している -t オプションの意味は、以下の通りです。
-t <pixclk> <lm> <rm> <um> <dm> <hs> <vs>

まずは、fbset コマンドで ピクセルクロックを変更し、リフレッシュレートを下げることで、ちらつきが改善しないかを確認してみてください。
改善した場合は、その値を drivers/video/mxc/mxcfb_modedb.c に反映させて、デフォルト値とするのが良いと思います。

■参考情報

fbset(8) - Linux man page
http://linux.die.net/man/8/fbset

at_takashi.sasayama

2015年5月26日 17時36分

笹山です。

fbset コマンドのオプションに不備がありましたので、以下の様に訂正します。
大変失礼しました。

誤)
[armadillo]# ./fbset -xres=480 -yres=272 -t 110229 35 5 6 8 5 2
 
正)
[armadillo]# ./fbset -xres 480 -yres 272 -t 110229 35 5 6 8 5 2