關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于SEP4O2O的Linux frame buffer驅動設計

        基于SEP4O2O的Linux frame buffer驅動設計

        作者: 時間:2009-10-23 來源:網絡 收藏

        完成可變參數和固定參數的填充之后,要為本驅動申請中斷資源,具體函數為requestirq(irq,sep4020fb_irq,SA INTERRUPT,pdev一>name,info),irq為請求的中斷號,sep4020fb_irq為中斷處理服務子程序,SA_INTERRUPT表示為一個快速中斷處理,在執行中斷的過程中禁止所有在當前處理器上的其他中斷。申請中斷完畢之后,就要完成本驅動關鍵步驟,調用sep4020fb_map_video_memory()函數申請顯示緩沖區。在該函數中,首先調用PAGE_ALIGN()函數對齊申請的緩沖區的大小,使即將申請的顯示緩沖區大小為頁的整數倍;然后調用函數dma_all oc_writecombine(fbi->dev,fbi一>map_size,&fbi一>map_dma,GFP_KERNEL), 分配一塊寫合并的內存區域作為幀緩存,函數返回值為申請的幀緩存的起始位置的虛擬地址,fbi一>map_dma代表的是該位置的物理地址,fbi一>map_si ze為此內存區的大小。
        完成上面的工作之后,驅動程序在就有了一塊內存區域作為幀緩沖,向此區域寫入數據就能顯示在液晶屏上。后面還要調用sep4020fb_init_registers(info)函數初始化L C D控制器的寄存器;然后調用sep4020fb_check_var(&fbinfo一>var,fbinfo)檢查可變參數,最后調用register_(fbinfo)注冊幀緩沖設備。
        3.3 提供給應用程序的接口
        本驅動設計定義了如下幾個接口供應用程序調用:fb_ioctl,fb_blank,fb_fillrect.
        部分代碼如下:

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


        sep4020_blank函數主要實現了將液晶屏清屏的功能。
        sep4020fb_fillrect函數實現了填充液晶屏一塊矩形區域的功能。
        sep4020fb_ioctl函數則為上層應用提供了更多的功能,部分可供上層調用的命令如下:
        FBIOGET_VSCREENINFO表示用戶獲取屏幕的可變參數;
        FBIOPUT_VSCREENINFO表示用戶設置可變的屏幕參數;
        FBIOGET_FSCREENINFO表示用戶獲得屏幕的固定參數;
        FBIOBLANK表示調用sep4020fb_blank函數清空液晶屏;
        FBIOPUTCMAP表示設置屏幕的顏色表;
        FBIOGETCMAP表示獲得顏色表。
        3.4 用戶空間對幀緩沖設備進行訪問
        驅動程序經過編譯并加載為模塊后,成為/dev/fb0設備,在應用程序中,操作/dev/fb0一般遵循如下步驟:1)打開/dev/fb0設備文件;2)調用ioctl()操作取得屏幕的參數,如屏幕分辨率和每個像素所占的比特數,進而計算出顯示緩沖區的大小;3)將屏幕緩沖區映射到用戶空間;4)映射之后就可以向緩沖區寫入或者讀出數據,進行繪圖了。


        4 測試與結論
        根據前面論述的步驟向屏幕緩沖區寫入數據,將每個像素的值設為0xF0F0,在屏幕上顯示如下圖像:

        測試結果顯示,在本課題驅動模塊的支持下,可以向屏幕緩沖區寫入數據并正確地在屏幕上顯示出來,工作完全正常。本文所提出的設計方案已經應用在本單位某產品上。

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

        上一頁 1 2 3 下一頁

        關鍵詞: SEP4O2O buffer Linux frame

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 高淳县| 建德市| 买车| 双辽市| 林甸县| 榆林市| 福清市| 大石桥市| 会理县| 柞水县| 克什克腾旗| 中西区| 长岭县| 湖南省| 新竹县| 和静县| 磴口县| 涞水县| 吕梁市| 南通市| 伊春市| 额敏县| 太白县| 名山县| 青铜峡市| 大方县| 株洲县| 大兴区| 陇川县| 潮州市| 二连浩特市| 河津市| 蒙阴县| 西贡区| 天长市| 北碚区| 米林县| 彭水| 原平市| 赣榆县| 应城市|