Armadilloフォーラム

Armadillo-440 にVGAのLCDを接続したい

nagashima

2017年11月29日 14時55分

長島と申します。お世話になります。

Armadillo-440 の液晶モデルで、別のLCD(640x480)を接続しようとしているのですが、
fbsetコマンドを実行してVGAの設定にしようとしても、設定が反映されず、困っております。

【環境】
 ・Armadillo-440 液晶モデル
 ・カーネル:3.14
 ・LCD:5.7inch VGA(液晶モデルの液晶が接続されていたコネクタに接続)

【確認した項目】
(1) 何も変更しない状態での fbset を実行した結果

# fbset

mode "480x272-60"
# D: 9.072 MHz, H: 17.280 kHz, V: 60.000 Hz
geometry 480 272 480 272 16
timings 110229 35 5 6 8 5 2
accel false
rgba 5/11,6/5,5/0,0/0
endmode

・液晶モデルの液晶「FG040360DSSWBG03」の解像度(480x272)になっている
・液晶は 480x272 の分だけ表示される
・fbset を実行すると一部変わるが、表示等は全く変化なし

# fbset -xres 640 -yres 480 -t 25000 40 24 32 11 96 2
# fbset

mode "480x272-60"
# D: 9.072 MHz, H: 17.280 kHz, V: 60.000 Hz
geometry 480 272 640 480 16
timings 110229 35 5 6 8 5 2
accel false
rgba 5/11,6/5,5/0,0/0
endmode

(2) カーネルコンフィグで
 System Type > Freescale i.MX support > Armadillo-400 Borad options > LCD panel 
 で「DI-7W」に変更したカーネルで起動し、fbset を実行した結果

# fbset

mode "800x480-68"
# D: 32.680 MHz, H: 34.472 kHz, V: 68.397 Hz
geometry 800 480 800 480 16
timings 30600 45 39 10 12 64 2
accel false
rgba 5/11,6/5,5/0,0/0
endmode

・DI-7W の解像度(800x480)になっている
・液晶は全画面表示されている(横200 pixel分はみ出ている)
・fbset を実行したが下記のように全く変わらず

# fbset -xres 640 -yres 480 -t 25000 40 24 32 11 96 2
# fbset

mode "800x480-68"
# D: 32.680 MHz, H: 34.472 kHz, V: 68.397 Hz
geometry 800 480 800 480 16
timings 30600 45 39 10 12 64 2
accel false
rgba 5/11,6/5,5/0,0/0
endmode

# cat /sys/class/graphics/fb0/modes
U:800x480p-60

(3) ATDE5 上でユーザランドに /etc/fb.modes (VGAに関する設定を記載)を作成し、
  ユーザランドを更新して実機を起動し、以下のコマンドを実行

# fbset

mode "800x480-68"
# D: 32.680 MHz, H: 34.472 kHz, V: 68.397 Hz
geometry 800 480 800 480 16
timings 30600 45 39 10 12 64 2
accel false
rgba 5/11,6/5,5/0,0/0
endmode

# cat /sys/class/graphics/fb0/modes
U:800x480p-60

・/etc/fb.modes 完全無視 ...

【質問】
・fbset での設定を有効化する方法はございますか?
・fbset 以外で画面の解像度を変更する方法はございますか?

以上、よろしくお願い申し上げます。

コメント

at_ito

2018年1月11日 10時01分

伊藤です。

LCDの設定ですが、fbsetとは異なるやりかたですが、以下のWebで行っていますので参考になりませんでしょうか。

https://users.atmark-techno.com/blog/53/1810
https://armadillo.atmark-techno.com/howto/a440-custom-lcd-and-touch-pan…

また参考までに画面をローテートする際の参考は以下のURLが参考になるかと思います。

http://lists.atmark-techno.com/pipermail/armadillo/2012-February/007910…

nagashima

2018年1月11日 10時32分

伊藤様

長島です。対策をご教授頂きありがとうございます。

https://armadillo.atmark-techno.com/howto/a440-custom-lcd-and-touch-pan…
記載の方法は試そうと思ったのですが、カーネルが 3.14 だと /drivers/video/mxc がないため、
fbset による設定を試みていた次第です。

3.14 はやめて 2.6 にしてご教授頂いた方法を試したいと存じます。

質問の件とは無関係になりますが、実際のところ Armadillo-440 を使われている方は
カーネルは 2.6 の方が多いのでしょうか?

at_ohsawa

2018年1月11日 17時40分

> https://armadillo.atmark-techno.com/howto/a440-custom-lcd-and-touch-pan…
> 記載の方法は試そうと思ったのですが、カーネルが 3.14 だと /drivers/video/mxc がないため、

ドキュメントが3.14に対応しておらず、御不便おかけいたします。
3.14では当該の情報はlinux-3.14-at/arch/arm/mach-imx/armadillo4x0_extif.c
に移動しており、configで選択できる FG040360DSSWBG03 と DI_7Wの
設定値は下記のように記載されております。

