<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于PXA270的LCD顯示系統的設計與實(shí)現

基于PXA270的LCD顯示系統的設計與實(shí)現

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

  3.1 幀緩沖器的初始化

  主要數據結構如下:

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

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

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

  幀緩沖區的初始化函數在/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); //在內存中創(chuàng )建一個(gè)圖像緩存區

   …………

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

   …………

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

  …………

  / * Ok, now enable the LCD controller */

   set_ctrlr_state(fbi, C_ENABLE);

   …………

   return ret;

  }

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

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

  這里用到6個(gè)寄存器:

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

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>