新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PXA270的LCD顯示系統的設計與實現

        基于PXA270的LCD顯示系統的設計與實現

        作者: 時間:2011-01-06 來源:網絡 收藏

          3.1 幀緩沖器的初始化

          主要數據結構如下:

          struct pxafb_info:主要用于幀緩沖區設備驅動框架的搭建,也是Linux為幀緩沖設備定義的驅動層接口。它不僅包含了底層函數,而且還記錄了幀緩沖器設備的全部信息。每個幀緩沖設備都必須與一個fb_info結構相對應。其中成員變量modename為設備名稱,fontname為顯示字體,fbops為指向底層操作的函數的指針。

         struct pxafb_fix_screeninfo:記錄用戶不能修改的顯示控制器參數。它包括屏幕緩沖區的物理地址和長度。

          struct pxafb_var_screeninfo:記錄用戶可以修改的顯示控制器參數。它包括顯示屏幕的分辨率、每個像素的比特數和一些時序變量。其中變量xres定義了屏幕一行所占的像素數,yres定義了屏幕一列所占的像素數,bits_per_pixel定義了每個像素用多少個位來表示。

          幀緩沖區的初始化函數在/drivers/video/pxafb.c文件中,結構如下:

          int __init pxafb_init(void)

          {

           struct pxafb_info *fbi;

           int ret;

          …………

           fbi = pxafb_init_fbinfo(); //初始化一些重要的數據結構

          …………

          /* Initialize video memory */

           ret = pxafb_map_video_memory(fbi); //在內存中創建一個圖像緩存區

           …………

           pxafb_set_var(fbi->fb.var, -1, fbi->fb);

           …………

           ret = register_framebuffer(fbi->fb); //登記,使畫面緩沖區與控制臺設備驅動的高層掛鉤

          …………

          / * Ok, now enable the LCD controller */

           set_ctrlr_state(fbi, C_ENABLE);

           …………

           return ret;

          }

          首先是pxafb_init_fbinfo()的調用,目的在于對幾個數據結構進行初始化,并設置有關的基本的參數,例如所用的字體、顯示屏的規格等,還有為了搭建幀緩沖器的設備驅動框架做一些準備。接著通過pxafb_map_video_memory()函數在內存中創建幀緩沖區,實際上是為一個內存區間另外建立一個映射。這里分配用于幀緩沖區的內存區間應該是不經高速緩存、不加寫緩沖的,這樣才可以一經寫入便立即反映在顯示屏上,而無需先對高速緩存進行刷新。

          pxafb_set_var()函數是為控制臺設備驅動的高層提供一個驅動幀緩沖區的界面。同時也確定一些與畫面緩沖區有關的參數,并記錄在一個fb_var_screeinfo數據結構中。確定了這些參數以后,如果目標幀緩沖區屬于當前選定的控制臺設備,就通過pxa_activate_var()函數把這些參數分門別類地組合生成PXA270各有關寄存器的映像,并最終設置到PXA270的各個LCD控制寄存器中。

          這里用到6個寄存器:

        • DBAR1:DMA通道1的基地址寄存器,用于調色板;
        • DBAR2:DMA通道2的基地址寄存器,用于畫圖;
        • LCCR0:黑白/彩色模式選擇,單畫面/雙畫面顯示方式、被動/主動顯示模式選擇;
        • LCCR1:控制著水平方面的掃描,包括每行的像素、水平同步脈沖寬度、在水平掃描行的開頭和末尾各空出幾個像素等參數;
        • LCCR2:控制著垂直方面的掃描,包括每個畫面的行數、垂直同步脈沖寬度、在畫面的頂部和底部各空出幾行等參數;
        • LCCR3:控制著像素時鐘的頻率以及各種同步脈沖的極性。

        關鍵詞: 收發器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乐至县| 乐亭县| 钟山县| 锦州市| 光山县| 克东县| 壤塘县| 桃园县| 华阴市| 南投县| 孟村| 宿迁市| 连平县| 昂仁县| 延吉市| 上饶市| 东台市| 偏关县| 潜山县| 三门县| 饶阳县| 和顺县| 景泰县| 绵阳市| 治县。| 南昌市| 饶阳县| 蓬安县| 霍林郭勒市| 绵阳市| 泰安市| 平罗县| 揭西县| 漠河县| 宜宾市| 武功县| 涿鹿县| 治县。| 乐山市| 江津市| 青海省|