#if defined(CONFIG_FB_MODE_FG040360DSSWBG03)
        {
                .mode   = {
                        .name           = "FG040360DSSWBG03",
                        .refresh        = 60,
                        .xres           = 480,
                        .yres           = 272,
                        .pixclock       = 110229,
                        .left_margin    = 35,
                        .right_margin   = 5,
                        .upper_margin   = 6,
                        .lower_margin   = 8,
                        .hsync_len      = 5,
                        .vsync_len      = 2,
                },
                .bpp    = 16,
                .pcr    = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_FLMPOL |
                          PCR_LPPOL | PCR_ACD_SEL | PCR_ACD(0x0B) |
                          PCR_SCLK_SEL,
        },
#elif defined(CONFIG_FB_MODE_DI_7W)
        {
                .mode   = {
                        .name           = "FG0700K5DSSWAGT1",
                        .refresh        = 60,
                        .xres           = 800,
                        .yres           = 480,
                        .pixclock       = 30600,
                        .left_margin    = 45,
                        .right_margin   = 39,
                        .upper_margin   = 10,
                        .lower_margin   = 12,
                        .hsync_len      = 64,
                        .vsync_len      = 2,
                },
                .bpp    = 16,
                .pcr    = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_CLKPOL |
                          PCR_ACD_SEL | PCR_ACD(0x0B) | PCR_SCLK_SEL,
        },
#endif

上記どちらかのmode構造体の記述を改造して使うと、既出のHowtoと同様に
設定を永続化できますので、是非3.14カーネルをご利用ください、

nagashima

2018年1月11日 18時27分

ohsawa 様、ご教授頂きありがとうございます。

> > https://armadillo.atmark-techno.com/howto/a440-custom-lcd-and-touch-pan…
> > 記載の方法は試そうと思ったのですが、カーネルが 3.14 だと /drivers/video/mxc がないため、
>
> ドキュメントが3.14に対応しておらず、御不便おかけいたします。
> 3.14では当該の情報はlinux-3.14-at/arch/arm/mach-imx/armadillo4x0_extif.c
> に移動しており、configで選択できる FG040360DSSWBG03 と DI_7Wの
> 設定値は下記のように記載されております。

ファイルを確認いたしました。
近日中に試して、後日結果を情報共有させて頂きます。

nagashima

2018年1月30日 9時18分

長島です。お世話になっております。
ご報告が遅くなりましたが、以下の手順にて、
解像度の設定と画面のローテーションができましのでご報告させて頂きます。

【解像度の設定】

1.ソースの変更

$ cd ~/linux-3.14-at10/arch/arm/mach-imx
$ cp armadillo4x0_extif.c armadillo4x0_extif.c.org
$ vi armadillo4x0_extif.c

--------
:
#elif defined(CONFIG_FB_MODE_VGALCD)
{
.mode = {
.name = "AC057VK04",
.refresh = 60,
.xres = 640,
.yres = 480,
.pixclock = 39722,
.left_margin = 48,
.right_margin = 33,
.upper_margin = 16,
.lower_margin = 10,
.hsync_len = 64,
.vsync_len = 2,
},
.bpp = 16,
.pcr = PCR_TFT | PCR_COLOR | PCR_PBSIZ_8 | PCR_CLKPOL |
PCR_ACD_SEL | PCR_ACD(0x0B) | PCR_SCLK_SEL,
},
:
--------

$ cp Kconfig.armadillo4x0 Kconfig.armadillo4x0.org
$ vi Kconfig.armadillo4x0

--------
:
config FB_MODE_VGALCD
bool "VGALCD"

:
--------

2. カーネルコンフィギュレーションで「VGALCD」を選択

【画面のローテート】

1. ソースの変更
(1) xfbdev の変更

$ cd ~/atmark-dist-20171227/vendors/AtmarkTechno
$ cp -r Armadillo-440 PointTerminal
$ cd PointTerminal/etc/init.d
$ cp xfbdev xfbdev.org
$ vi xfbdev

--------
/usr/bin/Xfbdev ${BE_RETRO} -s 0 -mouse tslib,,device=$TS_DEV \
-screen 640x480@90 -keybd evdev,,device=$KEY_DEV >/dev/null 2>&1 &
^^^^^^^^^^^^^^^^^^
--------
・screenオプションを追記

(2) functesterの変更

$ cd ~/atmark-dist-20171227/vendors/AtmarkTechno/PointTerminal
$ vi functester/main.c

--------
:
#define DEFAULT_XRES (480)
#define DEFAULT_YRES (640)
:
--------
・解像度の設定変更

今後ともよろしくお願い申し上げます。

at_ohsawa

2018年1月30日 10時39分

レポートありがとうございます。
この変更に関するHowtoは無いので、大変助かります。