Armadilloフォーラム

ディスプレイ表示の際のオフセットについて

e-yamada

2015年8月7日 18時31分

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

ディスプレイへのフルスクリーンでの表示を行った際に、
添付画像のように上側が5ドット程度オフセットされた状態での表示となってしまうのですが、
これを解消する方法はございませんでしょうか。

開発中のイメージにて発生していた為、一度、アットマークテクノ様のサイトで公開されておりました
イメージへの書き換えを行いましたが、状況変わらずでした。

【添付画像1】
・ディスプレイ(PC用):1280x1024

・接続方法:armadillo → HDMIからDVIへの変換ケーブル → ディスプレイ

・armadilloへの書き込みイメージ:
  linux-a840-v1.10.bin.gz
  romfs-a840-v1.08.img.gz

・実行コマンド
  "gst-launch-1.0 videotestsrc ! 'video/x-raw, width=1280, height=1024' ! fbdevsink device=/dev/fb0"

【添付画像2】
・ディスプレイ(PC用):1920x1080

・接続方法:armadillo → HDMIケーブル → ディスプレイ

・armadilloへの書き込みイメージ:
  linux-a840-v1.10.bin.gz
  romfs-a840-v1.08.img.gz

・実行コマンド
  "gst-launch-1.0 videotestsrc ! 'video/x-raw, width=1920, height=1080' ! fbdevsink device=/dev/fb0"

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

ファイル ファイルの説明
添付画像1.jpg
添付画像2.jpg
コメント

at_daisuke.sasaki

2015年8月10日 15時35分

佐々木大輔です。

> ディスプレイへのフルスクリーンでの表示を行った際に、
> 添付画像のように上側が5ドット程度オフセットされた状態での表示となってしまうのですが、
> これを解消する方法はございませんでしょうか。

この映像が出力されている時、Armadilloがどのような波形を出力しているか知りたいので、
fbsetの出力結果を頂けますか?

[armadillo ~]# fbset -fb {デバイスファイル}

可能であれば、念の為、以下のスレッドでご案内した、
Debianパッケージから取り出したfbsetで確認していただけると嬉しいです。

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

以上です。

佐々木大輔様

お世話になっております。
ご回答いただきありがとうございます。

ご教示いただきましたとおり、Debianパッケージより取得したfbsetにて確認を行いました。
ディスプレイへの表示については上側がオフセットされたままとなっておりました。

何かお気づきの点などございましたらご教示いただけますと幸いです。

[root@armadillo840-0 (ttySC2) ~]# /mnt/dat/fbset -xres 1280 -yres 1024 -t 9259 248 48 38 1 112 3 -laced false

[root@armadillo840-0 (ttySC2) ~]# fbset -fb /dev/fb0

mode "1280x1024-60"
# D: 108.003 MHz, H: 63.983 kHz, V: 60.021 Hz
geometry 1280 1024 1280 4096 32
timings 9259 248 48 38 1 112 3
accel false
rgba 8/16,8/8,8/0,8/24
endmode

[root@armadillo840-0 (ttySC2) ~]# gst-launch-1.0 videotestsrc ! 'video/x-raw, width=1280, height=1024' ! fbdevsink device=/dev/fb0

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

at_daisuke.sasaki

2015年8月17日 20時42分

佐々木大輔です。

fbsetの確認結果の採取ありがとうございます。

> [root@armadillo840-0 (ttySC2) ~]# /mnt/dat/fbset -xres 1280 -yres 1024 -t 9259 248 48 38 1 112 3 -laced false
>
> [root@armadillo840-0 (ttySC2) ~]# fbset -fb /dev/fb0
>
> mode "1280x1024-60"
> # D: 108.003 MHz, H: 63.983 kHz, V: 60.021 Hz
> geometry 1280 1024 1280 4096 32
> timings 9259 248 48 38 1 112 3
> accel false
> rgba 8/16,8/8,8/0,8/24
> endmode

