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

UEFI BIOS虛擬光驅(qū)的設(shè)計實現(xiàn)*

2012-10-16 08:05:02紀向尚莊克良王大慶
艦船電子工程 2012年12期
關(guān)鍵詞:設(shè)備信息

紀向尚 莊克良 王大慶

(海軍704廠 青島 266109)

1 引言

小型計算機系統(tǒng)接口(Small Computer System Interface),簡稱SCSI,主要應(yīng)用于計算機外圍設(shè)備,如硬盤、軟驅(qū)、光驅(qū)、打印機等。SCSI標準定義了命令、通訊協(xié)議以及實體的電氣特性,其主要軟件接口是SCSI命令。

SCSI的原始版本是SCSI-1,SCSI-1具有8位總線,數(shù)據(jù)傳輸率為4Mbps。目前SCSI-1已經(jīng)很少使用。作為對SCSI-1的改進,SCSI-2使用了兩項新技術(shù)Fast SCSI和 Wide SCSI。

Fast SCSI將傳輸速率提高到10MB/Sec,而Wide SCSI突破SCSI-1的單字節(jié)傳輸限制,將數(shù)據(jù)總線的帶寬提高到16位或者32位。當使用Fast-Wide SCSI時,其理論傳輸速率為20MB/s或者40MB/s,SCSI-2增加了新的設(shè)備命令集,對光驅(qū)的支持也出現(xiàn)在SCSI-2標準文檔中。

UEFI則定義了操作系統(tǒng)與系統(tǒng)硬件平臺固件之間的開放接口。該規(guī)范定義的接口包括平臺相關(guān)信息、啟動服務(wù)例程以及操作系統(tǒng)運行時服務(wù)例程。操作系統(tǒng)裝載器與操作系統(tǒng)可通過接口調(diào)用這些服務(wù)例程。UEFI規(guī)范是一個公開的純接口定義,它不依賴于某個特定的BIOS制造商或某個特定的BIOS的實現(xiàn),它僅僅定義了平臺固件必須實現(xiàn)的接口,以及操作系統(tǒng)可能使用的一系列接口與數(shù)據(jù)結(jié)構(gòu),其實現(xiàn)的方式與細節(jié)均取決于該規(guī)范的實現(xiàn)者。UEFI規(guī)范還定義了固件驅(qū)動程序模型,使得所有遵循此模型開發(fā)的固件驅(qū)動程序能夠互相協(xié)作。

目前UEFI BIOS下還沒有相應(yīng)的虛擬光驅(qū)方面的應(yīng)用程序,本文研究的就是在UEFI接口規(guī)范下基本SCSI虛擬光驅(qū)技術(shù)的設(shè)計和實現(xiàn)。

2 SCSI協(xié)議分析

UEFI的所有驅(qū)動依靠協(xié)議堆疊形成協(xié)議棧,并以此組織系統(tǒng)中的驅(qū)動模塊。SCSI作為總線控制器,要求提供控制器本身的控制協(xié)議即SCSI Pass Thru Protocol或者其擴展版本Ext Scsi Pass Thru Protocol。該協(xié)議可以驅(qū)動SCSI總線控制器,向總線控制器發(fā)出輸入輸出或其它控制命令。SCSI設(shè)備驅(qū)動則依賴該協(xié)議提供具體的設(shè)備輸入輸出控制接口。

在UEFI中,這種總線結(jié)構(gòu)依賴于三個驅(qū)動實現(xiàn):總線控制器驅(qū)動、總線驅(qū)動、子設(shè)備驅(qū)動。總線控制器作為一種設(shè)備,其驅(qū)動提供控制接口。總線驅(qū)動則利用這種接口查詢并枚舉總線控制器上的所有子設(shè)備,并為每一個子設(shè)備創(chuàng)建新的設(shè)備句柄,安裝Device Path Protocol以及向子設(shè)備發(fā)送命令的總線IO協(xié)議。總線驅(qū)動不關(guān)心子設(shè)備類型,子設(shè)備上的總線IO只可向設(shè)備發(fā)送IO及控制信號。不同設(shè)備的驅(qū)動為了提供設(shè)備本身特有的接口,將該總線IO封裝,提供工業(yè)標準中的設(shè)備控制接口。

