在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            關(guān) 閉

            新聞中心

            EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于SEP4O2O的Linux frame buffer驅(qū)動設(shè)計

            基于SEP4O2O的Linux frame buffer驅(qū)動設(shè)計

            作者: 時間:2009-10-23 來源:網(wǎng)絡(luò) 收藏

            3 L i nux驅(qū)動軟件設(shè)計實(shí)現(xiàn)
            3.1 驅(qū)動核心結(jié)構(gòu)體的介紹
            3.1.1.fb_jnfo結(jié)構(gòu)體
            幀緩沖設(shè)備最關(guān)鍵的一個數(shù)據(jù)結(jié)構(gòu)體是fb info結(jié)構(gòu)體,其中包含了關(guān)于幀緩沖設(shè)備屬性和操作的完整描述,定義如下:

            本文引用地址:http://www.biyoush.com/article/202630.htm


            限于篇幅,只列出了部分成員,其中fb_var_screeninfo記錄用戶可以修改的顯示控制器參數(shù),包括屏幕分辨率和每個像素的比特數(shù)等;fb_fix_screeninfo記錄用戶不能修改的顯示控制器參數(shù);cmap為目前的顏色表;fb_ops為幀緩沖操作函數(shù)集;screen_base為幀緩沖的虛擬基地址;i oremapped的虛擬內(nèi)存大小;pseudo_palette為偽16色的顏色表。
            3.1.2.fb_ops結(jié)構(gòu)體
            本結(jié)構(gòu)體為指向底層操作的函數(shù)的指針,這些函數(shù)是需要驅(qū)動程序開發(fā)人員編寫填充的,部分成員定義如下


            fb_check_var ()用于調(diào)整可變參數(shù),并修整為硬件支持的值;fb_set_par()則根據(jù)屏幕參數(shù)設(shè)置具體讀寫LCD控制器的寄存器以使得LCD控制器進(jìn)入相應(yīng)的工作狀態(tài),使用戶設(shè)置的屏幕參數(shù)在硬件上有效;f bsetcolreg ()成員函數(shù)實(shí)現(xiàn)偽顏色表和顏色表的填充。
            3.1.3.fb_var_screeni nfo
            本結(jié)構(gòu)體定義了用戶可以修改的顯示控制器參數(shù),部分成員如下:


            本結(jié)構(gòu)體中,xres為屏幕的水平像素數(shù);yres為屏幕垂直寬度:bits_per_pixel定義每個像素由多少個位表示;pixclock定義了像素時鐘;left_margin是表示行切換中從同步到繪圖之間的延遲;right_margin表示行切換中從繪圖到同步之間的延遲;upper_margin表示幀切換中從同步到繪圖之間的延遲;lower_margin表示幀切換中從繪圖到同步之間的延遲;hsyn_len表示水平同步的長度;vsync_len表示垂直同步的長度。
            3.2 幀緩沖設(shè)備的模塊加載和卸載函數(shù)
            由于LCD控制器被集成在SOC芯片上作為一個獨(dú)立的硬件模塊,也就是platform_device而存在,因此本驅(qū)動中包含平臺驅(qū)動。首先我們要定義platform_driver結(jié)構(gòu)體:


            定義了此結(jié)構(gòu)體之后,在幀緩沖設(shè)備的模塊加載函數(shù)sep4020fb_init(void)中,我們只需要使用函數(shù)platform_driver_register(sep4020fb_driver)注冊平臺驅(qū)動,而其余大部分的初始化工作移交到平臺驅(qū)動的探測函數(shù)sep4020fb_probe中完成。
            在函數(shù)sep4020fb_probe(struct platform_device*pdev)中,首先要申請SEP4020的幀緩沖信息結(jié)構(gòu)體:structsep4020fb_info*info,在此結(jié)構(gòu)體中,成員sep4020fb_ma c h_i n f o記錄了seP4020幀緩存的機(jī)器信息,sep4020fb_hw包含了sep4020微處理器LCD控制器所涉及到的所有寄存器的信息,screen_dma表示幀緩存的物理地址,而screen_cpu代表了幀緩存的虛擬地址。之后要為sep4020fb_mach_info申請內(nèi)存空間,申請完畢之后就要初始化fb_info結(jié)構(gòu)體中的固定和可變參數(shù),即填充fb_var_screeninfo var和fb_fix_screeninfo fix成員。首先通過fb_info一>fbops=&sep4020fb_ops將為sep4020微處理器定義的函數(shù)操作結(jié)構(gòu)體賦予幀緩存信息結(jié)構(gòu)體中對應(yīng)的成員,sep4020fb_ops定義了指向底層操作的一系列函數(shù),本文將在后面詳細(xì)介紹;由于本課題選用的液晶屏為320×240TFT彩屏,所以fb_info->var.xres賦值為320,fb_info一>var.yres賦值為240,fb_info一>var.bits_per_pixel賦值為16,這樣就可以算出幀緩存的長度為320×240×16/8個字節(jié),將此值賦給fbinfo->fix.smem_len成員。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            關(guān)鍵詞: SEP4O2O buffer Linux frame

            評論


            相關(guān)推薦

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

            關(guān)閉