當(dāng)前位置:首頁(yè) > 智能硬件 > 智能硬件
[導(dǎo)讀]0 引言 隨著世界經(jīng)濟(jì)的迅速發(fā)展,液晶顯示屏廣泛應(yīng)用于手機(jī)、PDA、金融終端等電子產(chǎn)品上,而在嵌入式電子領(lǐng)域,Linux操作系統(tǒng)占有越來(lái)越大的市場(chǎng)份額。因而本文提出在嵌入式Linux平臺(tái)上實(shí)現(xiàn)液晶顯示器的功能,


0 引言
    隨著世界經(jīng)濟(jì)的迅速發(fā)展,液晶顯示屏廣泛應(yīng)用于手機(jī)、PDA、金融終端等電子產(chǎn)品上,而在嵌入式電子領(lǐng)域,Linux操作系統(tǒng)占有越來(lái)越大的市場(chǎng)份額。因而本文提出在嵌入式Linux平臺(tái)上實(shí)現(xiàn)液晶顯示器的功能,詳細(xì)敘述了液晶顯示屏在SEP4020微處理器為基礎(chǔ)的平臺(tái)上的Framebuffer驅(qū)動(dòng)程序設(shè)計(jì)。


1 液晶顯示器原理
1.1 液晶顯示器種類
    液晶顯示器(LCD)根據(jù)驅(qū)動(dòng)方式可以分為靜態(tài)驅(qū)動(dòng)、簡(jiǎn)單矩陣驅(qū)動(dòng)以及主動(dòng)矩陣驅(qū)動(dòng)三種。其中,簡(jiǎn)單矩陣型又可以再分為扭轉(zhuǎn)向列(TN)和超扭轉(zhuǎn)式向列型(STN)兩種,而主動(dòng)矩陣則以薄膜式晶體管(TFT)為主流。
    TN型技術(shù)是LCD中最基本的,其他種類的LCD都以TN型為基礎(chǔ)改進(jìn)而得。TN型LCD顯示質(zhì)量很差,色彩單一、對(duì)比度低,反應(yīng)速度很慢,故主要應(yīng)用于簡(jiǎn)單的數(shù)字符與文字的顯示,如電子表以及電子計(jì)算器等。STN LCD的顯示原理與TN類似,區(qū)別在于TN型的液晶分子將入射光旋轉(zhuǎn)90°,而STN可將入射光旋轉(zhuǎn)180°到270°。STN改善了TN視角狹小的缺點(diǎn),并提高了對(duì)比度,顯示品質(zhì)較TN高。
    TFT型LCD中,晶體管矩陣依顯示信號(hào)開啟或者關(guān)閉液晶分子的電壓,使液晶分子軸轉(zhuǎn)向而成"亮"或者"暗"的對(duì)比,避免了顯示器對(duì)電場(chǎng)效應(yīng)的依靠。因此,TFTLCD顯示質(zhì)量較TN/STN更佳,畫面顯示對(duì)比度可達(dá)150:1以上,反應(yīng)速度逼近30ms甚至更快,適用于PDA、筆記本電腦、數(shù)碼相機(jī)、MP4等。
1.2 液晶顯示器時(shí)序
    圖1為L(zhǎng)CD的典型時(shí)序圖。時(shí)序圖中VFRAME為幀同步信號(hào),VLINE為行同步信號(hào),VCLK為像素時(shí)鐘信號(hào)(用于鎖存圖像數(shù)據(jù)的像素時(shí)鐘),VM為數(shù)據(jù)有效標(biāo)志信號(hào),VD為圖像的數(shù)據(jù)信號(hào)。

    作為幀同步信號(hào)的VFRAME,每發(fā)出一個(gè)脈沖,都意味著新的一屏圖像數(shù)據(jù)開始發(fā)送。而作為行同步信號(hào)的VLINE,每發(fā)出一個(gè)脈沖都表明新的一行圖像資料開始發(fā)送。在幀同步以及行同步的頭尾都必須留有回掃時(shí)間。


