Armadilloフォーラム

液晶ディスプレイ初回電源オンでのHDMI出力の不具合について

tic-hirano

2019年12月2日 16時54分

お世話になっております,平野と申します.

Armadillo-840のHDMI出力を液晶ディスプレイに表示するシステムで利用しています.
液晶ディスプレイによってはArmadillo-840は利用できる解像度の情報が得られていても映像が表示がされないことがあります.
何か解決策はありますでしょうか?

●環境
液晶ディスプレイ:LCD-AS172-B5(NEC)
接続ケーブル:HDMI-DVIケーブル(メーカー不明)

ATDE5 i386(20160225)
linux-3.4-at17.tar.gz
atmark-dist-20160527.tar.gz

●再現テスト
・液晶ディスプレイのACを接続し電源オンしたあと"SELECT"などボタン操作をしない.
・Qtを使った自作アプリではなくGstreamerで確認.(rc.localで起動)

gst-launch-1.0 videotestsrc ! "video/x-raw,width=1280,height=1024" ! fbdevsink device=/dev/fb0 &

●結果
・Gstreamer動作後に下記が出力されその後"WARNING"からの5行が繰り返される.

(gst-plugin-scanner:3404): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstvideo4linux2.so': libX11.so.6: cannot open shared object file: No such file or directory
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2683): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0:
There may be a timestamping problem, or this computer is too slow.
sh_hdmi_hotplug: 51 callbacks suppressed

・液晶ディスプレイはパワーマネージメント動作のオレンジ色となる.
・"SELECT"ボタンを操作すると映像が映るようになる.

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

コメント

佐藤です。

最新のカーネルとユーザーランドでも発生するか確認できますでしょうか。
https://users.atmark-techno.com/armadillo-840/software

加えて以下の点も確認できますでしょうか。
Armadillo-840 を複数お持ちであればその全てで発生するか
他のディスプレイでも発生するか
ケーブルを変更しても発生するか

お世話になっております,平野と申します.

> 最新のカーネルとユーザーランドでも発生するか確認できますでしょうか。
[snip]
> 加えて以下の点も確認できますでしょうか。
> Armadillo-840 を複数お持ちであればその全てで発生するか
> 他のディスプレイでも発生するか
> ケーブルを変更しても発生するか

試験用のArmadillo-840に最新のカーネルとユーザーランドでも発生しました.
他のディスプレイでは発生しませんでした.
表示ブランクが発生する液晶ディスプレイではケーブルを変更しても発生しました.

前回投稿で利用したものではないArmadillo-840に下記を書き込んで動作確認をしてみました.
 ブートローダー:loader-armadillo840-nor-v3.11.0.bin
 Linuxカーネル :linux-a840-v1.22.bin.gz
 ユーザーランド:romfs-a840-v1.15.img.gz

液晶ディスプレイは連続動作試験をしていたため同型番のものを利用したところ下記のような結果となりました.
・最新カーネル・ユーザーランド
 HDMI-DVIケーブルで映像は表示されない.入力切替など液晶ディスプレイの操作をしても変化なし.
 対応している解像度は下記の通りで推奨解像度の1280x1024が現れない.

[root@armadillo840-0 (ttySC2) ~]# cat /sys/class/graphics/fb0/modes
V:1024x768p-70
V:1024x768p-60
U:832x624p-75
V:800x600p-75
V:800x600p-72
V:800x600p-60
V:800x600p-56
V:640x480p-75
V:640x480p-72
U:640x480p-67
V:640x480p-60
U:720x400p-70

 HDMIケーブルにDVI変換アダプタを利用した接続に変更しても映像は表示されない.入力切替など液晶ディスプレイの操作をしても変化なし.
 フルHD対応の液晶ディスプレイでは画像ビューア アプリが表示される.

・利用しているカスタムしたカーネル・ユーザーランド
 カーネルおよびユーザーランドを書き換え
 HDMIケーブルにDVI変換アダプタを利用した接続で映像は表示されない.入力切替など液晶ディスプレイの操作をしても変化なし.
 対応している解像度は下記の通りで推奨解像度の1280x1024が現れる.

[root@armadillo840-0 (ttySC2) ~]# cat /sys/class/graphics/fb0/modes 
U:1280x960p-75
V:1152x864p-75
V:1280x1024p-75
V:1024x768p-75
V:1024x768p-70
V:1024x768p-60
U:832x624p-75
V:800x600p-75
V:800x600p-72
V:800x600p-60
V:800x600p-56
V:640x480p-75
V:640x480p-72
U:640x480p-67
V:640x480p-60
U:720x400p-70
D:1280x1024p-60

・WindowsPCでの動作確認
 Armadillo-840からPCへの接続切替は電源オンのまま作業
 フルHDの液晶ディスプレイで動作させていたが1280x1024で表示される
 接続ケーブルはDVI-Dケーブルを利用

・再度Armadillo-840を液晶ディスプレイに接続
 映像が表示される

