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