如圖1所示,SCSI總線控制器句柄SCSI Bus Controller Handle由系統(tǒng)或其父節(jié)點的總線驅(qū)動負責創(chuàng)建。SCSI總線控制器的控制接口協(xié)議Ext SCSI Pass Thru Protocol由總線控制器驅(qū)動實現(xiàn)并安裝在該控制器句柄上。

圖1 SCSI總線及設(shè)備協(xié)議棧

SCSI總線驅(qū)動使用Ext SCSI Pass Thru Protocol查詢并枚舉總線上的每個子設(shè)備,創(chuàng)建新的句柄,為這些子設(shè)備句柄安裝Device Path Protocol和SCSI IO Protocol。其中,SCSI IO Protocol提供了統(tǒng)一的設(shè)備輸入輸出及控制接口。圖1中Scsi Device 1Handle和SCSI Device 2Handle即為總線子設(shè)備句柄,由總線驅(qū)動創(chuàng)建。

由于SCSI設(shè)備的多樣性,不同的設(shè)備需要特定的協(xié)議作為接口。圖1中的SCSI設(shè)備為CD-Drive、磁盤等塊設(shè)備。UEFI標準規(guī)定這些塊設(shè)備應(yīng)當提供Block IO Protocol,因此,EDK II中給出了SCSI塊設(shè)備的驅(qū)動。該驅(qū)動檢測通過SCSI IO Protocol檢查每個設(shè)備的類型,并負責為光驅(qū)和磁盤創(chuàng)建塊輸入輸出協(xié)議Block IO Protocol。

到此,SCSI總線結(jié)構(gòu)的協(xié)議棧已經(jīng)建立。EDK II提供Disk IO Protocol,其接口與Block IO Protocol有所不同,但一部分上層驅(qū)動同時使用這兩個協(xié)議。Simple File System Protocol由文件系統(tǒng)相關(guān)的驅(qū)動模塊負責。簡單文件系統(tǒng)協(xié)議向Shell以及所有使用文件系統(tǒng)的驅(qū)動提供了文件訪問接口。

根據(jù)以上分析,可以得出這樣的結(jié)論:有效驅(qū)動SCSI光驅(qū)或者磁盤需要三個驅(qū)動模塊完成,總線控制器驅(qū)動,總線驅(qū)動和子設(shè)備驅(qū)動。這三個驅(qū)動彼此獨立地負責三個協(xié)議的安裝,即 Ext Scsi Pass Thru Protocol,Scsi IO Protocol和Block IO Protocol。其中,Block IO Protocol抽象了塊設(shè)備讀寫,與具體設(shè)備無關(guān)。

3 模塊設(shè)計

3.1 頂層結(jié)構(gòu)

圖2 SCSI虛擬光驅(qū)頂層結(jié)構(gòu)

SCSI虛擬光驅(qū)系統(tǒng)由兩個模塊組成,虛擬光驅(qū)驅(qū)動和Shell接口。模塊間通過固件卷(Firmware Volume)實現(xiàn)配置信息的傳遞。圖2給出了系統(tǒng)的頂層結(jié)構(gòu)圖。

Shell接口通過命令行獲得配置信息,并將配置信息存入到固件卷中,比如虛擬光驅(qū)的數(shù)目,每個光驅(qū)對應(yīng)的ISO鏡像文件等。驅(qū)動的內(nèi)核通過讀取這些信息,動態(tài)創(chuàng)建出相應(yīng)的數(shù)據(jù)結(jié)構(gòu)來提供虛擬光驅(qū)服務(wù),比如向用戶提供一個或多個虛擬光驅(qū)等。

從前面的論述中知道,虛擬光驅(qū)驅(qū)動在實質(zhì)上虛擬SCSI總線控制器,提供Ext SCSI Pass Thru Protocol接口。雖然該驅(qū)動是總線控制器驅(qū)動,但仍然是一個設(shè)備驅(qū)動,驅(qū)動接口被總線驅(qū)動(即SCSI Bus驅(qū)動)所使用。而在總線控制器內(nèi)部維持著一些數(shù)據(jù)結(jié)構(gòu),向上層總線驅(qū)動提供虛擬信息,基于這個選擇,可以得到如圖3所示的驅(qū)動內(nèi)核結(jié)構(gòu)。