・Armadillo-840・液晶ディスプレイを電源オフから確認
 ACアダプタなどを外して1分程度放置してから接続
 液晶ディスプレイを電源オン
 Armadillo-840を電源オン
 HDMIケーブルにDVI変換アダプタを利用した接続で映像は表示されない(LEDは青点灯[信号あり])
 推奨解像度に設定するも映像は表示されない
 Gstreamerを停止したところ少し時間が経つと映像が表示される

・再度電源ケーブルを抜き放置してから起動
 Gstreamerを自動実行せず起動
 手動でGstreamerを実行.映像は出ない
 Gstreamerを停止し推奨解像度に設定するも映像は出ない
 何度かGstreamerを起動・停止しても映像は出ない
 haltを実行したら表示された

佐藤です。

drivers/video/sh_mobile_hdmi.c の冒頭部分に #define DEBUG と追加すると、
dmesg にログが出力されるようになるので確認してみてもらえますでしょうか。

お世話になっております,平野と申します.

> drivers/video/sh_mobile_hdmi.c の冒頭部分に #define DEBUG
> と追加すると、
> dmesg
> にログが出力されるようになるので確認してみてもらえますでしょうか。

コンソールのログと/var/log/messagesを添付します.
dmesgではすぐに初期の内容が無くなっていたので/var/log/messagesを選択しました.

機器の電源を入れる順番で動作が異なっています.

以下は液晶ディスプレイをAS172,Armadillo-840をa840とします.

●a840起動後にAS172の電源オン:正常に表示
条件:AS172,a840をAC切断放置
・a840が起動し終わったらログイン
・AS172のAC接続(ログ:echo monitor opower on)
・AS172の電源オン(ログ:echo monitor switch on)
・カラーバー表示(ログ:echo color bar success)
20191206_a840_hdmi_debug_4.log
20191206-1130_message.txt

●AS172のAC接続しておきa840起動後にAS172の電源オン:正常に表示
条件:AS172,a840をAC切断放置
・AS172のAC接続
・a840電源オン
・AS172の電源オン(ログ:echo monitor poswitch on)
・カラーバー表示(ログ:echo color bar success)
20191206_a840_hdmi_debug_5.log
20191206-1136_messages.txt

●AS172のAC接続し電源オン,a840起動:表示しない
条件:AS172,a840をAC切断放置
・AS172のAC接続
・AS172の電源オン
・AS172のスタンバイを確認
・a840電源オン
・AS172はスタンバイのまま
・AS172の入力切替押下(ログ:echo monitor input select)
・コンソールへの空行出力が止まる
・カラーバーが表示できない(ログ:echo color bar faild)
・Gstreamer停止して少し時間が経ってから表示された(砂嵐は静止)(ログ:echo color bar displayed)
20191206_a840_hdmi_debug_6.log
20191206-1143_messages.txt

●AS172電源オン,a840halt停止中:正常に表示
条件:AS172,a840ともに通電
・液晶ディスプレイにはカラーバーが止まって表示されている
・a840リセット
・カラーバー表示(ログ:echo color bar success)
ログ:20191206_a840_hdmi_debug_7.log
20191206-1152_messages.txt

◆参考:Dura Vision FDX1203(EIZO)
●FDX1203の電源オン,a840起動:正常に表示
・FDX1203の電源オン
・FDX1203のスタンバイを確認
・a840電源オン
・FDX1203はDVI認識
・カラーバー表示(ログ:echo color bar success)
20191206_a840_hdmi_debug_7.log
20191206-1318_messages.txt

ファイル ファイルの説明
20191206_a840_hdmi_debug_4.log コンソールのログ1
20191206-1130_message.txt /var/log/messages 1
20191206_a840_hdmi_debug_5.log コンソールのログ2
20191206-1136_messages.txt /var/log/messages 2
20191206_a840_hdmi_debug_6.log コンソールのログ3
20191206-1143_messages.txt /var/log/messages 3
20191206_a840_hdmi_debug_7.log コンソールのログ4
20191206-1152_messages.txt /var/log/messages 4
20191206_a840_hdmi_debug_8.log コンソールのログ5
20191206-1318_messages.txt /var/log/messages 5

佐藤です。

すいません。 /var/log/kern.log というファイルをいただけますでしょうか。
kern.log.1 や kern.log.(数字).gz となっているファイルがあればそれもお願いします。

以下の2パターンのときのものをお願いします。
a840起動後にAS172の電源オン:正常に表示
AS172のAC接続し電源オン,a840起動:表示しない

お世話になっております,平野と申します.

> すいません。 /var/log/kern.log というファイルをいただけますでしょうか。
> kern.log.1 や kern.log.(数字).gz となっているファイルがあればそれもお願いします。

「/var/log/kern.log」は存在しませんでした.

[root@armadillo840-0 (ttySC2) /var]# ls /var/*
/var/cache:
 
/var/empty:
 
/var/lib:
 
/var/lock:
 
/var/log:
messages  wtmp
 
