基于A(yíng)RM處理器S3C2440A的便攜式視頻展示臺的設計
3.3 VGA驅動(dòng)設計方案
3.3.1 LCD幀緩沖設備驅動(dòng)結構
幀緩沖是Linux為顯示設備提供的一個(gè)接口,它把一些顯示設備描述成一個(gè)緩沖區,允許應用程序通過(guò)FrameBuffer定義好的接口訪(fǎng)問(wèn)這些圖形設備,而不用去關(guān)心具體的硬件細節。對于幀緩沖設備而言,只要在顯示緩沖區與顯示點(diǎn)對應的區域寫(xiě)入顏色值,對應的顏色就會(huì )自動(dòng)的在屏幕上顯示。LCD控制器驅動(dòng)是VGA設備驅動(dòng)的核心,是一個(gè)標準的linux2.6內核下的framebuffer設備驅動(dòng)。在VGA驅動(dòng)設計的過(guò)程中首要的是配置LCD控制器。而在配置LCD控制器中最重要的一步則是幀緩沖區(FrameBuffer)的指定。因此,驅動(dòng)幀緩沖是實(shí)現是整個(gè)驅動(dòng)開(kāi)發(fā)過(guò)程的重點(diǎn)。幀緩沖驅動(dòng)需要完成的的工作主要有5個(gè)部分:編寫(xiě)初始化函數,編寫(xiě)成員函數,讀寫(xiě),映射,輸入輸出控制。
1)初始化LCD控制器
通過(guò)寫(xiě)寄存器,設置顯示模式和顏色數,然后分配LCD顯示緩沖區。緩沖區大小為:點(diǎn)陣行數×點(diǎn)陣列數×用于表示一個(gè)像素的比特數/8。緩沖區通常分配在大容量的片外SDRAM中,起始地址保存在LCD控制寄存器中。文中采用的LCD顯示方式為800x600,需要分配的顯示緩沖區為960 KB。最后是初始化一個(gè)fb_info結構,填充其中的成員變量,并調用register_framebuffer(tb_info),將fb_info登記入內核。
2)編寫(xiě)成員函數
該函數主要用于編寫(xiě)fb_info()結構體中指針fb_ops()對應的底層操作函數,主要是3個(gè)函數:

以上這些函數都是用來(lái)獲取fb_info()中的成員變量的,當應用程序調用ioctl()操作時(shí)將會(huì )調用這些函數。
讀寫(xiě)函數就是用來(lái)讀寫(xiě)屏幕緩沖區,地址映射操作可以將文件的內容映射到用戶(hù)空間,這樣用戶(hù)就可以通過(guò)讀寫(xiě)這段地址來(lái)訪(fǎng)問(wèn)緩沖區了。輸入輸出操作就是設備文件ioctl()讀取和設置顯示設備的參數,具體的ioctl()的實(shí)現由底層驅動(dòng)程序來(lái)完成。
3.3.2 根據VGA時(shí)序設定LCD控制器寄存器
本便攜式視頻展示臺選擇SVGA顯示,像素時(shí)鐘信號VCLK為40 MHz,分辨率為800x600,幀頻率為60 Hz,16位真色彩顯示,SVGA時(shí)序如下圖所示。本文引用地址:http://dyxdggzs.com/article/201610/306063.htm
根據圖3、圖4所示SVGA顯示時(shí)序的特點(diǎn),對LCD控制器中的控制寄存器進(jìn)行如下配置。
1)LCDCON1寄存
CLKVAL:確定VCLK頻率的參數。公式為VCLK=HCLK/[(CLKVAL+1)x2],在本設計中S3C2440A的HCLK=100MHz,VCLK=40 MHz,故需設置CLKVAL=0.25,設置BPPMODE=0xC,即選擇TFT 16位模式。
2)LCDCON2寄存器
VBPD:確定幀同步信號和幀數據傳輸前的時(shí)延,是幀數據傳輸前延遲時(shí)間和行同步時(shí)鐘間隔寬度的比值,如圖4所示,VBPD=p/c=0.6 ms/20 μs=30。
VFPD:確定幀數據傳輸完成后到下一幀同步信號到來(lái)的一段延時(shí),是幀數據傳輸后延遲時(shí)間和行同步時(shí)鐘間隔寬度的比值,VFPD=r/c= 0.026 ms/20μs=10。
LINEVAL:確定顯示的垂直方向大小,LINEVAL=YSIZE-1=599。
VSPW:確定幀同步時(shí)鐘脈沖寬度,是幀同步信號時(shí)鐘寬度和行同步時(shí)鐘間隔寬度的比值,VSPW=o/c=0.1 ms/20μs=5。
3)LCDCON3寄存器
HBPD:確定行同步信號和行數據傳輸前的延時(shí),描述行數據傳輸前延遲時(shí)間內VCLK脈沖個(gè)數,HBPD=bxVCLK=2.2μsx40 MHz=88。
HOZAL:確定顯示的水平方向尺寸。這里HOZAL=XSIZE-1=799。
HFPD:確定行數據傳輸完成后到下一行同步信號到來(lái)的一段延遲時(shí)間,描述行數據傳輸后延遲時(shí)間內VCLK脈沖個(gè)數,HFPD=dxVCLK=1 μsx40 MHz=40。
4)LCDCON4寄存器
HSPW:確定行同步時(shí)鐘脈沖寬度。描述行同步脈沖寬度時(shí)間內VCLK脈沖個(gè)數,HSPW=axVCLK=3.2μsx40 MHz=128。
5)LCDCON5寄存器
BPP24BL:確定數據存儲格式。此處設置BPP24BL=0x0,即選擇小端模式存放。
FRM565:確定16位數據輸出格式。設置FRM565=0x1,即選擇5:6:5的輸出格式。
4 結束語(yǔ)
文中根據市場(chǎng)對視頻展示臺的大量需求現狀,提出了基于ARM9的S3C2440的便攜式視頻展示臺的設計方案。與用CPLD/FPGA來(lái)實(shí)現VGA顯示的系統相比,本方案節約成本和資源,且接口電路簡(jiǎn)單,應用靈活、可靠。由本方案做成的視頻展示臺體積小,易于攜帶。本方案經(jīng)過(guò)Linux軟件測試論證,方案切實(shí)可行,對實(shí)物、圖片、文檔或者過(guò)程的顯示效果清晰,無(wú)抖動(dòng)。
評論