圖3 遵循UEFI驅(qū)動模型的虛擬光驅(qū)驅(qū)動內(nèi)核

3.2 Shell用戶接口

虛擬光驅(qū)系統(tǒng)具有如下要求功能:

1)列出所有虛擬光驅(qū),及其對應(yīng)的ISO文件信息;

2)設(shè)置虛擬光驅(qū)數(shù)量;

3)為指定編號的虛擬光驅(qū)進行ISO鏡像裝載;

4)為指定編號的虛擬光驅(qū)進行ISO鏡像卸載。

根據(jù)預(yù)期的四個功能,設(shè)計出如下格式的Shell命令:

其中,vscsi為Shell接口的程序名,-l選項以列表形式所有的虛擬光驅(qū)信息,-n用來設(shè)置虛擬光驅(qū)的數(shù)量,-m用來設(shè)置Num對應(yīng)虛擬光驅(qū)的鏡像文件,-u用來對Num指定虛擬光驅(qū)進行卸載。

虛擬光驅(qū)的Shell接口程序?qū)⒆裱瓨藴实某绦蚪Y(jié)構(gòu),利用Shell相關(guān)的庫和協(xié)議獲得命令行參數(shù)并將其存放入固件卷中。Shell接口程序的框架如上圖所示。Shell接受用戶命令并分析后,將調(diào)用EFI Runtime Services向固件卷中寫入配置信息。需要說明的是,命令行指定的文件路徑中的盤符信息不能被設(shè)備驅(qū)動識別。比如,在f8:\sample\example1.iso這樣的文件路徑中,f8:\不能被設(shè)備識別。因此,在Shell接口應(yīng)當將盤符信息轉(zhuǎn)化為設(shè)備驅(qū)動可以識別的信息,然后存儲。

3.3 虛擬設(shè)備驅(qū)動

分析上述可知,驅(qū)動內(nèi)核將使用一些數(shù)據(jù)結(jié)構(gòu)來表示配置信息,并提供虛擬光驅(qū)服務(wù)。驅(qū)動應(yīng)當首先創(chuàng)建虛擬的SCSI控制器建立對應(yīng)數(shù)據(jù)結(jié)構(gòu),并根據(jù)配置信息在UEFI系統(tǒng)堆內(nèi)存中動態(tài)地創(chuàng)建表示子設(shè)備的數(shù)據(jù)結(jié)構(gòu)。

虛擬SCSI控制器對應(yīng)的數(shù)據(jù)結(jié)構(gòu)將采用C面向?qū)ο蟮姆椒?,擴展Ext Scsi Pass Thru Protocol結(jié)構(gòu),將需要的數(shù)據(jù)結(jié)構(gòu)作為該協(xié)議私有的數(shù)據(jù),如圖4所示。

其中,擴展后的Ext Scsi Pass Thru Protocol定義如圖5。

以這個結(jié)構(gòu)體作為虛擬的SCSI總線控制器的核心數(shù)據(jù)結(jié)構(gòu)。

圖4 虛擬SCSI控制器結(jié)構(gòu)

圖5 虛擬SCSI總線控制器結(jié)構(gòu)體定義

前四個字節(jié)為signature。因為該結(jié)構(gòu)體在內(nèi)存中動態(tài)創(chuàng)建,協(xié)議中的函數(shù)可以利用這四個字節(jié)檢查數(shù)據(jù)結(jié)構(gòu)的正確性,這個特性類似于信息安全領(lǐng)域的數(shù)字簽名。

簽名結(jié)束后是協(xié)議接口,在向系統(tǒng)注冊協(xié)議時將這個地址傳入UEFI系統(tǒng)。并且,虛擬SCSI總線控制器結(jié)構(gòu)體中,只有該域?qū)ν忾_放。在向虛擬設(shè)備裝載協(xié)議時,ExtScsiPassThruInterface域的地址將被傳入系統(tǒng),保證了內(nèi)部數(shù)據(jù)結(jié)構(gòu)的封裝。因此,其它驅(qū)動或者用戶在向系統(tǒng)請求該協(xié)議接口時,得到的不是整個 VIRTUAL_SCSI_CONTROLLER結(jié)構(gòu)體地址,而是其中ExtScsiPassThruInterface的地址。

