基于WinCE的OLED驅動(dòng)程序設計

發(fā)布時(shí)間:2015-10-30 15:27    發(fā)布者:designapp
關(guān)鍵詞: WinCE , OLED
  隨著(zhù)計算機技術(shù)和嵌入式技術(shù)的迅猛發(fā)展, 嵌入式軟、硬件設計需求越來(lái)越廣泛, 嵌入式軟件開(kāi)發(fā), 特別是嵌入式軟件的驅動(dòng)開(kāi)發(fā), 成為一個(gè)熱點(diǎn)。
  Windows CE 是一個(gè)新的、可移植的、實(shí)時(shí)的、模塊化的操作系統,具有簡(jiǎn)捷、高效的完全搶先式多任務(wù)操作核心, 支持強大的通信和圖形顯示功能, 能夠適應廣泛的系統需求, 在最新一代的工業(yè)和家用電子設備中得到了廣泛的應用。
  在進(jìn)行嵌入式Windows CE 項目開(kāi)發(fā)的過(guò)程中, 經(jīng)常需要根據需求定制顯示屏, 如何為定制的顯示屏開(kāi)發(fā)Windows CE 驅動(dòng)程序成為嵌入式系統開(kāi)發(fā)的關(guān)鍵步驟。本文在深入研究Windows CE 驅動(dòng)程序工作原理的基礎上, 以維信諾VGG13264C 132×64 OLED 顯示模塊的WindowsCE 驅動(dòng)程序設計為例, 詳細闡述了嵌入式Windows CE 驅動(dòng)程序的開(kāi)發(fā)過(guò)程, 并對設計實(shí)現的驅動(dòng)程序進(jìn)行了測試。
  1 Window CE 的系統體系結構
  Windows CE 是微軟設計開(kāi)發(fā)的一種可升級的搶先式多任務(wù)32 位實(shí)時(shí)操作系統。一個(gè)基于Windows CE 的平臺主要由以下幾部分組成:Windows CE 內核組件、OAL 層和驅動(dòng)程序。OAL 層和驅動(dòng)程序作為目標設備和Windows CE 內核組件之間的接口, 將操作系統上層與硬件隔離, 便于支持硬件擴展和即插即用功能,圖1 詳細描述了三者之間的關(guān)系。
  


  2 Windows CE 中斷處理
  Windows CE 將中斷處理分為兩個(gè)步驟: 中斷服務(wù)例程(ISR) 和中斷服務(wù)線(xiàn)程(IST)。把每個(gè)硬件的設備中斷請求(IRQ) 和一個(gè)ISR 聯(lián)系起來(lái), 當一個(gè)中斷發(fā)生并未被屏蔽時(shí), 內核調用該中斷注冊的ISR.因為ISR 運行于內核模式, 所以應設計得盡可能短,ISR 引導內核調度和啟動(dòng)合適的IST,IST 在設備驅動(dòng)程序軟件模塊中編寫(xiě), 運行于用戶(hù)模式, 它從硬件獲取或向硬件發(fā)送數據和控制代碼, 并進(jìn)一步處理設備中斷。Windows CE 還提供了中斷嵌套功能, 即在一個(gè)ISR 運行時(shí), 內核并不關(guān)閉中斷, 當優(yōu)先級比之高的中斷發(fā)生時(shí), 內核保存當前執行的中斷服務(wù)例程ISR 的運行狀態(tài), 掛起該ISR,轉而執行更高優(yōu)先級中斷的ISR.等到高優(yōu)先級中斷的ISR執行完后, 被掛起的低優(yōu)先級中斷的ISR 才重新開(kāi)始被CPU 調度執行。Windows CE 的中斷處理框圖如圖2 所示。
  


  3 Windows CE 設備驅動(dòng)程序
  設備驅動(dòng)程序將操作系統和設備連接起來(lái), 使操作系統能夠識別設備, 并為應用程序提供服務(wù)。
  3.1 設備驅動(dòng)程序模型
  Windows CE 提供了用于驅動(dòng)開(kāi)發(fā)的模型,其中包括來(lái)自其他操作系統的驅動(dòng)程序模型。
  因為有這些多變的驅動(dòng)程序模型, 使Windows CE可以適應大部分的內部和外圍設備。目前,Windows CE提供了4 種設備模型, 其中兩種是專(zhuān)用于Windows CE模型, 另外兩種外部模型來(lái)自其他的操作系統, 匯總如圖3 所示。
  


  3.2 本機驅動(dòng)程序
  要把Windows CE 移植到目標平臺上, 必須為平臺上已建立的設備提供驅動(dòng)程序。一些類(lèi)型的設備, 如鍵盤(pán)、顯示器和PC 卡插槽等對操作系統都有一個(gè)自定義接口。因為這些接口是專(zhuān)門(mén)用于Windows CE 的, 所以稱(chēng)這類(lèi)驅動(dòng)程序為本機驅動(dòng)程序。Windows CE 平臺生成器提供本機設備驅動(dòng)程序的樣本, 可考慮把本機設備驅動(dòng)程序樣本應用到平臺上, 而不需要再從頭開(kāi)發(fā)自己的本機驅動(dòng)程序。用戶(hù)可根據驅動(dòng)程序樣本快速開(kāi)發(fā)自己的驅動(dòng)程序。
                               
                  3.3 流接口驅動(dòng)程序
  流接口驅動(dòng)程序由設備管理應用程序加載、管理和卸載, 與具有單獨目的接口的本機驅動(dòng)程序相比, 所有流接口驅動(dòng)程序使用同一個(gè)接口并調用同一個(gè)函數集---流接口函數。流接口驅動(dòng)程序把外設抽象成一個(gè)文件, 使用標準文件I/O 函數和電源管理函數, 這些函數由Windows CE 操作系統的內核使用。流接口驅動(dòng)程序的入口點(diǎn)函數為: XXX_ Init、XXX_Deinit、XXX_IOCONtrol、XXX_Open 、XXX_Close 、XXX_PowerDown 、XXX_PowerUp 、XXX_Read 、XXX_Seek 、XXX_Write .流接口驅動(dòng)程序函數的作用及調用關(guān)系如表1 所示。
  


  表1 Windows CE 下流接口驅動(dòng)程序函數作用及調用關(guān)系
  流接口驅動(dòng)程序從設備管理器和通過(guò)文件系統調用的應用程序接受命令, 裝入驅動(dòng)將這些命令翻譯成其所控制設備的適當操作的所有信息。所有的流接口驅動(dòng), 無(wú)論它管理的是內置式設備還是可安裝式設備, 是系統引導加載還是動(dòng)態(tài)加載, 它們與其他的系統組件都有類(lèi)似的交互過(guò)程。
  3.4 設備驅動(dòng)程序的初始化過(guò)程
  在Windows CE 中, 所有的設備驅動(dòng)程序都以動(dòng)態(tài)鏈接庫(DLL) 的形式存在, 需要通過(guò)進(jìn)程加載。設備驅動(dòng)程序向外提供接口函數, 應用程序使用API 對設備進(jìn)行訪(fǎng)問(wèn)。Windows CE 共有三類(lèi)系統進(jìn)程用來(lái)加載驅動(dòng)程序:Device.exe 、GWES.exe 、FileSys.exe .驅動(dòng)程序的初始化過(guò)程為:設備上電---啟動(dòng)bootloader---啟動(dòng)NK.exe---啟動(dòng)Device.exe---初始化數據結構和I/O---加載總線(xiàn)枚舉器---枚舉注冊表Driver/BuildIn 下所有的子鍵。這里的枚舉就是循環(huán)調用ActivateDeviceEx 函數加載驅動(dòng)程序。
  4 Windows CE 開(kāi)發(fā)流接口驅動(dòng)程序實(shí)例
  以維信諾VGG13264C 132×64 OLED 顯示模塊的驅動(dòng)程序為例, 具體闡述Windows CE 驅動(dòng)開(kāi)發(fā)的過(guò)程。
  4.1 硬件結構
  系統硬件以飛凌OK6410-B 開(kāi)發(fā)板為主板, 以維信諾VGG13264C 顯示模塊為OLED 顯示屏。系統硬件框圖如圖4 所示。
  


  飛凌OK6410 -B 開(kāi)發(fā)板基于三星公司最新的ARM11 處理器S3C6410 , 擁有強大的內部資源和視頻處理能力, 可穩定運行在667 MHz 主頻以上, 支持MobileDDR 和多種NAND Flash .FL6410 開(kāi)發(fā)板上集成了多種高端接口, 如復合視頻信號、攝像頭、USB、SD 卡、液晶屏、以太網(wǎng)等, 豐富的接口可幫助用戶(hù)實(shí)現高端產(chǎn)品級設計。
  維信諾VGG13264C 是132 列×64 行點(diǎn)陣的OLED 單色、字符、圖形顯示模塊, 使用單芯片SSD1303T6 進(jìn)行驅動(dòng), 具有8 位并行數據接口, 模塊內含132×64 顯示數據RAM, 通過(guò)用戶(hù)I/O 接口連接到飛凌OK6410-B 開(kāi)發(fā)板。
  4.2 流接口驅動(dòng)程序開(kāi)發(fā)過(guò)程
  Windows CE 提供了兩種編寫(xiě)流接口驅動(dòng)的方法:
  (1) 通過(guò)編寫(xiě)動(dòng)態(tài)鏈接庫的方法實(shí)現; (2) 通過(guò)修改BSP的方法實(shí)現。由于第二種方法可以加快開(kāi)發(fā)進(jìn)度, 在該實(shí)例中, 使用修改BSP 的方法進(jìn)行流接口驅動(dòng)程序開(kāi)發(fā), 其開(kāi)發(fā)步驟為: 首先在BSP 中新建一個(gè)目錄, 編寫(xiě)驅動(dòng)程序文件并確定驅動(dòng)程序向外提供的接口函數, 然后進(jìn)行注冊表設置, 最后進(jìn)行測試。
  (1) 驅動(dòng)程序代碼編寫(xiě)
  設備初始化使用OED_Init 函數實(shí)現, 設備卸載使用OED_Deinit 函數實(shí)現。在OED_Init 函數中, 使用DrvLib_MapIoSpace 函數實(shí)現物理地址到虛擬地址映射;在OED_Deinit 函數中, 使用VirtualFree 函數釋放驅動(dòng)程序使用的虛擬內存從而實(shí)現了設備的卸載。
  設備的I/O 控制向設備發(fā)出命令, 按照維信諾VGG13264C OLED 顯示模塊的時(shí)序關(guān)系, 通過(guò)控制相應管腳的電平高低實(shí)現向設備發(fā)出命令。設備的I/O 控制在OED_IOControl 函數中實(shí)現, 函數部分代碼如下:
  


  (2) 向外提供函數接口
  通過(guò)配置OED.def 文件導出OLED 提供的接口函數, 供設備管理器使用。在OED.def 文件中添加如下代碼:
  


  (3) 注冊表配置。
  注冊表文件Platform. reg 用來(lái)配置與OLED 驅動(dòng)有關(guān)的信息, 配置如下:
  [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IoControler]
  "Prefix "="OED"
  "Dll "="OED.dll "
  "Index "=dword:0
  隨著(zhù)嵌入式系統廣泛應用到信息家電、工業(yè)控制、移動(dòng)通信、互聯(lián)網(wǎng)等領(lǐng)域, 大量嵌入式系統的開(kāi)發(fā)必將對人類(lèi)科技的發(fā)展起著(zhù)重要的作用。本文介紹的基于嵌入式操作系統Windows CE 的驅動(dòng)程序會(huì )幫助讀者開(kāi)發(fā)出更多的嵌入式系統產(chǎn)品。
                               
               
本文地址:http://selenalain.com/thread-155169-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页