999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

UEFI驅動程序的研究與開發

2014-03-16 05:29:14韓德強
電子技術應用 2014年5期
關鍵詞:設備服務模型

韓德強,馬 駿,張 強

(北京工業大學 計算機學院,北京100124)

統一可擴展固件接口UEFI(Unified Extensible Firmware Interface)是 Intel推出的新一代 BIOS技術,旨在定義一套操作系統與平臺固件之間完整的接口規范,為操作系統的引導提供標準環境[1]。相比于使用匯編語言編寫的傳統BIOS,UEFI采用模塊化的設計、C語言風格的參數堆棧傳遞方式,借由動態鏈接的形式所構建出來的系統,更易于實現[2]。 同時,UEFI是以 32 bit或 64 bit CPU保護模式運行,突破了傳統16 bit實模式代碼的尋址能力,可達到CPU的最大尋址空間。得益于這些優點,UEFI經過近10年的推廣,已經成為主流,將使用傳統BIOS的微型計算機系統逐漸淘汰出市場[3]。

UEFI中引入了UEFI驅動程序模型的概念,采用驅動/協議的結構開發驅動程序,驅動程序和硬件完全獨立,具有很強的擴展性,從而使得UEFI平臺下添加新的特性變得簡單[4]。

1 UEFI基本結構分析

UEFI主要由引導管理器、固件內核、協議、驅動模型等組件構成[4]。其中固件內核為UEFI的基礎,它將底層硬件功能抽象化,為上層的引導管理器提供兩種服務:引導服務和運行時服務。引導管理器是一個策略引擎,它使用固件內核提供的服務加載UEFI驅動程序和應用程序,并最終加載操作系統。

圖1所示為UEFI的系統框架圖。固件內核運行在PEI和DXE階段,UEFI在PEI階段直接與硬件層打交道,啟動必需的硬件資源,譬如完成CPU和芯片組的初始化,進而滿足DXE的執行啟動條件;其后,系統在DXE階段完成其他所有硬件的初始化,并為上層接口實現引導服務和運行時服務。引導管理器運行在DXE和BDS階段,它通過加載框架驅動和平臺驅動向上層提供UEFI服務和接口,通過加載應用程序擴展系統功能,并在BDS階段提供一個引導菜單,供用戶選擇引導設備。最終引導加載器在ROM上加載操作系統加載器,將控制權移交給操作系統,完成操作系統的引導。

2 CC2531 ZigBee模塊的設備驅動程序開發

CC2531是TI公司推出的一款用于IEEE 802.15.4或ZigBee應用的片上系統解決方案,它能夠以非常低的成本建立網絡節點,支持低功耗的無線通信,主要用于遠程控制、家庭控制等領域[5]。CC2531集成了USB2.0功能模塊,可以更加方便地與主機進行通信。

本文將CC2531 ZigBee模塊(以下簡稱 CC2531模塊)通過USB接口與無線POS機的主機相連,CC2531模塊通過ZigBee無線網絡與POS機的外設(如打印機、客顯、鍵盤等)進行信息交互。此方案實現了在啟動操作系統之前對POS機及其外設進行相應遠程檢測和診斷的功能。圖2為無線POS機系統的結構框圖。

圖1 UEFI系統結構框架圖

圖2 無線POS機系統結構框圖

2.1 UEFI驅動程序模型分析

2.1.1 句柄和協議

UEFI驅動程序模型使用句柄代表設備,每個設備對應有自己的句柄,句柄由一個或多個協議組成。協議是一個以128 bit的全局唯一標識符GUID(Globally Unique Identifier)命名的結構體,是一些指針和數據結構體或者規范定義的接口函數指針的集合,協議代表設備提供的一類服務,服務的具體功能在設備驅動程序(以下簡稱驅動)中實現。開發者首先找到指定設備句柄上掛載的指定協議,再通過協議提供的接口訪問設備驅動中實現服務的功能函數,對設備進行操作。圖3所示為設備句柄和協議的結構圖。

