- 相關(guān)推薦
在Linux下驅(qū)動(dòng)STN彩色LCD
伴隨著高性能嵌入式處理器的飛速發(fā)展與普及,特別是ARM處理器系列的出現(xiàn),嵌入式系統(tǒng)的功能也變得越來(lái)越強(qiáng)大。以前的單色LCD已不能滿足現(xiàn)今的各種多媒體應(yīng)用,彩色LCD被越來(lái)越多地應(yīng)用到嵌入式系統(tǒng)中。同時(shí),在應(yīng)用需求的促使下,許多工作在Linux下的圖形界面軟件包的開發(fā)和移植工作中都涉及到底層LCD驅(qū)動(dòng)的開發(fā)問題。在硬件采用Intel ASSABET開發(fā)板,軟件采用Linux 2.4.19平臺(tái),編譯器為arm-linux-gcc的交叉編譯器作為開發(fā)的前提下,因?yàn)锳SSABET開發(fā)板上使用的是Sharp 3.9英寸320×240 TFT彩色LCD,現(xiàn)改用Kyocera 7.7英寸640×480 STN型彩色LCD,所以通過對(duì)其Linux驅(qū)動(dòng)程序進(jìn)行改寫和調(diào)試,成功地實(shí)現(xiàn)了對(duì)該種屏的驅(qū)動(dòng)和顯示。
LCD
控制器
LCD控制器的功能是顯示驅(qū)動(dòng)信號(hào),進(jìn)而驅(qū)動(dòng)LCD顯示器。在驅(qū)動(dòng)LCD設(shè)計(jì)的過程中首要的是配置LCD控制器。在配置LCD控制器中最重要的一步則是幀緩沖區(qū)的指定。用戶所要顯示的內(nèi)容皆是從緩沖區(qū)中讀出,從而顯示到屏幕上。幀緩沖區(qū)的大小由屏幕的分辨率和顯示色彩數(shù)決定。驅(qū)動(dòng)幀緩沖的實(shí)現(xiàn)是整個(gè)驅(qū)動(dòng)開發(fā)過程的重點(diǎn)。
ASSABET開發(fā)板采用SA1110作為處理器。SA1110微處理器是Intel公司生產(chǎn)的一種基于StrongARM環(huán)境的微處理器。該處理器內(nèi)部有一LCD驅(qū)動(dòng)控制器,可支持單、雙屏顯示和最大1024×1024dpi。每個(gè)像素?cái)?shù)據(jù)以4、8、12或16位編碼后存儲(chǔ)于外部存儲(chǔ)器內(nèi),通過LCD的專用DAM控制器,被裝入至532位的FIFO中。在雙屏顯示時(shí),兩個(gè)DMA通道分別負(fù)責(zé)上下屏幕的顯示,但只有第一個(gè)DMA通道有調(diào)色板緩沖器。幀緩沖器中的已編碼像素?cái)?shù)據(jù)是作為指針指向256×12位的調(diào)色板。調(diào)色板的色調(diào)數(shù)據(jù)控制著抖動(dòng)邏輯,以產(chǎn)生各種灰度和彩色信號(hào)并從LCD數(shù)據(jù)引腳輸出。
顯示屏
LCD選擇Kyocera公司的7.7英寸STN型LCD。該LCD可在640×480分辨率的情況下提供12位彩色顯示。該屏為雙屏掃描模式,具有兩個(gè)8位的數(shù)據(jù)通道,每種基色都由4位的抖動(dòng)邏輯來(lái)產(chǎn)生15級(jí)灰度,因此可以顯示最多153=3375種可能的顏色。
驅(qū)動(dòng)LCD的設(shè)計(jì)
幀緩沖設(shè)備
幀緩沖設(shè)備為圖像硬件設(shè)備提供了一種抽象化處理。它代表了一些視頻硬件設(shè)備,允許應(yīng)用軟件通過定義明確的界面來(lái)訪問圖像硬件設(shè)備。這樣軟件無(wú)需了解任何涉及硬件底層驅(qū)動(dòng)的東西(如硬件寄存器)。它允許上層應(yīng)用程序在圖形模式下直接對(duì)顯示緩沖區(qū)進(jìn)行讀寫和I/O控制等操作。通過專門的設(shè)備節(jié)點(diǎn)可對(duì)該設(shè)備進(jìn)行訪問,如/dev/fb*。
Linux下可支持多個(gè)幀緩沖設(shè)備,最多可達(dá)32個(gè),即從/dev/fb0到/dev/fb31。通常情況下,缺省的幀緩沖設(shè)備為/dev/fb0。
在SA1110處理器的LCD控制器操作中,幀緩沖器用于存放全部屏幕的所有編碼像素?cái)?shù)據(jù)。在它的最低位地址處是32或512字節(jié)的緩沖器,用來(lái)存放調(diào)色板數(shù)據(jù)表。32位緩沖器用于4、12或16位像素編碼的16項(xiàng)調(diào)色板;512字節(jié)緩沖器用于裝入8位像素編碼的256項(xiàng)調(diào)色板。在12或16位像素編碼時(shí),不使用調(diào)色板,此時(shí)的幀緩沖器的起始32字節(jié)必須填入全零。
主要結(jié)構(gòu)體
struct fb_fix_screeninfo中記錄了幀緩沖設(shè)備和指定顯示模式
[1] [2] [3]
【在Linux下驅(qū)動(dòng)STN彩色LCD】相關(guān)文章:
低雜波電流驅(qū)動(dòng)下加熱的數(shù)值模擬04-27
任務(wù)驅(qū)動(dòng)下的高職旅游英語(yǔ)口語(yǔ)教學(xué)04-30
單片LCD投影機(jī)04-29
黑河流域下游水分驅(qū)動(dòng)下的生態(tài)演化04-30
結(jié)構(gòu)驅(qū)動(dòng)戰(zhàn)略下的虛擬組織:演化、條件和影響04-28
由要素驅(qū)動(dòng) 走向創(chuàng)新驅(qū)動(dòng)05-01
Linux系統(tǒng)下指紋圖像處理系統(tǒng)的研究與實(shí)現(xiàn)04-27
Levy過程驅(qū)動(dòng)下的信用風(fēng)險(xiǎn)結(jié)構(gòu)化模型04-26