[轉載請註明出處] 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的功能印像深刻,不過真的是太貴了,不適合個人使用!

 

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()