圖3 設備句柄和協議的結構圖

2.1.2 驅動程序模型執行流程

UEFI驅動程序模型是一種用于簡化設備驅動設計和執行的機制,遵循驅動程序模型規范的UEFI驅動的可執行鏡像大小會得到有效的減小[6]。UEFI驅動程序模型的執行流程圖如圖4所示。

圖4 UEFI驅動程序模型執行流程圖

驅動程序模型采用UEFI驅動載入、連接的形式來進行硬件的辨識、控制及系統資源掌控。在DXE階段,系統調用引導服務的LoadImage()函數將驅動鏡像文件加載到內存中,調用StartImage()函數執行驅動的入口函數來啟動驅動。遵循模型規范的設備驅動在入口函數的初始化中不涉及任何硬件操作,僅僅實現驅動綁定協議(Driver Binding Protocol),協議包含 3個接口函數:Support()、Start()和 Stop()。Support()函數用來驗證驅動程序與給定的設備句柄是否匹配;Start()函數負責驅動與句柄的連接,即將抽象 I/O功能的協議安裝到設備句柄上;相對應的,Stop()函數則會強制停止驅動對一個設備句柄的管理和控制,并卸載設備句柄在Start()中安裝的所有協議。

DXE階段執行完成后,雖然加載和啟動了驅動,但還在等待著連接設備句柄。因此,在BDS階段引導管理器將會調用引導服務的ConnectController()函數執行驅動的連接過程。該函數執行所有驅動綁定協議的Support()進行設備句柄的驗證,若驗證正確,則會繼續調用Start()連接驅動和設備句柄,并在設備句柄上安裝抽象I/O功能的協議。

2.2 CC2531模塊USB驅動協議棧

圖5所示是由一系列驅動組成的多層次的、完整的USB驅動協議棧。處于上層的驅動會使用下層驅動提供的服務,并為更高層的驅動提供服務。首先,PCI總線驅動枚舉設備時發現USB主機控制器,并在控制器句柄上安裝EFI_PCI_IO_PROTOCOL協議,USB主機控制器驅動則使用EFI_PCI_IO_PROTOCOL協議提供的接口實現EFI_USB_HC_PROTOCOL協議。然后,USB總線驅動使用EFI_USB_HC_PROTOCOL協議服務實現對USB設備的枚舉,生成CC2531設備句柄,并在設備句柄上安裝 EFI_USB_IO_PROTOCOL協議。最后,CC2531模塊設備驅動使用EFI_USB_IO_PROTOCOL協議服務,在CC2531模塊設備句柄上安裝EFI_USB_CCCONTROL_PROTOCOL協議,完成CC2531模塊驅動協議棧的加載。

圖5 CC2531模塊驅動協議棧結構圖

2.3 CC2531模塊驅動程序設計

CC2531模塊驅動作為設備驅動,遵循UEFI驅動程序模型規范,使用驅動綁定協議的方式實現設備驅動的加載和連接。同時,驅動還提供通信協議EFI_USB_CCCONTROL_PROTOCOL用于系統與CC2531模塊間的通信,并通過ZigBee網絡與無線POS機外設進行通信。

2.3.1 綁定協議接口函數的實現

(1)Support():圖 6所示為 Support函數實現流程圖,函數首先檢查給定的目標設備句柄是否安裝有 EFI_USB_IO_PROTOCOL協議,若有,則說明USB總線驅動已經辨認出該USB設備。其次,使用EFI_USB_IO_PROTOCOL協議提供的功能接口函數獲取目標USB設備的設備描述符,描述符中的接口號、接口類型、子類型和協議等字段指定了的USB設備的類型,檢查這些字段就可得知驅動是否為CC2531模塊設備驅動,如果匹配則說明加載的驅動正確,就會執行Start()函數。以下是部分實現代碼:

