[轉載請註明出處] http://kezeodsnx.pixnet.net/blog
作者: kezeodsnx
由於在arm(Q公司)的平台上,不像x86可以有vga driver的support。基本上,framebuffer是由xserver來填,從lcdc透過DMA(降低CPU loading)從framebuffer抓data,然後一分為二。
一條直接由lcdc輸出到panel,另一條由另一顆ADV7125轉成RGB後,由DSUB輸出。
這牽扯到lcd panel/monitor/TV的鎖頻(VSYNC)能力。電視的鎖頻能力較差。給予一組Pixel clock,若相關的blanking parameters不對,電視就會告訴你"not support"。因此,spec就來的相對重要囉。在Linux下有一個utility gtf 可以得到相關的blanking值:
gtf xres yres vsync output如下
Modeline "1024x600_60.00" 48.96 1024 1064 1168 1312 600 601 604 622 -HSync +Vsync
這些值又代表什麼意義呢?詳述如下:
gtf 1024 768 60
# 1024x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 64.11 MHz
Modeline "1024x768_60.00" 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync (+-代表polarity)
According to:
http://www.yolinux.com/HOWTO/XFree86-Video-Timings-HOWTO.html
1024 1080 1184 1344
|-----------|-----------|------------|
HGT1 HSP HGT2
56 104 160
front pulse back
768 769 772 795
|-----------|-----------|------------|
VGT1 VSP VGT2
1 3 23
有一些名詞只是寫法不同,含意是相同的。比如說HGT1就是front porch,可參見上示意圖,各名詞解釋如下:
HGT1: Horizontal guart time 就是一般panel的spec中所定義的horizontal front porch
HSP: Horizontal sync palse 就是一般panel的spec中所定義的horizontal pulse width
HGT2: Horizontal guart time 就是一般panel的spec中所定義的horizontal back porch
V跟H一樣,表示vertical,不多贅述。
不同的chipset中,會有相對應的register需要填入這些值。舉個例子,在我手上的平台,其中有個register定義為:
Display_end_x=Hsync_period-h_front_porch-1=1344-56-1=1287(0x507)。因此需將此值填入此register,請參閱相關的spec,照填就對了。
在實作的過程中,才真正體驗到ICE/JTAG強大的功能,雖然我通常是on-the-fly的去改register的值,但仍然對其breakpoint的功能印像深刻,不過真的是太貴了,不適合個人使用!
留言列表