2 硬件平臺(tái)
    本設(shè)計(jì)采用的硬件平臺(tái)是基于東南大學(xué)國(guó)家專用集成電路系統(tǒng)工程中心研發(fā)的SEP4020微處理器的開發(fā)板。該處理器是使用0.18μ m標(biāo)準(zhǔn)CMOS的工藝設(shè)計(jì),內(nèi)嵌ASIX CORE(32位RISC內(nèi)核兼容ARM720T,帶8 kB指令數(shù)據(jù)cache和全功能MMU),采用馮諾依曼結(jié)構(gòu)的一款微處理器。該處理器集成了液晶控制模塊(LCDC),此模塊兼容AMBA規(guī)范,有AHB MASTER和AHB SLAVE接口,分別用于讀取需要顯示的數(shù)據(jù)和軟件配置。經(jīng)過(guò)軟件配置后,LCDC能自己獨(dú)立工作,而不再需要內(nèi)核的再次參與,從而節(jié)省內(nèi)核的處理時(shí)間。工作過(guò)程是LCDC使能后申請(qǐng)系統(tǒng)總線,獲得總線使用權(quán)后讀取需要顯示的數(shù)據(jù),數(shù)據(jù)經(jīng)過(guò)相應(yīng)算法的處理就得到滿足時(shí)序要求的信號(hào),送到LCDC顯示驅(qū)動(dòng)器。
    LCDC使用內(nèi)嵌的DMA方式進(jìn)行數(shù)據(jù)操作,配備一個(gè)深度為16的32位FIFO用于緩存顯示數(shù)據(jù),支持1、2、4位的STN灰度顯示和16位TFT彩色顯示,分辨率軟件可配置。相關(guān)的需要配置的寄存器有:
    SSA為屏幕起始寄存器;SIZE為屏幕尺寸寄存器;PCR為面板配置寄存器;HCR為水平配置寄存器;VCR為垂直配置寄存器:PWMR為對(duì)比度控制器;LECR為使能控制寄存器;DMACR為DMA控制寄存器。


3 L i nux驅(qū)動(dòng)軟件設(shè)計(jì)實(shí)現(xiàn)
3.1 驅(qū)動(dòng)核心結(jié)構(gòu)體的介紹
3.1.1.fb_jnfo結(jié)構(gòu)體
    幀緩沖設(shè)備最關(guān)鍵的一個(gè)數(shù)據(jù)結(jié)構(gòu)體是fb info結(jié)構(gòu)體,其中包含了關(guān)于幀緩沖設(shè)備屬性和操作的完整描述,定義如下:

   
    限于篇幅,只列出了部分成員,其中fb_var_screeninfo記錄用戶可以修改的顯示控制器參數(shù),包括屏幕分辨率和每個(gè)像素的比特?cái)?shù)等;fb_fix_screeninfo記錄用戶不能修改的顯示控制器參數(shù);cmap為目前的顏色表;fb_ops為幀緩沖操作函數(shù)集;screen_base為幀緩沖的虛擬基地址;i oremapped的虛擬內(nèi)存大??;pseudo_palette為偽16色的顏色表。
3.1.2.fb_ops結(jié)構(gòu)體
    本結(jié)構(gòu)體為指向底層操作的函數(shù)的指針,這些函數(shù)是需要驅(qū)動(dòng)程序開發(fā)人員編寫填充的,部分成員定義如下


    fb_check_var ()用于調(diào)整可變參數(shù),并修整為硬件支持的值;fb_set_par()則根據(jù)屏幕參數(shù)設(shè)置具體讀寫LCD控制器的寄存器以使得LCD控制器進(jìn)入相應(yīng)的工作狀態(tài),使用戶設(shè)置的屏幕參數(shù)在硬件上有效;f bsetcolreg ()成員函數(shù)實(shí)現(xiàn)偽顏色表和顏色表的填充。