おそらく、生成したいタイミングはVGA Signal Timing(http://tinyvga.com/vga-timing)の1280x1024@60Hzですね

このタイミングでは、108.0[MHz]のピクセルクロックを生成する必要がありますが、
Armadillo-840はこれと同じクロックを生成する事ができません。

HDMIのクロックは、594MHzを分周し生成 [1] しています。
そのため、示していただいたfbsetの設定(-t 9259)を行った場合には、
99[MHz](594[MHz]の6分周)のクロックが出力されてしまいます。
ディスプレイ側のマージンにより多少ピクセルクロックがずれていても
正しく描画される事が多々ありますが、要求される信号を出力できません。

[1]: HDMIで要求される、たとえば74.25[MHz]のピクセルクロックを生成できるよう設計されています。

ピクセルクロックが直接的な原因か、判断しかねるのですが、
ディスプレイが許容する解像度およびピクセルクロックの設定で且つ、
Armadillo-840が出力できる解像度の設定(594MHzからクロックが生成できる設定)は無いでしょうか?

また、あまり効果は無いかもしれませんが、
ピクセルクロックを594[MHz]の5分周となる118.8[MHz]の設定にした場合は、変化はありますか?

 [root@armadillo840-0 (ttySC2) ~]# /mnt/dat/fbset -xres 1280 -yres 1024 -t 8417 248 48 38 1 112 3 -laced false

佐々木大輔様

お世話になっております。
ご回答いただきありがとうございます。

> ピクセルクロックを594[MHz]の5分周となる118.8[MHz]の設定にした場合は、変化はありますか?

ご教示いただいたfbsetのコマンドを実行して確認を行いました。

[root@armadillo840-0 (ttySC2) ~]# /mnt/dat/fbset -xres 1280 -yres 1024 -t 8417 248 48 38 1 112 3 -laced false
[root@armadillo840-0 (ttySC2) ~]# gst-launch-1.0 videotestsrc ! 'video/x-raw, width=1280, height=1024' ! fbdevsink device=/dev/fb0
[root@armadillo840-0 (ttySC2) ~]# fbset -fb /dev/fb0

mode "1280x1024-66"
# D: 118.807 MHz, H: 70.383 kHz, V: 66.026 Hz
geometry 1280 1024 1280 4096 32
timings 8417 248 48 38 1 112 3
accel false
rgba 8/16,8/8,8/0,8/24
endmode

ディスプレイの表示は添付画像(001_1280x1024.jpg)のとおりとなりました。

> ピクセルクロックが直接的な原因か、判断しかねるのですが、
> ディスプレイが許容する解像度およびピクセルクロックの設定で且つ、
> Armadillo-840が出力できる解像度の設定(594MHzからクロックが生成できる設定)は無いでしょうか?

解像度を[V:1024x768p-60]に変更して確認を行いました。

[root@armadillo840-0 (ttySC2) ~]# cat /sys/class/graphics/fb0/modes
U:1280x1024p-66
U:1280x1024p-60
V:1024x768p-60
V:800x600p-60
V:640x480p-60
U:720x400p-70
[root@armadillo840-0 (ttySC2) ~]# echo V:1024x768p-60 > /sys/class/graphics/fb0/mode
[root@armadillo840-0 (ttySC2) ~]# gst-launch-1.0 videotestsrc ! 'video/x-raw, width=1024, height=768' ! fbdevsink device=/dev/fb0
[root@armadillo840-0 (ttySC2) ~]# fbset -fb /dev/fb0

mode "1024x768-60"
# D: 65.003 MHz, H: 48.365 kHz, V: 60.006 Hz
geometry 1024 768 1024 3072 32
timings 15384 160 24 29 3 136 6
accel false
rgba 8/16,8/8,8/0,8/24
endmode

ディスプレイの表示は添付画像(002_1024x768.jpg)のとおりとなりました。

別のPC用ディスプレイでもやはり上側がオフセット表示となってしまう為、ディスプレイ固有の問題であるとは考えにくく、
ピクセルクロックの変更でもディスプレイの表示に特に変化は見られないようでしたが、
何かお気づきの点などございましたらご教示いただけますと幸いです。

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

ファイル ファイルの説明
001_1280x1024.jpg
002_1024x768.jpg

at_daisuke.sasaki

2015年9月3日 20時16分

佐々木大輔です。

前回の回答にて、pixcelクロックを変更する設定について試していただきましたが、
Armadillo-840のプロセッサであるR-MobileA1の仕様では74.25[MHz]が上限でした。すみません。

本fbsetの設定値では、
HDMI - DVI変換を介さず、直接HDMIディスプレイを接続した場合でも、
同様の現象になりますね。

詳細な原因は判明していないのですが、以下の設定にすると正しく描画されました。
お試しください。

fbset -xres 1280 -yres 1024 -t 9259 248 48 1 1 112 40 -laced false

mode "1280x1024-60"
# D: 108.003 MHz, H: 63.983 kHz, V: 60.021 Hz
geometry 1280 1024 1920 4096 32
timings 9259 248 48 1 1 112 40
accel false
rgba 8/16,8/8,8/0,8/24
endmode

原因など、何かわかれば、またご連絡いたします。

佐々木大輔様

お世話になっております。
ご回答いただきありがとうございます。

> 詳細な原因は判明していないのですが、以下の設定にすると正しく描画されました。
> お試しください。
>
> fbset -xres 1280 -yres 1024 -t 9259 248 48 1 1 112 40 -laced false

ご教示いただいたコマンドにて、ディスプレイにオフセットなしで表示される事を確認できました。

> 原因など、何かわかれば、またご連絡いたします。

お手数をおかけしますが、何卒よろしくお願いいたします。

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