/var/run:
avahi-daemon/    ifstate          lighttpd.pid     udhcpc.eth0.pid
fb0.mode         inetd.pid        syslogd.pid      utmp
 
/var/spool:
 
/var/tmp:

確認中のカーネルはdrivers/video/sh_mobile_hdmi.cには下記を追加しmakeのみ実施しています.

#define DEBUG 1

「/var/log/kern.log」が出力されるにはカーネルの設定が必要でしょうか?

ファイル ファイルの説明
sh_mobile_hdmi_edit.png drivers/video/sh_mobile_hdmi.c への追記内容

佐藤です。

申し訳ありません。
linux起動時に以下のようにすることで、コンソールにデバッグログが表示されると思います。
それをいただけますでしょうか。
(JP1をショートして保守モードで起動してください。)

hermit> setenv console=ttySC2,115200 loglevel=8

お世話になっております,平野と申します.

> linux起動時に以下のようにすることで、コンソールにデバッグログが表示されると思います。
> それをいただけますでしょうか。

Hermitでコンソールにデバッグ ログが出るよう設定をしてみました.

hermit> setenv
1: console=ttySC2,115200
2: loglevel=8

●AS172のAC接続し電源オン,a840起動:表示しない
ログ ファイル:20191210_a840_hdmi_debug_0.log
条件:AS172,a840をAC切断放置
・AS172のAC接続
・AS172の電源オン
・AS172のスタンバイを確認
・a840電源オン
・AS172はスタンバイのまま
・解像度の認識は『U:832x624p-75』[l.5112]
・AS172の入力切替押下(ログ:echo monitor input select)[l.6638]
・コンソールへの空行出力が止まる
・解像度の認識は『V:1024x768p-70』[l.6645]
・カラーバーが表示できない(ログ:echo color bar faild)[l.6667]
・Gstreamerを停止したところ少し時間が経つと映像が表示される(ログ:echo color bar is displayed)[l.6673]
・解像度の認識は『V:1024x768p-70』(変化なし)[l.6675]

ファイル ファイルの説明
20191210_a840_hdmi_debug_0.log 入力切替するまで表示できないときのログ

佐藤です。

何度も申し訳ありません。
#define DEBUG 1 を入れる位置を sh_mobile_hdmi.c ファイルの先頭にして再度ログを確認してもらえますでしょうか。

...
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#define DEBUG 1
#include <linux/clk.h>
#include <linux/console.h>
...

お世話になっております,平野と申します.

> #define DEBUG 1 を入れる位置を sh_mobile_hdmi.c ファイルの先頭にして再度ログを確認してもらえますでしょうか。

入れる位置を変更し「make clean; make dep; make」でイメージを作成ししたところ「setenv console=ttySC2,115200 loglevel=8」の有無で挙動がかわりました.
コンソールに出力していないため「/var/log/messages」を残っている分だけ添付します.

・「setenv console=ttySC2,115200 loglevel=8がある」
 ブート途中で映像信号が検出される
 20191210_a840_hdmi_debug_success.log
 20191210-1307_messages.txt

・「setenv console=ttySC2,115200 loglevel=8がない」
 ログイン手前まで進んでも「sh_hdmi_hotplug: XX callbacks suppressed」が出力される
 映像信号は検出されずスタンバイ状態のまま
 20191210_a840_hdmi_debug_faild.log
 20191210-1300_messages.txt

ファイル ファイルの説明
20191210_a840_hdmi_debug_success.log コンソール:デバッグ出力あり(映像出力成功)
20191210-1307_messages.txt 成功時の /var/log/messages
20191210_a840_hdmi_debug_faild.log コンソール:デバッグ出力なし(映像出力失敗)
20191210-1300_messages.txt 失敗時の /var/log/messages

佐藤です。

ログからは成功時と失敗時で以下の個所で差があるようです。
成功時

Jan  1 00:17:28 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi: 148-1920-88-44 x 30-1080-4-10
Jan  1 00:17:28 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi:     @74250000(+/-0)Hz, e=0 / 1000, r=60Hz, p=594000000Hz
Jan  1 00:17:28 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi: Using default external mode 1920x1080i@60Hz (74250000Hz), clock error 0Hz
Jan  1 00:17:28 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi: H: 2200, 280, 192, 44; V: 1124, 44, 40, 10; sync 0xe

失敗時

Jan  1 00:16:21 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi: 144-1024-24-136 x 29-768-3-6
Jan  1 00:16:21 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi:     @75001000(+/-751000)Hz, e=10 / 1000, r=70Hz, p=594000000Hz
Jan  1 00:16:21 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi: Using default external mode 1024x768@70Hz (75001000Hz), clock error 751000Hz
Jan  1 00:16:21 (none) user.debug kernel: sh-mobile-hdmi sh-mobile-hdmi: H: 1328, 304, 280, 136; V: 806, 38, 35, 6; sync 0x0

このログの個所は sh_mobile_hdmi.c の sh_hdmi_read_edid 関数ですので、そこを重点的に調べるとよいかもしれません。