3.1.3.fb_var_screeni nfo
    本結(jié)構(gòu)體定義了用戶可以修改的顯示控制器參數(shù),部分成員如下:


    本結(jié)構(gòu)體中,xres為屏幕的水平像素?cái)?shù);yres為屏幕垂直寬度:bits_per_pixel定義每個(gè)像素由多少個(gè)位表示;pixclock定義了像素時(shí)鐘;left_margin是表示行切換中從同步到繪圖之間的延遲;right_margin表示行切換中從繪圖到同步之間的延遲;upper_margin表示幀切換中從同步到繪圖之間的延遲;lower_margin表示幀切換中從繪圖到同步之間的延遲;hsyn_len表示水平同步的長(zhǎng)度;vsync_len表示垂直同步的長(zhǎng)度。
3.2 Linux幀緩沖設(shè)備的模塊加載和卸載函數(shù)
    由于LCD控制器被集成在SOC芯片上作為一個(gè)獨(dú)立的硬件模塊,也就是platform_device而存在,因此本驅(qū)動(dòng)中包含平臺(tái)驅(qū)動(dòng)。首先我們要定義platform_driver結(jié)構(gòu)體:


    定義了此結(jié)構(gòu)體之后,在幀緩沖設(shè)備的模塊加載函數(shù)sep4020fb_init(void)中,我們只需要使用函數(shù)platform_driver_register(&sep4020fb_driver)注冊(cè)平臺(tái)驅(qū)動(dòng),而其余大部分的初始化工作移交到平臺(tái)驅(qū)動(dòng)的探測(cè)函數(shù)sep4020fb_probe中完成。
    在函數(shù)sep4020fb_probe(struct platform_device*pdev)中,首先要申請(qǐng)SEP4020的幀緩沖信息結(jié)構(gòu)體:structsep4020fb_info*info,在此結(jié)構(gòu)體中,成員sep4020fb_ma c h_i n f o記錄了seP4020幀緩存的機(jī)器信息,sep4020fb_hw包含了sep4020微處理器LCD控制器所涉及到的所有寄存器的信息,screen_dma表示幀緩存的物理地址,而screen_cpu代表了幀緩存的虛擬地址。之后要為sep4020fb_mach_info申請(qǐng)內(nèi)存空間,申請(qǐng)完畢之后就要初始化fb_info結(jié)構(gòu)體中的固定和可變參數(shù),即填充fb_var_screeninfo var和fb_fix_screeninfo fix成員。首先通過(guò)fb_info一>fbops=&sep4020fb_ops將為sep4020微處理器定義的函數(shù)操作結(jié)構(gòu)體賦予幀緩存信息結(jié)構(gòu)體中對(duì)應(yīng)的成員,sep4020fb_ops定義了指向底層操作的一系列函數(shù),本文將在后面詳細(xì)介紹;由于本課題選用的液晶屏為320×240TFT彩屏,所以fb_info->var.xres賦值為320,fb_info一>var.yres賦值為240,fb_info一>var.bits_per_pixel賦值為16,這樣就可以算出幀緩存的長(zhǎng)度為320×240×16/8個(gè)字節(jié),將此值賦給fbinfo->fix.smem_len成員。
    完成可變參數(shù)和固定參數(shù)的填充之后,要為本驅(qū)動(dòng)申請(qǐng)中斷資源,具體函數(shù)為requestirq(irq,sep4020fb_irq,SA INTERRUPT,pdev一>name,info),irq為請(qǐng)求的中斷號(hào),sep4020fb_irq為中斷處理服務(wù)子程序,SA_INTERRUPT表示為一個(gè)快速中斷處理,在執(zhí)行中斷的過(guò)程中禁止所有在當(dāng)前處理器上的其他中斷。申請(qǐng)中斷完畢之后,就要完成本驅(qū)動(dòng)關(guān)鍵步驟,調(diào)用sep4020fb_map_video_memory()函數(shù)申請(qǐng)顯示緩沖區(qū)。在該函數(shù)中,首先調(diào)用PAGE_ALIGN()函數(shù)對(duì)齊申請(qǐng)的緩沖區(qū)的大小,使即將申請(qǐng)的顯示緩沖區(qū)大小為頁(yè)的整數(shù)倍;然后調(diào)用函數(shù)dma_all oc_writecombine(fbi->dev,fbi一>map_size,&fbi一>map_dma,GFP_KERNEL), 分配一塊寫合并的內(nèi)存區(qū)域作為幀緩存,函數(shù)返回值為申請(qǐng)的幀緩存的起始位置的虛擬地址,fbi一>map_dma代表的是該位置的物理地址,fbi一>map_si ze為此內(nèi)存區(qū)的大小。
    完成上面的工作之后,驅(qū)動(dòng)程序在就有了一塊內(nèi)存區(qū)域作為幀緩沖,向此區(qū)域?qū)懭霐?shù)據(jù)就能顯示在液晶屏上。后面還要調(diào)用sep4020fb_init_registers(info)函數(shù)初始化L C D控制器的寄存器;然后調(diào)用sep4020fb_check_var(&fbinfo一>var,fbinfo)檢查可變參數(shù),最后調(diào)用register_framebuffer(fbinfo)注冊(cè)幀緩沖設(shè)備。
