亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種通信終端LCD屏的驅(qū)動(dòng)設(shè)計(jì)和移植

        2018-02-07 05:45:28
        艦船電子工程 2018年1期
        關(guān)鍵詞:嵌入式信號(hào)設(shè)備

        謝 聰

        (武漢船舶通信研究所 武漢 430079)

        1 引言

        通信顯示終端是通信系統(tǒng)及設(shè)備的重要組成部分,通常具有一定的信息處理能力和對(duì)外通信網(wǎng)絡(luò)接口,提供相關(guān)設(shè)備信息的顯示功能以及人機(jī)交互功能。目前觸屏顯示設(shè)備主要基于X86系列處理器,其驅(qū)動(dòng)及應(yīng)用軟件系統(tǒng)與PC系統(tǒng)類似具有良好的復(fù)用性只需部署即可使用,作為通信設(shè)備的顯示終端為兼顧系統(tǒng)穩(wěn)定性、低功耗、小型化等特性,為此需選用嵌入式處理器開發(fā)通信智能控制顯示終端,來更好的滿足上述要求,但在嵌入式終端設(shè)備的軟件平臺(tái)及系統(tǒng)應(yīng)用方面沒有成熟的商業(yè)化平臺(tái),因此,通用通信智能控制顯示終端的軟件系統(tǒng)開發(fā)是設(shè)備實(shí)現(xiàn)的關(guān)鍵,而底層的驅(qū)動(dòng)開發(fā)及移植是實(shí)現(xiàn)的軟件基礎(chǔ)。本文主要就通信領(lǐng)域的智能控制顯示終端的觸屏顯示設(shè)備的LCD原理及其驅(qū)動(dòng)開發(fā)等方面進(jìn)行了詳細(xì)介紹,重點(diǎn)分析了終端設(shè)備顯示控制器的寄存器設(shè)置以及控制器顯示模塊的驅(qū)動(dòng)實(shí)現(xiàn)方法,結(jié)合選型的工業(yè)液晶屏?xí)r序要求在嵌入式系統(tǒng)上進(jìn)行移植和測(cè)試驗(yàn)證,為實(shí)現(xiàn)具有自主可控的智能通信控制顯示終端及平臺(tái)提供基礎(chǔ)支撐和技術(shù)保障。

        2 顯示終端原理概述

        2.1 顯示屏原理

        TFT-LCD(薄膜晶體管液晶顯示器),成為目前最為主流的液晶顯示器類型,廣泛應(yīng)用于桌面顯示器、筆記本電腦和眾多嵌入式設(shè)備中。邏輯上顯示屏所顯示的一幅完整畫面即一個(gè)幀(frame),在系統(tǒng)內(nèi)存中用一段存儲(chǔ)空間(幀緩沖設(shè)備)與整個(gè)顯示區(qū)域?qū)?yīng),應(yīng)用通過改變?cè)搸彌_(FrameBuffer)的內(nèi)容,從而改變顯示屏的顯示內(nèi)容;顯示屏上的每一像素點(diǎn)都與幀緩沖設(shè)備里的某一位置對(duì)應(yīng),鑒于計(jì)算機(jī)顯示的顏色是通過RGB值來表示的,則必須給出相應(yīng)的幀緩沖中RGB碼值來實(shí)現(xiàn)顯示屏在屏幕某一像素點(diǎn)顯示某種顏色的效果[1~2]。物理上TFT-LCD液晶屏由顯示屏、信號(hào)驅(qū)動(dòng)部件、背光源等組成,其最重要的信號(hào)驅(qū)動(dòng)部件由LCD控制器、LCD時(shí)序控制器、源驅(qū)動(dòng)器/柵極驅(qū)動(dòng)器構(gòu)成,目前LCD控制器多集成在處理器中,專門用于液晶屏的接口,可以獨(dú)立地對(duì)屏提供同步時(shí)序信號(hào)和顯示數(shù)據(jù)信號(hào);時(shí)序控制器是信號(hào)驅(qū)動(dòng)部件中負(fù)責(zé)時(shí)序管理的控制單元,它直接控制著屏中的驅(qū)動(dòng)部件(LCD驅(qū)動(dòng)器)保證其輸出正確的控制時(shí)序,實(shí)現(xiàn)LCD控制器與LCD驅(qū)動(dòng)器間的信號(hào)時(shí)序轉(zhuǎn)換功能;LCD驅(qū)動(dòng)器主要用來生成屏所需要的各種驅(qū)動(dòng)信號(hào),分為柵極驅(qū)動(dòng)器(Gate Driver)和源驅(qū)動(dòng)器(Source Driver)[3],其物理組成框圖見圖1。

        圖1 顯示屏物理組成示意框圖

        一般LCD驅(qū)動(dòng)器所需要的輸入時(shí)序信號(hào)眾多,且不同的LCD驅(qū)動(dòng)器所需要的輸入時(shí)序信號(hào)不盡相同,以下信號(hào)是所有LCD驅(qū)動(dòng)器所必需的,如表1。

        表1 LCD信號(hào)功能表

        2.2 顯示終端平臺(tái)組成

        本文涉及的通信終端采用目前主流ARM Cor?tex處理器、液晶觸摸顯示屏、嵌入式Linux操作系統(tǒng)等構(gòu)建顯示終端基礎(chǔ)平臺(tái),為上層基于QT等GUI工具開發(fā)的通信監(jiān)控應(yīng)用提供運(yùn)行環(huán)境。

        2.2.1 硬件組成

        硬件平臺(tái)采用三星公司的S5PV210芯片為微處理器,S5PV210采用的是主頻可達(dá)到1G Hz的ARM Cortex-A8內(nèi)核,具有64/32位內(nèi)部總線結(jié)構(gòu),32/32KB的數(shù)據(jù)/指令一級(jí)緩存,512KB的二級(jí)緩存,可實(shí)現(xiàn)每秒2億條指令集的運(yùn)算能力。支持XGA(1027*768)級(jí)別LCD顯示,其內(nèi)置LCD控制器可以傳輸顯示數(shù)據(jù)和產(chǎn)生控制信號(hào),接口包含行掃/時(shí)鐘/使能控制信號(hào)和RGB數(shù)據(jù)信號(hào),通過I2C和中斷腳方式支持電容和電阻屏[4~6];液晶屏選用日立工業(yè)屏KOE TX18D200VM0EAA,它是由JDI公司生產(chǎn)的5寸TFT類型的LCD,支持VGA接口,4:3格式,分辨率為640*480像素,262K色(R、G、B 6BIT),顯示響應(yīng)時(shí)間不大于45ms[7]。

        2.2.2 基礎(chǔ)軟件組成

        底層基礎(chǔ)軟件基于嵌入式Linux內(nèi)核和Fram?buffer機(jī)制進(jìn)行驅(qū)動(dòng)設(shè)計(jì)與移植。

        3 軟件設(shè)計(jì)

        3.1 顯示屏數(shù)據(jù)組織

        LCD上一副畫面稱為一幀,每幀由多個(gè)行組成,多個(gè)像素組成了一行,多位(bit)數(shù)據(jù)組成了每個(gè)像素的顏色。對(duì)于262K色的KOE TX13D200VM5BAA LCD,每個(gè)像素由18bit來表示R、G、B各6bit,稱為18BPP。當(dāng)VSYNC信號(hào)到來,顯示器從屏幕的最左上方開始,從左往右一行行的顯示每個(gè)像素的數(shù)據(jù),當(dāng)顯示到一行最右邊時(shí),HSYNC信號(hào)到來,隨即跳到下一行的最左邊開始顯示下一行;當(dāng)所有行顯示完后,VSYNC信號(hào)重新到來,跳到最左上方顯示下一幀[8]。

        3.2 內(nèi)存數(shù)據(jù)組織

        通常LCD控制器支持多種幀緩沖區(qū)的內(nèi)存格式,如:25BPP Display(A888)、32BPP(8888)、24BPP Display(A887)、24BPP Display(888)等,實(shí)際上在Linux驅(qū)動(dòng)程序里用得比較多的是32BPP(8888)的內(nèi)存格式組織圖象數(shù)據(jù),即用32位數(shù)據(jù)來表示一個(gè)像素的顏色,每種原色(R、G、B)使用8位,還有8位分配給ALPHA。(ALPHA用于實(shí)現(xiàn)圖形漸變效果、半透明效果:0xff全透明0x00不透明)其32BPP(8888)格式在內(nèi)存中像素的排列格式如表2。

        表2 32BPP內(nèi)存格式WSWP無效

        控制器中的VDMA自動(dòng)地從幀緩沖區(qū)中獲取視頻數(shù)據(jù)(如上述的32BPP(8888)內(nèi)存格式),再由VPRCS接受來自VDMA的視頻數(shù)據(jù)后并將它們組合成指定的數(shù)據(jù)格式(例如24bpp或16bpp模式),經(jīng)由控制器數(shù)據(jù)端口(RGB_VD,or SYS_VD)發(fā)送到LCD顯示,像素顏色值與VD[23:0]引腳的對(duì)應(yīng)關(guān)系。

        結(jié)合文獻(xiàn)[9]中介紹時(shí)序關(guān)系,LCD屏根據(jù)其時(shí)序設(shè)置,按這些信號(hào)有序并不停地讀取總線數(shù)據(jù)并顯示;

        3.3 S5PV210顯示控制器寄存器設(shè)置

        通過設(shè)置S5PV210的顯示控制器的寄存器,配置顯示緩沖區(qū)、時(shí)序、窗口、坐標(biāo)等參數(shù)后,便可將所顯示的內(nèi)容從顯示緩沖區(qū)中讀出屏中顯示[10],其寄存器說明見表3。

        表3 CPU顯控寄存器組成表

        寄存器的配置在操作系統(tǒng)內(nèi)核中文件路徑為

        /drivers/video/samsung/S3cfb_fimd6x.c中實(shí)現(xiàn)。其具體相關(guān)實(shí)現(xiàn)函數(shù)如下:

        函數(shù)s3cfb_set_output:配置VIDCON0寄存器,實(shí)現(xiàn)視頻控制器的輸出格式(RGB);

        函數(shù)s3cfb_set_display_mode:配置 VIDCON0寄存器,實(shí)現(xiàn)RGB的模式(Parallel RGB);

        函數(shù) s3cfb_set_timing:配置VIDTCON0、VIDT?CON1寄存器,根據(jù)實(shí)際LCD的時(shí)序圖設(shè)定VBPDE(YVU)、VBPD 、VFPD、VSPW、VFPDE(YVU)、HB?PD、HFPD、HSPW;

        函 數(shù) s3cfb_set_window_position:配 置 VI?DOSD0C和VIDOSD0B寄存器,設(shè)置窗口的左上角和右下角的位置;

        函數(shù)s3cfb_set_window_size:配置 VIDOSD0C寄存器,設(shè)置窗口的大?。℉eight*Width);

        函數(shù)s3cfb_set_buffer_size:配置VIDWxxADD2寄存器,設(shè)置虛擬屏幕的頁(yè)寬度(字節(jié))。

        3.4 幀緩沖驅(qū)動(dòng)框架分析

        幀緩沖設(shè)備驅(qū)動(dòng)采用分層的設(shè)計(jì)方式,在內(nèi)核空間里第一層是對(duì)幀緩沖設(shè)備文件層接口file_op?erations結(jié)構(gòu)體進(jìn)行填充(代碼實(shí)現(xiàn)在/drivers/video/fbmem.c),它向用戶空間提供/dev/fb*設(shè)備的訪問接口,用戶空間通過它繪制圖形。在內(nèi)核空間里第二層是對(duì)幀緩沖設(shè)備驅(qū)動(dòng)層接口fb_info結(jié)構(gòu)體進(jìn)行填充(代碼實(shí)現(xiàn)在/drivers/video/samsung/s3cfb.c),這是與架構(gòu)相關(guān)代碼,初始化LCD控制器,注冊(cè)/注銷幀緩沖設(shè)備等,其中fb_ops結(jié)構(gòu)體中的成員函數(shù)實(shí)現(xiàn)對(duì)LCD控制器硬件寄存器操作[11],具體示意圖見圖2。

        圖2 函數(shù)組成圖

        3.5 驅(qū)動(dòng)設(shè)計(jì)和移植

        幀緩沖設(shè)備驅(qū)動(dòng)最重要的數(shù)據(jù)結(jié)構(gòu)有定義在/include/linux/fb.h文件中的 fb_info、fb_var_screenin?fo、fb_fix_screeninfo、fb_ops等結(jié)構(gòu),以及定義在/linux/drivers/vedio/fbmem.c文件中的file_operations結(jié)構(gòu)。

        圖3 LCD初始化流程示意

        fb_info結(jié)構(gòu)中描述了幀緩沖設(shè)備全部?jī)?nèi)容,例如屬性、狀態(tài)和操作等,每個(gè)幀緩沖設(shè)備都有一個(gè)對(duì) 應(yīng) 的 fb_info結(jié) 構(gòu) ,fb_var_screeninfo、fb_fix_screeninfo、fb_ops都包含在該結(jié)構(gòu)中。其中fb_var_screeninfo結(jié)構(gòu)描述了用戶可修改的顯示控制器參數(shù),包括LCD分辨率、BPP、內(nèi)存中像素顏色組織方式和時(shí)序參數(shù)等;fb_fix_screeninfo結(jié)構(gòu)描述了用戶不能修改的顯示控制器參數(shù),包括屏幕緩沖區(qū)的物理地址、長(zhǎng)度等,該結(jié)構(gòu)的成員需要在驅(qū)動(dòng)程序中初始化和設(shè)置,其初始化過程見圖3;fb_ops結(jié)構(gòu)是指向底層操作的函數(shù)指針結(jié)構(gòu)體,它類似于file_operations結(jié)構(gòu)實(shí)現(xiàn)文件設(shè)備操作;file_opera?tions結(jié)構(gòu)是幀緩沖設(shè)備驅(qū)動(dòng)的文件層操作接口[12]。在s3cfb_probe函數(shù)中,描述了LCD驅(qū)動(dòng)實(shí)現(xiàn)的全部?jī)?nèi)容。s3cfb_lcd是描述LCD屏密切相關(guān)參數(shù)的結(jié)構(gòu)體,在arch/arm/mach-s5pv210/mini210-lcds.c中實(shí)現(xiàn),mini210_machine_init函數(shù)(定義在arch/arm/mach-s5pv210/mach-mini210.c),通 過 調(diào) 用mini210_get_lcd完成LCD屏密切相關(guān)參數(shù)的傳遞,那么移植LCD驅(qū)動(dòng)的關(guān)鍵內(nèi)容就在于修改s3cfb_lcd結(jié)構(gòu)中的成員。s3cfb_lcd結(jié)構(gòu)如下:

        struct s3cfb_lcd{

        int width;

        int height;

        int p_width;

        int p_height;

        int bpp;

        int freq;

        struct s3cfb_lcd_timing timing;

        struct s3cfb_lcd_polarity polarity;

        void(*init_ldi)(void);

        void(*deinit_ldi)(void);

        unsigned long args;

        };

        根據(jù)KOE TX13D200VM5BAA LCD屏的時(shí)序、像素、BPP、極性、頻率等參數(shù),在arch/arm/mach-s5pv210/mini210-lcds.c中增加如下內(nèi)容:

        static struct s3cfb_lcd wvga_s70={

        .width=640,

        .height=480,

        .p_width=102,//LCD屏的有效區(qū)域,非物理尺寸

        .p_height=77,//LCD屏的有效區(qū)域,非物理尺寸

        .bpp=32,

        .freq=60,//刷新率

        .timing={

        .h_fp=100,

        .h_bp=50,

        .h_sw=10,

        .v_fp=40,

        .v_fpe=1,

        .v_bp=4,//guess 4

        .v_bpe=1,

        .v_sw=1,//guess 1

        },

        .polarity={

        .rise_vclk=0,//下降沿鎖寸數(shù)據(jù)(此參數(shù)是數(shù)據(jù)圖象清晰的關(guān)鍵參數(shù))

        .inv_hsync=0,

        .inv_vsync=0,

        .inv_vden=0,

        4 測(cè)試驗(yàn)證

        4.1 編譯

        完成以上內(nèi)核代碼修改后,必須完成編譯才能進(jìn)行測(cè)試。由于移植LCD屏并沒有涉及到驅(qū)動(dòng)結(jié)構(gòu)的變動(dòng),所以勿需修改Makefile、Kconfig文件,執(zhí)行“make menuconfig”,出現(xiàn)配置內(nèi)核界面,在主菜單里選擇<Exit>退出,輸入以下命令,開始編譯內(nèi)核:#make zImage,編譯結(jié)束后,會(huì)在arch/arm/boot目錄下生成linux內(nèi)核映象文件:zImage。

        4.2 測(cè)試

        將編譯好的LCD設(shè)備驅(qū)動(dòng)下載到目標(biāo)板,編寫應(yīng)用測(cè)試程序lcd_test;進(jìn)入測(cè)試程序源代碼目,使用命令行進(jìn)行手工交叉編譯測(cè)試程序,生成lcd_test可執(zhí)行文件:

        #arm-linux-gcc-o lcd_test lcd_test.c

        通過FTP,將編譯好的可執(zhí)行文件下載到目標(biāo)板。進(jìn)入目標(biāo)板上可執(zhí)行文件所

        測(cè)試結(jié)果如下圖,打開了5個(gè)FB,使用了透明度功能,5個(gè)窗口疊加效果如下在的目錄,改變可執(zhí)行文件屬性:

        #chmod+x lcd_test

        執(zhí)行文件:./lcd_test,窗口輸出的信息如下:

        open framebuffer ok.

        640,480,32bpp

        [1511.469789] s3cfb s3cfb: win 0:pmem_start=0x3c331000

        [1511.469803] s3cfb s3cfb: [fb0] dma:0x3c331000,cpu:0xe3000000,size:0x00465000

        [1511.476159] s3cfb s3cfb: [fb1] dma:0x3a200000,cpu:0xffc00000,size:0x00177000

        [1511.485200] s3cfb s3cfb: [fb3] dma:0x39c00000,cpu:0xffa00000,size:0x00177000

        [1511.489190] s3cfb s3cfb: [fb4] dma:0x39e00000,cpu:0xff800000,size:0x00177000

        set screeninfo ok

        draw color ok

        show window ok

        實(shí)際LCD顯示圖型如圖4所示。

        5 結(jié)語(yǔ)

        LCD屏顯示及Linux幀緩沖架構(gòu)在嵌入式Linux顯示中已廣泛應(yīng)用,幀緩沖創(chuàng)建的不僅僅是面底層設(shè)備和上層應(yīng)用的抽象,更是一種設(shè)計(jì)思想架構(gòu)與應(yīng)用模型,本文通過分析LCD屏以及控制器的原理、特點(diǎn),結(jié)合嵌入式通信應(yīng)用環(huán)境提出基于最新ARM-CcortexA8架構(gòu)LCD控制器和觸屏的驅(qū)動(dòng)移植開發(fā)方法,并在實(shí)際工作中有所應(yīng)用與實(shí)現(xiàn),隨著后續(xù)研發(fā)實(shí)現(xiàn)此驅(qū)動(dòng)開發(fā)方法和相關(guān)技術(shù)適用于多種智能顯示終端的設(shè)計(jì)實(shí)現(xiàn),具有較好的技術(shù)推廣和應(yīng)用價(jià)值。

        圖4 LCD顯示圖型

        [1]馮國(guó)進(jìn).嵌入式Linux驅(qū)動(dòng)程序設(shè)計(jì)從入門到精通[M].北京:清華大學(xué)出版社,2008:151-168.

        [2]吳利剛.基于ARM驅(qū)動(dòng)TFT-LCD模塊研究與應(yīng)用[D].汕頭:汕頭大學(xué),2011:8-15.

        [3]王珊.TFT-LCD顯示芯片的驅(qū)動(dòng)設(shè)計(jì)與研究[D].西安:西安電子科技大學(xué),2014:9-16.

        [4]葛耿育.S5PV210微處理器的啟動(dòng)過程分析[J].計(jì)算機(jī)工程應(yīng)用技術(shù),2017,13(15):220-221.

        [5]SamSung Electronics Co.,Ltd.S5PV210 RISC Micropro?cessorS5PV210_UM_REV1.1[EB/OL].http://www.sam?sungsemi.com,2010-5.

        [6]劉龍,張?jiān)拼?,申華.嵌入式Linux軟硬件詳解[M].北京:人民郵電出版社,2015:183-188.

        [7] KOE.TX18D200VM0EAASpecifications[R].TaiWan:Kaohsiung Opto-Electronics Inc,2013.

        [8]韋東山.嵌入式Linux應(yīng)用開發(fā)[M].北京:人民郵電出版社,2008:200-201.

        [9]王永濤,虞闖.嵌入式LCD裸機(jī)驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)[J].沈陽(yáng)理工大學(xué)學(xué)報(bào),2016,35(6):3-4.

        [10]友善之臂.Linux平臺(tái)下Mini210s裸機(jī)程序開發(fā)指南[EB/OL].http://www.arm9home.net,2012-10.

        [11]陳磊.基于CK-CPU嵌入式平臺(tái)的LCD驅(qū)動(dòng)的開發(fā)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012:23-29.

        [12]楊斌斌.嵌入式Linux設(shè)備驅(qū)動(dòng)程序的研究與開發(fā)[D].太原:太原理工大學(xué),2009:53-59.

        猜你喜歡
        嵌入式信號(hào)設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        信號(hào)
        鴨綠江(2021年35期)2021-04-19 12:24:18
        完形填空二則
        基于MPU6050簡(jiǎn)單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        基于FPGA的多功能信號(hào)發(fā)生器的設(shè)計(jì)
        電子制作(2018年11期)2018-08-04 03:25:42
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        基于LabVIEW的力加載信號(hào)采集與PID控制
        原來他們都是可穿戴設(shè)備
        97超在线视频免费| 亚洲综合网站久久久| 性色做爰片在线观看ww| japanesehd中国产在线看| 99久久精品国产一区二区蜜芽| 在线国产视频精品视频| 蜜桃视频永久免费在线观看| 日本午夜剧场日本东京热| 国产高清乱码又大又圆| 精品国产乱码久久久久久影片| 少妇AV射精精品蜜桃专区| 亚洲性码不卡视频在线| 中文字幕女优av在线| 色拍自拍亚洲综合图区| 人妻少妇偷人精品无码| 日韩在线精品视频免费| av剧情演绎福利对白| 国产精品久久久久久婷婷| 老熟妇Av| 亚洲综合精品一区二区 | 日本人妻系列一区二区| 99久久免费视频色老| 国产成人无码区免费内射一片色欲 | 蜜桃av噜噜一区二区三区9| 久久成人国产精品| 欧美色色视频| 女同在线视频一区二区| 国产丝袜美女| 日本韩无专砖码高清| 国产人妖赵恩静在线视频| 99人中文字幕亚洲区三| 欧美日韩精品| 女同av在线观看网站| 国产精品毛片一区二区三区 | 青青草视频网站免费观看| 久久国产精品国语对白| 日本高清视频wwww色| 久久婷婷色综合一区二区 | 国产成人精品日本亚洲| 亚洲国产成人无码电影| 国产精品成人自拍在线观看|