Armadilloフォーラム

HDMIの解像度設定時のパラメータについて

e-yamada

2015年5月28日 15時39分

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

armadillo-840にて「1920x540」の解像度での表示を行いたいと考えております。

https://armadillo.atmark-techno.com/forum/armadillo/1004

https://armadillo.atmark-techno.com/forum/armadillo/1415

上記のトピックの内容も確認させていただきましたが、
modedb.cには「1920x540」の設定がなく、fbsetコマンド実行時のパラメータが不明です。

 fbset -xres 1920 -yres 540 -t ? ? ? ? ? ? ?

恐れ入りますが、パラメータの値もしくは算出方法をご教示いただけますでしょうか。

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

コメント

at_daisuke.sasaki

2015年5月28日 16時31分

佐々木大輔です。

> 上記のトピックの内容も確認させていただきましたが、
> modedb.cには「1920x540」の設定がなく、fbsetコマンド実行時のパラメータが不明です。

CEA Standard(CEA-861-D)などには、「1920 x 540」の解像度は定義されていません。

一般的なタイミングとしては、以下のような例があるようです。
http://www.mikrocontroller.net/attachment/248330/EDID_HDMI.txt

Descriptor #1 - Timing definition:
Mode = 1920 x 540 @ 60,053Hz
Pixel Clock............. 74,25 MHz Interlaced
 
                       Horizontal Vertical
Active.................. 1920 pixels 540 lines
Front Porch.............   88 pixels   2 lines
Sync Width..............   44 pixels   5 lines
Back Porch..............  148 pixels  15 lines
Blanking................  280 pixels  22 lines
Total................... 2200 pixels 562 lines
Scan Rate...............  33,750 kHz 60,053 Hz
 
Image Size..............  708 mm 398 mm
Border..................    0 pixels   0 lines
 
Sync: Digital separate with
* Positive vertical polarity
* Positive horizontal polarity

この例とfbsetのコマンドリファレンスに従うと、以下のようなコマンドとなります。

[armadillo ~]# fbset -xres 1920 -yres 540 -t 13468 148 88 30 4 44 10

※上記例のディスプレイはインターレースとなっています。
 この場合fbsetに設定するVSYNCに関するタイミング(upper,lower,vslen)は
 2倍の値にしておく必要があるので、ご注意ください。

fbsetについては以下を参照してください。
http://manpages.debian.org/cgi-bin/man.cgi?&query=fbset

尚、DVIのタイミングですが、以下のようなものもあるようです。
http://www.mikrocontroller.net/attachment/248331/EDID_DVI.txt

また、ディスプレイによっては、「1920x1080」の解像度を入力し
ディスプレイ内で半分に間引き「1920x540」の解像度で出力する仕様のものもあります。
そのため、一度、ディスプレイのマニュアルや仕様書を ご確認頂いた方がいいと思います。

以上です。

e-yamada

2015年5月28日 18時02分

佐々木大輔様

ご回答いただき誠にありがとうございます。
ご教示いただいた内容につきまして、確認させていただきます。

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

at_daisuke.sasaki

2015年5月28日 20時57分

佐々木大輔です。

ちょっと説明が不足しているかと思いましたので、自己フォローで追記させて頂きます。
(フォーラムなどいろいろ、ご確認いただいているようなので、 既にご理解頂いている事かもしれません)

これも、一般論でなのですが、、、

HDMIディスプレイとの接続時、ArmadilloはHDMIディスプレイと通信し、
そのディスプレイが対応する解像度の一覧情報をEDIDのファイルフォーマットで受信する事で
ビデオモードを生成します。

そのため、ご使用の「1920x540」という横長のディスプレイも
それに対応するビデオモードを返しているのではないか?と思っています。

先ほど添付した以下の情報もディスプレイから受けたEDIDのデータをパースしたものです。
http://www.mikrocontroller.net/attachment/248330/EDID_HDMI.txt

そのため、本来は、以下コマンドで出力される解像度の一覧に、
このディスプレイが対応する1920x540の解像度の設定があるべきだと考えています。

[armadillo ~]# cat /sys/class/graphics/fb0/modes

前回の回答に記載したように、ディスプレイによっては、
1920x540の解像度にも関わらず、1920x1080を入力するものもあるようです。
その場合は、/sys/class/graphics/fb0/modesには、
1920x540とは違う形で見えている場合があるかもしれません。

製品マニュアル 「8.3.9.1. ビデオモードの変更」の手順を参考に
ビデオモードを変更し、試してみると良いかもしれません。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

また、/sys/class/graphics/fb0/modesから見えるビデオモードの一覧は、
HDMIディスプレイから取得したビデオモードの一覧から、
Armadilloが出力できないビデオモードを間引いたものになります。

たとえば、HDMIディスプレイが要求するピクセルクロックを
Armadilloが出せない場合などには、一覧から削除してしまいます。

この辺りを踏まえ、HDMIディスプレイのマニュアルや、実機での動作確認していただくと良いと思います。

e-yamada

2015年5月29日 11時05分