3.3 提供給應(yīng)用程序的接口
    本驅(qū)動(dòng)設(shè)計(jì)定義了如下幾個(gè)接口供應(yīng)用程序調(diào)用:fb_ioctl,fb_blank,fb_fillrect.
    部分代碼如下:

    
    sep4020_blank函數(shù)主要實(shí)現(xiàn)了將液晶屏清屏的功能。
    sep4020fb_fillrect函數(shù)實(shí)現(xiàn)了填充液晶屏一塊矩形區(qū)域的功能。
    sep4020fb_ioctl函數(shù)則為上層應(yīng)用提供了更多的功能,部分可供上層調(diào)用的命令如下:
    FBIOGET_VSCREENINFO表示用戶獲取屏幕的可變參數(shù);
    FBIOPUT_VSCREENINFO表示用戶設(shè)置可變的屏幕參數(shù);
    FBIOGET_FSCREENINFO表示用戶獲得屏幕的固定參數(shù);
    FBIOBLANK表示調(diào)用sep4020fb_blank函數(shù)清空液晶屏;
    FBIOPUTCMAP表示設(shè)置屏幕的顏色表;
    FBIOGETCMAP表示獲得顏色表。
3.4 用戶空間對(duì)幀緩沖設(shè)備進(jìn)行訪問(wèn)
    驅(qū)動(dòng)程序經(jīng)過(guò)編譯并加載為模塊后,成為/dev/fb0設(shè)備,在應(yīng)用程序中,操作/dev/fb0一般遵循如下步驟:1)打開/dev/fb0設(shè)備文件;2)調(diào)用ioctl()操作取得屏幕的參數(shù),如屏幕分辨率和每個(gè)像素所占的比特?cái)?shù),進(jìn)而計(jì)算出顯示緩沖區(qū)的大小;3)將屏幕緩沖區(qū)映射到用戶空間;4)映射之后就可以向緩沖區(qū)寫入或者讀出數(shù)據(jù),進(jìn)行繪圖了。


4 測(cè)試與結(jié)論
    根據(jù)前面論述的步驟向屏幕緩沖區(qū)寫入數(shù)據(jù),將每個(gè)像素的值設(shè)為0xF0F0,在屏幕上顯示如下圖像:

    測(cè)試結(jié)果顯示,在本課題驅(qū)動(dòng)模塊的支持下,可以向屏幕緩沖區(qū)寫入數(shù)據(jù)并正確地在屏幕上顯示出來(lái),工作完全正常。本文所提出的設(shè)計(jì)方案已經(jīng)應(yīng)用在本單位某產(chǎn)品上。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