frambuffer引數的確定
1.、lcd工作的硬體需求:
要使一塊lcd正常的顯示文字或影象,不僅需要lcd 驅動器,而且還需要相應的lcd控制器。在通常情況下,生產廠商把lcd驅動器會以cof/cog的形式與lcd玻璃基板製作在一起,而lcd控制器則是由外部的電路來實現,現在很多的mcu內部都整合了lcd控制器,如s3c2410/2440等。通過lcd控制器就可以產生lcd驅動器所需要的控制訊號來控制stn/tft屏了。
2、s3c2440 內部lcd 控制器結構圖
我們根據資料手冊來描述一下這個整合在s3c2440內部的lcd控制器:
a:lcd控制器由regbank、lcdcdma、timegen、vidprcs暫存器組成;
b:regbank 由17個可程式設計的暫存器組和一塊256*16的調色盤記憶體組成,它們用來配置lcd控制器的;
e:timegen 由可程式設計的邏輯組成,他生成lcd驅動器需要的控制訊號,比如vsync、hsync、vclk和lend等等,而這些控制訊號又與regbank暫存器組中的lcdcon1/2/3/4/5的配置密切相關,通過不同的配置,timegen就能產生這些訊號的不同形態,從而支援不同的lcd驅動器(即不同的stn/tft屏)。
3、常見tft屏工作時序分析
(1)lcd提供的外部介面訊號:
vsync/vframe/stv:垂直同步訊號(tft)/幀同步訊號(stn)/sec tft 訊號;
hsync/vline/cpv:水平同步訊號(tft)/行同步脈衝訊號(stn)/sec tft 訊號;
vclk/lcd_hclk:象素時鐘訊號(tft/stn)/sec tft 訊號;
vd[23:0]:lcd 畫素資料輸出埠(tft/stn/sec tft);
vden/vm/tp:資料使能訊號(tft)/lcd 驅動交流偏置訊號(stn)/sec tft 訊號;
lend/sth:行結束訊號(tft)/sec tft 訊號;
lcd_lpcoe:sec tft oe 訊號;
lcd_lpcrev:sec tft rev 訊號;
lcd_lpcrevb:sec tft revb 訊號。
(2)lcd各個引數的含義
a:顯示指標從矩形左上角的第一行第乙個點開始,乙個點乙個點的在lcd 上顯示,在
上面的時序圖上用時間線表示就為vclk,我們稱之為畫素時鐘訊號;
b:當顯示指標一直顯示到矩形的右邊就結束這一行,那麼這一行的動作在上面的時序
圖中就稱之為1 line;
c:接下來顯示指標又回到矩形的左邊從第二行開始顯示,注意,顯示指標在從第一行
的右邊回到第二行的左邊是需要一定的時間的,我們稱之為行切換;
d:如此類推,顯示指標就這樣一行一行的顯示至矩形的右下角才把一副圖顯示完成。
因此,這一行一行的顯示在時間線上看,就是時序圖上的hsync;
e:然而,lcd 的顯示並不是對一副影象快速的顯示一下,為了持續和穩定的在lcd 上
顯示,就需要切換到另一幅圖上(另一幅圖可以和上一副圖一樣或者不一樣,目的只是
為了將影象持續的顯示在lcd 上)。那麼這一副一副的影象就稱之為幀,在時序圖上就
表示為1 frame,因此從時序圖上可以看出1 line 只是1 frame 中的一行;
f:同樣的,在幀與幀切換之間也是需要一定的時間的,我們稱之為幀切換,那麼lcd
整個顯示的過程在時間線上看,就可表示為時序圖上的vsync。
(3)時序圖上各時鐘延時引數的含義
vbpd(vertical back porch):表示在一幀影象開始時,垂直同步訊號以後的無效的行
數,對應驅動中的upper_margin;
vfpd(vertical front porch):表示在一幀影象結束後,垂直同步訊號以前的無效的
行數,對應驅動中的lower_margin;
vspw(vertical sync pulse width):表示垂直同步脈衝的寬度,用行數計算,對應驅
動中的vsync_len;
hbpd(horizontal back porch):表示從水平同步訊號開始到一行的有效資料開始之間
的vclk 的個數,對應驅動中的left_margin;
hfpd(horizontal front porth):表示一行的有效資料結束到下乙個水平同步訊號開
始之間的vclk 的個數,對應驅動中的right_margin;
hspw(horizontal sync pulse width):表示水平同步訊號的寬度,用vclk 計算,對應驅動中的hsync_len;
(4)linux驅動中需要配置的引數
width //螢幕寬度
height 螢幕高度
pixclock //畫素時鐘
xres //水平可見的有效畫素
yres //垂直可見的有效畫素
bpp //色位模式
left_margin //行切換,從同步到繪圖之間的延遲
right_margin //行切換,從繪圖到同步之間的延遲
hsync_len //水平同步的長度
upper_margin //幀切換,從同步到繪圖之間的延遲
lower_margin //幀切換,從繪圖到同步之間的延遲
vsync_len //垂直同步的長度
4、實際tft屏的時序圖
(1)lts350q1時序圖
(2)引數為
width = 240;
height = 320;
pixclock = 166667; /* hclk 60 mhz, divisor 10 */
計算:1/(60/10 * 10^6) * 10^12 = 166667
xres = 240;//水平可見的有效畫素
yres = 320;
bpp = 16;
left_margin = 6;
right_margin = 2;
hsync_len = 3;
upper_margin = 1;//幀切換,從同步到繪圖之間的延遲
lower_margin = 2;//幀切換,從繪圖到同步之間的延遲
vsync_len = 1;//垂直同步的長度
此文件是個人觀點,可能有錯誤….
如何確定函式引數
簡單情況 1 觀察呼叫處的 push 3 push 2 push 1 call 0040100f 2 找到平衡堆疊的 繼續論證 calll 0040100f add esp,0ch 或者函式內部 ret 4 8 0xc 0x10 3 最後,兩者一綜合,函式引數個數基本確定。複雜情況觀察步驟 1.不考...
可變引數,引數的個數不確定
1 引數的個數不確定的 2 可變引數只能放置在引數的最後,即最右邊 3 可變引數最少0個,最多1個 4 編譯器將可變引數當作乙個一維陣列來對待 可變引數 public class demo1 show2 jack marry sisi soso berry show3 qq jack marry s...
linux的frambuffer的相關引數
如果應用程式需要知道framebuffer裝置的相關引數,必須通過ioctl 系統呼叫來完成。在標頭檔案中定義了所有的ioctl命令字,不過,最常用的ioctl命令字是下面這兩個 fbioget fscreeninfo和fbioget vscreeninfo。前者返回與framebuffer有關的固...