VIRTUAL_SCSI_CONTROLLER的最后部分由一個類型匿名的Private域構(gòu)成。該域僅包含兩項,虛擬光驅(qū)數(shù)量以及指向虛擬光驅(qū)結(jié)構(gòu)體數(shù)組的指針。對該域的數(shù)據(jù)類型進行匿名,可以保證該域的封裝性。

對于每個虛擬光驅(qū),其數(shù)據(jù)結(jié)構(gòu)定義如圖6所示。

圖6 虛擬光驅(qū)設(shè)備結(jié)構(gòu)體定義

CDRomMounted用以表示該CD Drive中是否裝載了CD-Rom,F(xiàn)ileDevicePath指向文件類型的Device Path。它主要用來保存從CMOS中獲得的虛擬光驅(qū)配置信息,不負責文件的相關(guān)操作。根據(jù)FileDevicePath被打開的文件由FileHandle指向,文件的訪問操作也將通過FileHandle來進行。TargetID和Lun是SCSI規(guī)范中定義的兩種類型的數(shù)據(jù),TargetID用來表示SCSI目標器的編號,Lun用來表示邏輯單元號(Logical Unit Number)。需要指出的是,在本虛擬光驅(qū)系統(tǒng)中對于任何一個TargetID,Lun均只為0,不使用其它值。

圖7 SCSI虛擬光驅(qū)驅(qū)動模塊詳細設(shè)計

綜合UEFI驅(qū)動模型、SCSI虛擬控制器結(jié)構(gòu)及虛擬光驅(qū)設(shè)備結(jié)構(gòu)得出如圖7的SCSI虛擬光驅(qū)驅(qū)動模塊詳細設(shè)計。其中鏡像文件(Image File)部分是驅(qū)動的二進制可加載鏡像,由代碼編譯得到。堆空間(Heap Memory)中的所有數(shù)據(jù)結(jié)構(gòu)由驅(qū)動的Driver Binding Protocol負責構(gòu)造和析構(gòu)。

3.4 模塊間通信

圖2系統(tǒng)的頂層結(jié)構(gòu)圖中,Shell接口和驅(qū)動內(nèi)核通過固件卷進行配置信息的傳遞。在進行這種配置傳遞時需要解決兩個問題。

第一,由于UEFI規(guī)范不使用時鐘中斷外的所有中斷,因此UEFI系統(tǒng)應(yīng)當處于單一的運行環(huán)境,即單指令流。因此,不可能同時存在驅(qū)動進程和Shell接口進程,也不可能實時傳遞配置參數(shù)。由于EFI的加載速度很快,重啟EFI并不會耗費時間,所以無論是在傳統(tǒng)BIOS,還是在EFI中,一些配置往往都要求重啟。本設(shè)計選擇回避該問題,配置信息設(shè)置保存后應(yīng)當重新啟動UEFI系統(tǒng),以便驅(qū)動內(nèi)核讀取配置信息。

第二,EDK II的Shell中表示的盤符(如f8:\)屬于Shell內(nèi)部表示,只有在Shell環(huán)境下可見。但驅(qū)動不在Shell環(huán)境下運行,也不能利用Shell庫讀取文件。如果簡單地向固件卷中寫入路徑f8:\sample\example1.iso,那么即使路徑信息能夠被設(shè)備驅(qū)動所獲取,驅(qū)動程序也不能從f8:\訪問任何設(shè)備。

4 結(jié)語

本文主要研究了符合UEFI接口規(guī)范的SCSI虛擬光驅(qū)技術(shù),并設(shè)計實現(xiàn)了該SCSI虛擬光驅(qū)系統(tǒng)。該系統(tǒng)可以向其它驅(qū)動或者用戶提供一個虛擬的SCSI總線控制器以及連接在總線控制器上的一個或多個虛擬光驅(qū)設(shè)備,用戶可以通過Shell接口配置光驅(qū)數(shù)量以及各光驅(qū)中加載的ISO 9660結(jié)構(gòu)的文件鏡像。該方法的實現(xiàn),對于擴展基于UEFI BIOS計算機系統(tǒng)的多光驅(qū)應(yīng)用以及擴展外部設(shè)備接口,具有非常現(xiàn)實的積極意義。

