[Armadillo:07439] Re: Armadillo-440 :異なる解像度(SVGA)のLCD接続について
Takenoshita Koyo
email@hidden
2011年 7月 29日 (金) 15:49:59 JST
竹之下です。
> お手数ですが、この内容で合っているか?確認していただけますでしょうか?
合っていると思います。
以下、検算です。
> 次のURLにあるHowtoを参照しています。
> http://armadillo.atmark-techno.com/howto/a440-custom-lcd-and-touch-panel
同じ事例なのですが、「Armadillo実践開発ガイド 第3部」により詳しい解説があります。
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2.1.0/ch02.html#__18
基本的には、データシートの値を「図2.100 LCDパネルタイミング情報の計算式」に当てはめていけば良いです。
> ドットクロック = 水平同期周波数 × (水平解像度 + 左マージン + 右マージン + 水平同期期間) ・・・(式1)
> 水平同期周波数 = 垂直同期周波数 × (垂直解像度 + 上マージン + 下マージン + 垂直同期期間) ・・・(式2)
データシートの書き方が各社マチマチなので、どの数値をどこに当てはめれば良いか
毎回悩みますが、今回は以下のようになるでしょう。
項目 データシート記載の値 struct fb_videomodeのメンバ名 値
ドットクロック(fCLK=1/tCLK) 40[MHz] pixclock 25,000[pico_secs/clock]
水平同期期間(tH) [tCLK] なし
水平解像度(tHA) 800[tCLK] xres 800[clock/line]
水平同期期間(tHB) 256[tCLK] hsync_len 256[clock/line]
左マージン 記載なし left_margin 0[clock/line]
右マージン 記載なし right_margin 0[clock/line]
垂直同期周波数(fV) 60[Hz] refresh 60[frame/sec]
垂直解像度(tVA) 600[tH] yres 600[line/frame]
垂直同期期間(tVB) 28[tH] vsync_len 28[line/frame]
上マージン 記載なし upper_margin 0[line/frame]
下マージン 記載なし lower_margin 0[line/frame]
これを、式2に当てはめると以下のようになります。
水平同期周波数 = 垂直同期周波数×(垂直解像度 + 上マージン + 下マージン + 垂直同期期間)
= 60[frame/sec] * (600[line/frame] + 0 + 28[line/frame] + 0)
= 37,680 [line/sec]
さらに、式1に当てはめると以下のようになります。
ドットクロック = 水平同期周波数×(水平解像度 + 左マージン + 右マージン + 水平同期期間)
40[MHz] = 37,680 [line/sec] * (800[clock/line] + 0 + 0 + 256[clock/line])
40,000,000[clock/sec] ≒ 39,790,080 [clock/sec]
最終的な計算結果は、水口さんのものと同じです。
> ここで、ひとつ質問です。
> 上記配列のhsとvsの項ですが、コメント行と数値が合ってないように思われま
> す。
> もし、コメントの順であれば、参照値では160,45になるのでは?
> ここを間違うと画像が流れてしまいそうです。
> 確認をお願いします。
逆ですね。。
間違いです。
> その他、マージンおよびsync/flagについての考え方についてもお聞かせいただきた
> く(多分このままでいいと思いますが)。
マージンは、フロントポーチ/バックポーチとも呼ばれるものです。
アナログな表示器(CRTなど)の時代には、綺麗に/正しく表示されるように
フロントポーチ/バックポーチの期間に色々と工夫していたみたいです。
(すみません、このあたりのことについては詳しくないです。)
同期・映像表示の基礎
http://www.geocities.jp/dvid_direct/main_900.html
最近のLCD(液晶)では、フロントポーチ/バックポーチについては
記載がないものが多いので、0としています。
syncには、同期信号の特性を指定します。水平/垂直同期信号が共にアクティブ・
ローの場合は、0のままで構いません。水平同期信号がアクティブ・ハイの場合は、
FB_SYNC_HOR_HIGH_ACT を指定します。その他指定可能な値は、
linux-2.6.26-at/include/linux/fb.h に一覧があります。
flagは、使用していないので何も設定しないで構いません。
なお、struct fb_videomode mxcfb_modedb[] にメンバを追加した場合、
忘れずに struct mxcfb_mode_disp mxcfb_mode_disp_db[] にもメンバを
追加してください。「Armadillo実践開発ガイド 第3部」には、こちらに
ついても説明があります。
(2011年07月29日 10:09), Masahiko Mizuguchi wrote:
> お世話様です。東静電気の水口と申します。
> 今回初めて組込みlinuxを扱います(WebサーバーではLinuxを使用していますが)。
>
> Armadillo-440にSVGA(800x600)のLCD接続を試みています。
> 当方、S/W担当のため、カーネルのビルドについての情報収集中です。
> 下記に当方の理解と、導いた数値を記載しました。
> お手数ですが、この内容で合っているか?確認していただけますでしょうか?
>
>
> 次のURLにあるHowtoを参照しています。
> http://armadillo.atmark-techno.com/howto/a440-custom-lcd-and-touch-panel
>
>
> 自分の理解としては、次のとおりかと。
>
> 1:クロックから、1ドットあたりのpS(ピコ秒)を出しておく。
> 今回は40MHzでしたので、25000ps/dotになります。
>
>
> 2:クロックから1秒あたりの総ドット数を出しておく。
> 使用するLCDのスペックから、クロックを拾い、1秒あたりに処理できる総ドット数
> を求めておきます。
> これは、次のステップ以降でチェックのために参照します。
> 今回は40MHzでしたので、40,000,000dot/Secになります。
>
>
> 3:ドット数をSpecから拾っておく。
> 今回は800x600のLCDですので、表内のH方向のDisplayperiodは800、V方向は600とな
> ります。
> 後、Non-DisplayのH/V方向ドットについては、LCDのスペックの該当する項目から取
> 得します。
> (今回は、H:256、V:28という数字を見つけました)
>
>
> 4:一画面の画素数にリフレッシュレートを掛けて、1秒間の総処理画素数を取得す
> る。
> (3)の数値の表示・非表示のドットをそれぞれH/Vで足した数字を用意します。
> 今回は、H:1056(=800+256)、V:628(=600+28)と算出しました。
> これをH*Vで計算すると、次の数字になります。
> 663,168(=1056*628)
>
> LCDのスペックからリフレッシュレートを探します。
> 今回は60Hzでした。
>
> これら数値から、1秒間の総処理画素数を算出します。
> 39,790,080(=663168*60)
> この数値が(2)の数値に収まり、なおかつ差が少ないことを確認します。
> 問題ない数値と判断しました。
>
>
> 5:これら数値をカーネルビルドの配列要素に置き換える。
> 参照URLにあった配列の各要素に導いた数値を置いてみました。
> {
> /* name rfsh xres yres dotclk lm rm um lm
> hs vs */
> // "FG100410DNCWBGT1", 60, 640, 480, 39683, 0, 0, 0, 0, 45, 160,
> "Name(TBD)", 60, 800, 600, 25000, 0, 0, 0, 0,
> 28, 256,
> 0, /* sync */
> FB_VMODE_NONINTERLACED, /* vmode */
> 0, /* flag */
> },
>
> ここで、ひとつ質問です。
> 上記配列のhsとvsの項ですが、コメント行と数値が合ってないように思われま
> す。
> もし、コメントの順であれば、参照値では160,45になるのでは?
> ここを間違うと画像が流れてしまいそうです。
> 確認をお願いします。
> その他、マージンおよびsync/flagについての考え方についてもお聞かせいただきた
> く(多分このままでいいと思いますが)。
>
>
> なお、上記数値を導くのに使用したスペックの一部を添付します(数値は標準値を使
> 用)。
> (See attached file: 信号タイミング表_20110727.JPG)
>
> 以上
>
> 水口@東静電気
>
>
>
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
--
Koyo Takenoshita
armadillo メーリングリストの案内