圖6 Support實現流程圖

(2)Start():Start()函數的目標是使用USB總線驅動提供的協議服務在CC2531模塊設備驅動中安裝通信協議EFI_USB_CCCONTROL_PROTOCOL。函數首先打開設備句柄上掛載的EFI_USB_IO_PROTOCOL協議,使用該協議提供的接口函數UsbGetInterfaceDescriptor()和UsbGetEndpointDescriptor()得到USB設備的接口描述符和端點描述符,分析設備描述符中的字段以確定USB設備信息和接口類型等參數。其次,為驅動私有數據結構體分配內存,并使用設備描述符中的字段信息進行初始化。最后,安裝EFI_USB_CCCONTROL_PROTOCOL協議,完成驅動與設備的連接。圖7所示為Start()函數實現流程圖。

圖7 Start()函數實現流程圖

(3)Stop():Stop()是 Start執行流程的逆過程,該函數用于卸載EFI_USB_CCCONTROL_PROTOCOL協議,釋放驅動私有數據結構體占用的內存資源,關閉EFI_USB_IO_PROTOCOL協議,斷開CC2531模塊驅動與設備句柄的連接。

2.3.2 設備通信協議結構體

為了實現UEFI系統與CC2531模塊之間的數據通信,本文設計了EFI_USB_CCCONTROL_PROTOCOL作為驅動的通信協議。該協議中包括了UEFI系統與CC2531模塊間數據發送和接收的接口函數,還有部分與POS機系統外設交互的命令函數,如系統外設啟動和復位命令的接口函數。協議的部分成員函數定義如下:

2.3.3 設備通信協議接口函數的實現

CC2531模塊的USB接口固件代碼是基于USB通信設備類CDC(Communication Device Class)協議實現的。CDC由通信接口類和數據接口類組成,通信接口類主要負責設備的管理和控制,數據接口類則負責數據的傳輸。CC2531模塊的USB接口采用端點0作為通信接口類中的控制端點來管理設備的枚舉和命令控制,數據接口類使用塊傳輸輸入(IN)端點和塊傳輸輸出(OUT)端點實現數據的雙向傳輸。因此,UEFI系統對CC2531模塊的枚舉和識別采用控制傳輸方式,數據通信則采用批量傳輸方式。

協議的發送接口函數為 UsbCCDataTransmit(),該函數調用EFI_USB_IO_PROTOCOL協議提供的服務函數UsbBulkTransfer(),通過將數據寫入輸出端口完成數據從主機到CC2531模塊的批量傳輸。設備驅動發送數據接口函數的部分代碼實現如下所示:

CC2531模塊設備驅動的數據接收操作亦通過調用函數UsbBulkTransfer()檢測輸入端口的緩沖隊列完成。由于數據接收操作的被動性,驅動需要建立一套讀操作的響應觸發機制。本方案使用UEFI的事件(EVENT)機制實現對數據接收操作的響應:首先在驅動的Start()創建一個定時器事件,并在定時器的響應函數USBCC2531Timer-Handler()中周期性調用UsbCCDataRecevice()執行對輸入端口緩沖隊列的讀操作,如果成功讀到數據,則將讀回的數據存入私有數據結構體的循環隊列UsbDataQueue中。其次,創建一個等待事件WaitForInputString,并在等待事件的觸發函數中檢查循環隊列,如有數據則讀取,否則循環等待。部分數據讀取操作的代碼如下:

UEFI采用的模塊化設計和驅動程序模型都為整體系統提供了良好的兼容性和擴展性,簡化了UEFI驅動和應用程序的開發難度,提高了可維護性,有助于計算機固件的進一步發展。相對于傳統BIOS,UEFI具有明顯的優越性,越來越得到業界和市場的認可。本文從UEFI功能擴展的角度考慮,分析了UEFI的架構和驅動程序模型,設計并實現了CC2531模塊的設備驅動程序,最終實現了在啟動操作系統之前通過CC2531模塊與無線POS機外設進行通信的目標。本方案的下一目標是擴展UEFI下的網絡應用,實現對POS機系統的遠程管理和診斷。

