基于S3C2440的WindML圖形驅動設計
2D層與圖形驅動程序通過ugL_ugi_driver結構進行通信。結構中的每一個功能指針對應一個執(zhí)行相應圖形顯示操作的驅動程序。2D層不直接調用驅動程序,它通過結構功能指針調用驅動程序。實現(xiàn)如下:
VxWorks操作系統(tǒng)下,所有的設備必須通過調用xxxDevCreate()程序創(chuàng)建。這個函數(shù)是設備驅動以及設備最初功能的主要入口,uglInit-ialize()程序在WindML初始化時調用xxxDevCreate()。xxxDevCreate()程序需要完成以下功能:
(1)分配驅動圖形結構。該結構已在驅動頭文件里定義。
(2)利用硬件抽象層打開圖形設備。分配了驅動結構之后,硬件抽象層將被用來打開圖形設備,校驗是否能被寫入和映射設備到虛擬內存。在此過程中,圖形設備的基地址和寄存器將被定義。
(3)初始化驅動控制結構。在確定圖形設備可以被訪問之后,初始化驅動控制結構。
(4)設置設備為靜止狀態(tài)。校驗了設備之后,驅動對圖形設備進行最小初始化,并設置其為靜止狀態(tài)。圖形設備設置為靜止狀態(tài)需要以下操作:屏蔽圖形相關中斷;調用uglGenericClutCreate()初始化調色板;初始化圖形芯片的內存控制器;如果需要,則關閉顯示。
(5)返回指向驅動結構的指針。如果xxxDevCreate()函數(shù)執(zhí)行成功,則返回一個指向ugl_ugi_driver結構的指針。如果xxxDevCreate()函數(shù)執(zhí)行失敗,則返回NULL。
此外,驅動程序還必須支持一個信息控制程序,xxxinfo()。這個程序允許應用訪問驅動提供的支持,并且控制各種選項。在獲得畫面緩沖器的特征、獲得基色的信息和以為圖形設備擴展一個實例等方面會用到xxxinfo()。
3 鍵盤驅動程序設計
基于I2C總線鍵盤芯片ZLG7290的芯片內部已實現(xiàn)鍵盤去抖動及連擊鍵等處理,簡化了驅動程序的處理。WindML輸入設備驅動負責完成接收連接在系統(tǒng)上設備的原始數(shù)據(jù),執(zhí)行原始數(shù)據(jù)的轉換,以及將輸入數(shù)據(jù)放到消息隊列中供高層軟件調用,如圖3所示。
評論