国产强伦姧在线观看无码,中文字幕99久久亚洲精品,国产精品乱码在线观看,色桃花亚洲天堂视频久久,日韩精品无码观看视频免费

      您現(xiàn)在的位置:智能制造網(wǎng)>技術中心>framebuffer驅(qū)動全篇

      直播推薦

      更多>

      企業(yè)動態(tài)

      更多>

      推薦展會

      更多>

      framebuffer驅(qū)動全篇

      2009年05月14日 17:20:38人氣:4373來源:杭州市立宇泰電子有限公司

      framebuffer驅(qū)動全篇
      作者:good02xaut    轉(zhuǎn)貼自:    點擊數(shù):586    更新時間:2006-5-8    文章錄入:admin

      在后續(xù)的幾篇里面會詳細介紹如何編寫一個顯卡的驅(qū)動程序。
      framebuffer device在內(nèi)核里面作為顯卡驅(qū)動模型,許多函數(shù)和數(shù)據(jù)結構都是特定,正是這些特定的東西為我們的編程提供了方便。

      要開發(fā)frame buffer device驅(qū)動,你應該閱讀Source\Source\Documentation\fb下面的說明文件,三個重要文件00-INDEX,framebuffer.txt,internals.txt,其他文件都是針對具體顯卡芯片的說明了。


      文件00-INDEX譯文

      文檔/documentation/fb的索引文件。如果你對frame buffer設備有什么想法,mail:Geert Uytterhoeven <geert@>

      00-index 這個文件
      framebuffer.txt--- frame buffer 設備介紹
      internals.txt----frame buffer設備內(nèi)部快速瀏覽
      modedb.txt----關于視頻模式的資料
      aty128fb.txt----關于ATI Rage128顯卡的frame buffer設備
      clgenfb.txt-----關于Cirrus Logic的顯卡
      matroxfb.txt----關于Matrox的顯卡
      pvr2fb.txt----關于PowerVR 2的顯卡
      tgafb.txt----關于TGA(DECChip 21030)顯卡
      vesafb.txt----關于VESA顯卡

      幀緩沖設備(framebuffer.txt譯文)

      維護: Geert Uytterhoeven

      zui后校正:   May 10, 2001

      翻譯:good02xaut@

      0.介紹

      幀緩沖設備提供了顯卡的抽象描述。他同時代表了顯卡上的顯存,應用程序通過定義好的接口可以訪問顯卡,而不需要知道底層的任何操作。

       

      該設備使用特殊的設備節(jié)點,通常位于/dev目錄,如/dev/fb*.

       

      1.用戶角度的/dev/fb*

      從用戶的角度看,幀緩沖設備和其他位于/dev下面的設備類似。他是一個字符設備,通常

      主設備號是29,次設備號定義幀緩沖的個數(shù)。

       

      通常,使用如下方式(前面的數(shù)字代碼次設備號)

              0 = /dev/fb0    First frame buffer
              1 = /dev/fb1    Second frame buffer
            ...
              31 = /dev/fb31  32nd frame buffer

          

      考慮到向下兼容,你可以創(chuàng)建符號鏈接:

            /dev/fb0current -> fb0
           /dev/fb1current -> fb1

      and so on...

       

      幀緩沖設備也是一種普通的內(nèi)存設備,你可以讀寫其內(nèi)容。例如,對屏幕抓屏:

        cp /dev/fb0 myfile

      你也可以同時有多個顯示設備,例如你的主板上出了內(nèi)置的顯卡還有另一獨立的

      顯卡。對應的幀緩沖設備(/dev/fb0 and /dev/fb1 etc.)可以獨立工作。

       

      應用程序如 X server一般使用/dev/fb0作為默認的顯示幀緩沖區(qū)。你可以自定

      把某個設備作為默認的幀緩沖設備,設置$FRAMEBUFFER環(huán)境變量即可。在sh/bash:

          export FRAMEBUFFER=/dev/fb1

      在csh中:

          setenv FRAMEBUFFER /dev/fb1

         

      設定后,X server將使用第二個幀緩沖區(qū)設備。

       

      2.程序員角度看/dev/fb*

      正如你所知,一個幀緩沖設備和內(nèi)存設備類似/dev/mem,并且有許多共性。你可以

      read,write,seek以及mmap()。不同僅僅是幀緩沖的內(nèi)存不是所有的內(nèi)存區(qū),而是顯卡

      的那部分內(nèi)存。

       

      /dev/fb*也允許盡心ioctl操作,通過ioctl可以讀取或設定設備參數(shù)。顏色映射表

      也是通過Ioctl設定。查看 就知道有多少ioctl應用以及相關數(shù)據(jù)結構。

      這里給出摘要:

       

        - 你可以獲取設備一些不變的信息,如設備名,屏幕的組織(平面,象素,...)對應內(nèi)存區(qū)

          的長度和起始地址。

        - 也可以獲取能夠發(fā)生變化的信息,例如位深,顏色格式,時序等。如果你改變這些值,

          驅(qū)動程序?qū)χ颠M行優(yōu)化,以滿足設備特性(返回EINVAL,如果你的設定,設備不支持)

        - 你也可以獲取或設定部分顏色表。

       

       所有這些特性讓應用程序十分容易的使用設備。X server可以使用/dev/fb*而不需知道硬件

       的寄存器是如何組織的。 XF68_FBDev是一個用于位映射(單色)X server,*要做的就是

       在應用程序在相應的位置設定是否顯示。

       

       在新內(nèi)核中,幀緩沖設備可以工作于模塊中,允許動態(tài)加載。這類驅(qū)動必須調(diào)用

       register_framebuffer()在系統(tǒng)中注冊。使用模塊更方便!

       

      3.幀緩沖分辨率設定

       

      幀緩沖的分辨率可以用工具fbset設定。他可以改變視頻設備的顯示模式。主要就是

      改變當前視頻模式,如在啟動過程中,在/etc/rc.* 或 /etc/init.d/* 文件中調(diào)用,

      可以把視頻模式從單色顯示變成真彩.

       

      fbset使用存儲在配置文件中的視頻模式數(shù)據(jù)表,你可以在文件中增加自己需要的顯示模式。

       

      4.X Server

       

      X server (XF68_FBDev)是對幀緩沖設備的zui主要應用。從XFree86  3.2后,X server就是

      XFree86 的一部分了,有2個工作模式:

       

        - 在/etc/XF86Config文件中,如果`Display"段關于 `fbdev"的配置:

          Modes "default"

          X server 將使用前面討論的,從環(huán)境變量$FRAMEBUFFER獲取當前幀緩沖設備.
          你也可以設定顏色位深,使用Depth關鍵字,使用Virtual設定虛擬分辨率。這也是

          默認設置。
         

        - 然而你也可以通過設定/etc/XF86Config,改變分辨率。這樣有很多靈活性,*的

          不足就是你必須設定刷新頻率??梢杂胒bset -x

      通過fbset或xvidtune切換顯示模式。

       

      5.視頻模式頻率

       

      CRT顯示器是用3個電子槍轟擊磷粉完成顏色的顯示的。

      電子槍從左到右的水平掃描,并從上至下的垂直掃描。通過改變槍的電壓,所顯示的顏色

      可以不同。

      當電子槍完成一行掃描重新回到下一行的開始,被稱作“水平折回”。當一屏幕全部

      掃描完畢,電子槍將回到zui左上腳,被成為“垂直折回”。在折回的途中電子槍是關閉的。

       

      電子槍打點的移動速度取決于點時鐘。如果點時鐘是28.37516 MHz,打一個點需要

      35242 ps。

          1/(28.37516E6 Hz) = 35.242E-9 s

       

      如果屏幕分辨率是640x480,那么一行的時間是:

              640*35.242E-9 s = 22.555E-6 s

      然而水平折回也是需要時間的,通常272個打點時間,因此一行總共需要:

              (640+272)*35.242E-9 s = 32.141E-6 s

      我們就認為水平掃描的頻率是31KHz:      

              1/(32.141E-6 s) = 31.113E3 Hz

       

      一屏幕含有480行,加上垂直折回時間49,一屏所需的時間:

              (480+49)*32.141E-6 s = 17.002E-3 s

      我們就認為垂直掃描的頻率是59Hz:

              1/(17.002E-3 s) = 58.815 Hz

      這也意味著屏幕數(shù)據(jù)每秒鐘刷新59次。為了得到穩(wěn)定的圖像顯示效果,VESA垂直掃描

      頻率不低于72Hz。但是也因人而異,有些人50Hz感覺不到任何問題,有些至少在

      80Hz以上才可以。

       

      由于顯示器不知道什么時候新行開始掃描,顯卡為每一行掃描提供水平同步信號。

      類似的,他也為每一幀顯示提供垂直同步信號。圖像在屏幕上點的位置取決于這些

      同步信號的發(fā)生時刻。

       

      下圖給出了所有時序的概要。水平折回的時間就是左邊空白+右邊空白+水平同步長度。

      垂直折回的時間就是上空白+下空白+垂直同步長。     
        +----------+---------------------------------------------+----------+-------+
        |          |                ^                            |          |       |
        |          |                |upper_margin                |          |       |
        |          |                ?                           |          |       |
        +----------###############################################----------+-------+
        |          #                ^                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |   left   #                |                            #  right   | hsync |
        |  margin  #                |       xres                 #  margin  |  len  |
        |<-------->#<---------------+--------------------------->#<-------->|<----->|
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |yres                        #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                |                            #          |       |
        |          #                ?                           #          |       |
        +----------###############################################----------+-------+
        |          |                ^                            |          |       |
        |          |                |lower_margin                |          |       |
        |          |                ?                           |          |       |
        +----------+---------------------------------------------+----------+-------+
        |          |                ^                            |          |       |
        |          |                |vsync_len                   |          |       |
        |          |                ?                           |          |       |
        +----------+---------------------------------------------+----------+-------+

        

      6.把XFree86時序變成frame buffer device時序

      典型的顯示模式:

        "800x600"     50      800  856  976 1040    600  637  643  666
       < name >     DCF       HR  SH1  SH2  HFL     VR  SV1  SV2  VFL  

       

       而幀緩沖設備使用下面的參數(shù):

        - pixclock: 點時鐘 in ps (pico seconds)
        - left_margin: time from sync to picture
        - right_margin: time from picture to sync
        - upper_margin: time from sync to picture
        - lower_margin: time from picture to sync
        - hsync_len: length of horizontal sync
        - vsync_len: length of vertical sync

       

      1) Pixelclock:
         xfree: in MHz
         fb: in picoseconds (ps)

         pixclock = 1000000 / DCF

      2) horizontal timings:
         left_margin = HFL - SH2
         right_margin = SH1 - HR
         hsync_len = SH2 - SH1

      3) vertical timings:
         upper_margin = VFL - SV2
         lower_margin = SV1 - VR
         vsync_len = SV2 - SV1

       

      更好的VESA的例子可以在XFree86的源碼中找到,

       

      關鍵詞:顯示器
      全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

      免責聲明

      • 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.towegas.com。違反者本網(wǎng)將追究相關法律責任。
      • 企業(yè)發(fā)布的公司新聞、技術文章、資料下載等內(nèi)容,如涉及侵權、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔責任,本網(wǎng)有權刪除內(nèi)容并追溯責任。
      • 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負版權等法律責任。
      • 如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。

      <
      更多 >

      工控網(wǎng)機器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機械包裝機械印刷機械農(nóng)業(yè)機械食品加工設備制藥設備倉儲物流環(huán)保設備造紙機械工程機械紡織機械化工設備電子加工設備水泥設備海洋水利裝備礦冶設備新能源設備服裝機械印染機械制鞋機械玻璃機械陶瓷設備橡塑設備船舶設備電子元器件電氣設備


      我要投稿
      • 投稿請發(fā)送郵件至:(郵件標題請備注“投稿”)1271141964.qq.com
      • 聯(lián)系電話0571-89719789
      工業(yè)4.0時代智能制造領域“互聯(lián)網(wǎng)+”服務平臺
      智能制造網(wǎng)APP

      功能豐富 實時交流

      智能制造網(wǎng)小程序

      訂閱獲取更多服務

      微信公眾號

      關注我們

      抖音

      智能制造網(wǎng)

      抖音號:gkzhan

      打開抖音 搜索頁掃一掃

      視頻號

      智能制造網(wǎng)

      公眾號:智能制造網(wǎng)

      打開微信掃碼關注視頻號

      快手

      智能制造網(wǎng)

      快手ID:gkzhan2006

      打開快手 掃一掃關注
      意見反饋
      關閉
      企業(yè)未開通此功能
      詳詢客服 : 0571-87858618