[1]UEFI Forum.February 2010.UEFI Specification.Version 2.3.http://www.uefi.org/specs/

[2]UEFI Forum.February 2010.UEFI Platform Initialization Specification.Version 1.2.http://www.uefi.org/specs/

[3]Vincent Zimmer.2006.Beyond BIOS.Intel corporation.17-32,143-146.

[4]Framework Open Source Community.March 2008.Pre_EFI Initialization Core Interface http://www.uefi.org/specs/.

[5]EFI技術(shù)解析.March 2010.http://www.gz-benet.com.cn/.

[6]Basic Instruction for Using EFI.January 2,2008.http://www.intel.com/.

[7]Enterprise64BIOS.March 2010.http://ami.com/.

猜你喜歡
設(shè)備信息
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
500kV輸變電設(shè)備運行維護探討
如何在設(shè)備采購中節(jié)省成本
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
原來他們都是可穿戴設(shè)備
消費者報道(2014年7期)2014-07-31 11:23:57
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 91在线精品免费免费播放| 91久草视频| 亚洲欧美在线综合一区二区三区| 国产va欧美va在线观看| 免费A级毛片无码无遮挡| 在线亚洲精品自拍| 亚洲无码久久久久| 欧美在线天堂| 伊人激情久久综合中文字幕| 日韩麻豆小视频| 婷婷丁香在线观看| 欧美精品一区在线看| 欧美三級片黃色三級片黃色1| 五月丁香伊人啪啪手机免费观看| 久久鸭综合久久国产| 午夜欧美在线| 玖玖精品视频在线观看| 伊人久久福利中文字幕| 国产精品区网红主播在线观看| 亚洲国产精品无码AV| 成人av专区精品无码国产 | 成人综合在线观看| 十八禁美女裸体网站| 亚洲欧美一区二区三区麻豆| 亚洲中文字幕av无码区| 久久久精品国产SM调教网站| 91精品人妻互换| 久久免费视频6| 一区二区三区国产精品视频| 色窝窝免费一区二区三区 | 国产97视频在线观看| 国产精品3p视频| 国产91无毒不卡在线观看| 亚洲日韩AV无码一区二区三区人 | 亚洲精品中文字幕无乱码| 在线色综合| 免费无码又爽又黄又刺激网站 | 91精品国产丝袜| 精品第一国产综合精品Aⅴ| 91av成人日本不卡三区| 99草精品视频| 黄片一区二区三区| 91久久国产综合精品女同我| 91福利免费视频| 久久精品免费国产大片| 狠狠干综合| 国产一二视频| 日韩中文无码av超清| 久久成人18免费| 国产成人免费视频精品一区二区| 亚洲欧洲日产国码无码av喷潮| 日韩av无码精品专区| 国产性爱网站| 国产女人18水真多毛片18精品| 亚洲一区二区三区中文字幕5566| 精品国产免费观看| 久久国产精品嫖妓| 中文字幕在线一区二区在线| 成年午夜精品久久精品| 国产69精品久久久久孕妇大杂乱 | 国产在线98福利播放视频免费| 毛片网站观看| 亚洲av日韩av制服丝袜| 免费看av在线网站网址| 91精品专区国产盗摄| 色婷婷视频在线| 亚洲日韩精品综合在线一区二区| 黄色网址免费在线| 国产精品色婷婷在线观看| 爽爽影院十八禁在线观看| 国产精品播放| 国产三级视频网站| 一级看片免费视频| 97青草最新免费精品视频| 午夜福利网址| 狠狠色综合久久狠狠色综合| 久久国产黑丝袜视频| 色AV色 综合网站| 天堂va亚洲va欧美va国产| 999国内精品久久免费视频| 国产H片无码不卡在线视频| 91色在线观看|