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 以外で画面の解像度を変更する方法はございますか?
以上、よろしくお願い申し上げます。
コメント
nagashima
伊藤様
長島です。対策をご教授頂きありがとうございます。
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
> 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
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
長島です。お世話になっております。
ご報告が遅くなりましたが、以下の手順にて、
解像度の設定と画面のローテーションができましのでご報告させて頂きます。
【解像度の設定】
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
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…