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