佐々木大輔様

詳細な情報をご教示いただき、誠にありがとうございます。
HDMIディスプレイの仕様と合わせて確認させていただきます。

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

e-yamada

2015年6月25日 18時18分

お世話になっております。
「1920x540」の解像度での表示について、確認を実施しました。

仕様上、ディスプレイからArmadilloへのEDIDの受け渡しは無く、
Armadillo側にてfbsetコマンドにて解像度の設定を行っております。
その為、下記コマンドでは何も出力されない状態です。

cat /sys/class/graphics/fb0/mode
cat /sys/class/graphics/fb0/modes

画面上には同じ画像が縦並びで表示されており、現状では正しい表示ができていない状況です。。
なお、fbsetコマンドには先日ご教示いただいた下記のパラメータを設定しております。

---------------------------------------------------------------
fbset -xres 1920 -yres 540 -t 13468 148 88 30 4 44 10

mode "1920x540-58"
# D: 74.250 MHz, H: 33.750 kHz, V: 57.791 Hz
geometry 1920 540 1920 2160 16
timings 13468 148 88 30 4 44 10
accel false
rgba 5/11,6/5,5/0,0/0
endmode
---------------------------------------------------------------
fbset -xres 1920 -yres 540 -t 13468 148 88 15 2 44 5

mode "1920x540-60"
# D: 74.250 MHz, H: 33.750 kHz, V: 60.053 Hz
geometry 1920 540 1920 2160 16
timings 13468 148 88 15 2 44 5
accel false
rgba 5/11,6/5,5/0,0/0
endmode
---------------------------------------------------------------

ディプレイの仕様書を一部抜粋したもの(AC_Timing_Characteristics.jpg)を添付させていただきますので、
お手数ですが、fbsetのパラメータにつきまして適切な設定がございましたらご教示いただけますでしょうか。
表示についてはノーインターレースにて行いたいと思います。

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

ファイル ファイルの説明
AC_Timing_Characteristics.jpg

at_daisuke.sasaki

2015年7月2日 12時35分

佐々木大輔です。

> 仕様上、ディスプレイからArmadilloへのEDIDの受け渡しは無く、
> Armadillo側にてfbsetコマンドにて解像度の設定を行っております。

> 画面上には同じ画像が縦並びで表示されており、現状では正しい表示ができていない状況です。。
> なお、fbsetコマンドには先日ご教示いただいた下記のパラメータを設定しております。

HDMIのドライバは、EDIDの受信が行えない場合、
DisplayをONする状態にできないのですが、画面上には、画像が描画されているとの事ですので、
DisplayはONできているようですね。

> ディプレイの仕様書を一部抜粋したもの(AC_Timing_Characteristics.jpg)を添付させていただきますので、
> お手数ですが、fbsetのパラメータにつきまして適切な設定がございましたらご教示いただけますでしょうか。
> 表示についてはノーインターレースにて行いたいと思います。

Atmark Distに含まれるBusyBoxのfbsetコマンドは、
インターレース/ノンインターレスを設定するためのlacedオプションが使えません。

EDIDで受信したインターレースのVideo Mode または ノンインターレースのVideo Modeを
ベースにタイミングの変更をする場合には良いのですが、
今回のように空のVideo Modeからタイミングを生成するには、意図した設定にできない場合がありますね。

対策として、Debianのパッケージ([1]のURLからダウンロード)から
以下([2])の手順にて取り出した、fbsetを使う方法があります。

[1]:https://packages.debian.org/wheezy/fbset
[2]:http://armadillo.atmark-techno.com/howto/use-debian-binary

取り出したバイナリファイルをArmadilloに転送し、以下のようなコマンドで
タイミング設定を行うと、先の投稿で添付していただいた「AC_Timing_Characteristics.jpg」を満たす
タイミングの波形を生成できます。

./fbset -xres 1920 -yres 540 -t 1346 8 148 88 30 4 44 10 -laced false

以上です。

e-yamada

2015年7月3日 15時21分

佐々木大輔様

情報のご教示、誠にありがとうございます。

ご教示いただきましたとおり、Debianのパッケージから取り出した「fbset」の使用と、
「-laced false」のパラメータ追加にて「1920x540」のディスプレイに正しく表示できる事を確認できました。

「./fbset -xres 1920 -yres 540 -t 13468 148 88 15 2 44 5 -laced false」
(※ディスプレイに合わせてパラメータを変更しております。)

お忙しい中ご対応いただきありがとうございました。
今後とも何卒よろしくお願いいたします。

at_hanada

2015年7月10日 23時50分

花田です。

一応、Atmark Distにfbsetを追加するパッチを作ってみました。
一時的にDebianから持ってくるだけで問題なければそのままで構いませんが、恒常的にromイメージに入れるようでしたら利用してみてください。

ファイル ファイルの説明
atmark-dist-20150618_fbset.patch

e-yamada

2015年7月13日 9時29分

花田様

パッチのご提供、誠にありがとうございます。
状況に応じて使用させていただきます。