[1]Unified EFI,Inc.Unified extensible firmware interface specification[S].Version2.3.1 Errata C.2012:1-22.

[2]朱賀新.基于 UEFI的可信 BIOS平臺研究與應用[D].西安:西安科技大學,2008:11-15.

[3]萬象.基于UEFI系統的LINUX通用應用平臺的設計與實現[D].上海:上海交通大學,2012.

[4]潘登,劉光明.EFI結構分析及Driver開發[J].計算機工程與科學,2006,28(2):115-117.

[5]Texas Instruments.CC2531 SOC solution for IEEE 802.15.4 and ZigBee applications(Rev.A)[Z].2011.

[6]ZIMMER V,ROTHMAN M,MARISETTY S.Beyond BIOS:developing with the unified extensible firmware interface(2 Edition)[M].Intel Press,2010.

猜你喜歡
設備服務模型
一半模型
諧響應分析在設備減振中的應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
3D打印中的模型分割與打包
主站蜘蛛池模板: 91av国产在线| 伊人五月丁香综合AⅤ| 国产精品私拍99pans大尺度| 久久精品这里只有国产中文精品| 好久久免费视频高清| 亚洲V日韩V无码一区二区| 国产精品亚洲一区二区三区z| 日韩在线成年视频人网站观看| 在线人成精品免费视频| 亚洲成人在线网| 偷拍久久网| 性欧美久久| www.狠狠| 国产噜噜在线视频观看| 免费观看精品视频999| 大香网伊人久久综合网2020| 亚洲五月激情网| 国产免费久久精品99re不卡| 亚洲日韩第九十九页| 久久综合丝袜长腿丝袜| 中文字幕啪啪| 成年免费在线观看| 亚洲欧美在线看片AI| 国产毛片高清一级国语| 四虎在线观看视频高清无码| 超碰91免费人妻| 重口调教一区二区视频| 国产精品国产三级国产专业不 | 999国内精品久久免费视频| 91国内外精品自在线播放| 国产成人8x视频一区二区| 国产精品自在自线免费观看| 成人免费一区二区三区| 成人国产精品一级毛片天堂| 青青青国产精品国产精品美女| 精品视频在线观看你懂的一区 | 国产欧美视频在线观看| 国产精品亚洲а∨天堂免下载| 亚洲午夜久久久精品电影院| 91精品福利自产拍在线观看| 丁香婷婷综合激情| 国产成人亚洲综合A∨在线播放| 免费在线一区| 国产亚洲精久久久久久久91| 国产精品所毛片视频| 日本一区二区不卡视频| 波多野结衣的av一区二区三区| 无码aaa视频| 欧美国产在线看| 国产超碰一区二区三区| 天天激情综合| 国产午夜在线观看视频| 99精品视频播放| 日韩AV手机在线观看蜜芽| 久操线在视频在线观看| 国内精品久久久久久久久久影视 | 亚洲国产精品久久久久秋霞影院| 色综合久久久久8天国| 欧美日韩综合网| 久久免费看片| 亚洲无码日韩一区| 亚洲人免费视频| 国产99在线观看| 国产av无码日韩av无码网站| 四虎在线高清无码| 日韩精品毛片人妻AV不卡| 亚洲天堂区| 成年人免费国产视频| 亚洲欧美精品日韩欧美| 真实国产乱子伦高清| 国产精品无码AV中文| 狠狠色噜噜狠狠狠狠奇米777 | 91视频青青草| 欧美亚洲国产一区| 国产流白浆视频| 亚洲香蕉在线| 亚洲熟女偷拍| 999精品色在线观看| 欧美精品导航| 日韩成人免费网站| 亚洲中文无码h在线观看| 国产成人久视频免费|