在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于PXA270的LCD顯示系統(tǒng)的設(shè)計與實現(xiàn)

            基于PXA270的LCD顯示系統(tǒng)的設(shè)計與實現(xiàn)

            作者: 時間:2011-01-06 來源:網(wǎng)絡(luò) 收藏

              3.1 幀緩沖器的初始化

              主要數(shù)據(jù)結(jié)構(gòu)如下:

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

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

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

              幀緩沖區(qū)的初始化函數(shù)在/drivers/video/pxafb.c文件中,結(jié)構(gòu)如下:

              int __init pxafb_init(void)

              {

               struct pxafb_info *fbi;

               int ret;

              …………

               fbi = pxafb_init_fbinfo(); //初始化一些重要的數(shù)據(jù)結(jié)構(gòu)

              …………

              /* Initialize video memory */

               ret = pxafb_map_video_memory(fbi); //在內(nèi)存中創(chuàng)建一個圖像緩存區(qū)

               …………

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

               …………

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

              …………

              / * Ok, now enable the LCD controller */

               set_ctrlr_state(fbi, C_ENABLE);

               …………

               return ret;

              }

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

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

              這里用到6個寄存器:

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

            關(guān)鍵詞: 收發(fā)器

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