• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    UEFI+BIOS全局配置數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)

    2014-10-30 16:44:11高云嶺莊克良丁守芳
    物聯(lián)網(wǎng)技術(shù) 2014年10期

    高云嶺 莊克良 丁守芳

    摘 要:EDKII是目前最流行的一個(gè)高度分層和抽象化UEFI BIOS的開發(fā)架構(gòu),它針對(duì)不同平臺(tái)硬件參數(shù)設(shè)置引入了新的設(shè)計(jì)概念PCD。PCD就是在計(jì)算機(jī)系統(tǒng)初始化過(guò)程中建立起來(lái)的一個(gè)全局平臺(tái)配置數(shù)據(jù)庫(kù),它為整個(gè)平臺(tái)的驅(qū)動(dòng),函數(shù)庫(kù)和模塊組提供了有效的信息共享和設(shè)置機(jī)制。研究了數(shù)據(jù)庫(kù)建立和使用的流程和方法,同時(shí)指出該數(shù)據(jù)庫(kù)平臺(tái)在非源代碼發(fā)布中的一些設(shè)計(jì)弊端。

    關(guān)鍵詞:EDKII;UEFI;BIOS;PCD

    中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-1302(2014)10-00-03

    0 引 言

    BIOS是一組固化到計(jì)算機(jī)主板上一個(gè)ROM芯片中的程序,它保存著計(jì)算機(jī)最重要的基本輸入輸出的程序、系統(tǒng)設(shè)計(jì)信息、開機(jī)后自檢程序和系統(tǒng)自啟動(dòng)程序。人們經(jīng)常需要重新對(duì)FLASH芯片進(jìn)行編程以便升級(jí)BIOS,以便獲得新的功能。

    UEFI BIOS是目前最主流的一個(gè)BIOS架構(gòu),約占超過(guò)70%的計(jì)算機(jī),服務(wù)器和嵌入式市場(chǎng)。它是對(duì)老的BIOS開發(fā)模式的一種徹底的革新,打破了BIOS只能用匯編語(yǔ)言開發(fā)和只能應(yīng)用在計(jì)算機(jī)和服務(wù)器市場(chǎng)的局限性,當(dāng)前越來(lái)越多的嵌入式設(shè)備、平板、手持設(shè)備、工控設(shè)備、通信設(shè)備等都在它的應(yīng)用行列。

    采用UEFI BIOS開發(fā)架構(gòu)EDKII的架構(gòu),可保證同一份核心代碼運(yùn)行在不同的硬件平臺(tái)之上,僅僅需要針對(duì)平臺(tái)的特定性來(lái)設(shè)置一些特定的參數(shù),這是EDKII架構(gòu)中最難也是最核心的一個(gè)設(shè)計(jì)部分,也就是要研究全局配置數(shù)據(jù)庫(kù)PCD。

    1 UEFI和EDKII簡(jiǎn)介

    2000年,Intel向業(yè)界展示了BIOS的新一代接口程序EFI (Extensible Firmware Interface),并將此技術(shù)應(yīng)用于其安騰服務(wù)器平臺(tái)上。EFI是由Intel推出的一種在未來(lái)的電腦系統(tǒng)中用來(lái)替代BIOS的升級(jí)方案。2005年,在工業(yè)界達(dá)成共識(shí)的基礎(chǔ)上,Intel將EFI規(guī)范交給了一個(gè)由微軟、AMD、惠普等公司共同參與的工業(yè)聯(lián)盟進(jìn)行管理,并將實(shí)現(xiàn)該規(guī)范的核心代碼開源于網(wǎng)站上。與此同時(shí),EFI也正式更名為UEFI(Unified Extensible Firmware Interface)。UEFI聯(lián)盟將負(fù)責(zé)開發(fā)、管理和推廣UEFI規(guī)范。

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

    不同于傳統(tǒng)的BIOS實(shí)現(xiàn),EDKII基于現(xiàn)代軟件體系設(shè)計(jì)的思想,對(duì)UEFI Framework采用模塊化設(shè)計(jì),并根據(jù)其執(zhí)行流程主要?jiǎng)澐譃椋篠EC、PEI、DXE、BDS、TSL、RT和AL等7個(gè)階段,其運(yùn)行機(jī)理如圖1所示。

    SEC(Security)是平臺(tái)上電后最先執(zhí)行的步驟。這個(gè)階段的主要目的是對(duì)平臺(tái)固件進(jìn)行驗(yàn)證,確保選擇的平臺(tái)固件映像沒(méi)有被破壞。主要工作是初始化臨時(shí)內(nèi)存區(qū)并對(duì)平臺(tái)早期初始化代碼進(jìn)行驗(yàn)證。

    PEI(Pre-EFI Initialization)階段有兩個(gè)主要任務(wù):確定重新啟動(dòng)的來(lái)源和做盡可能少的工作以便尋找和初始化內(nèi)存,為DXE階段提供少量的固定內(nèi)存。

    DXE(Driver Execution Environment)被設(shè)計(jì)來(lái)處理與外圍設(shè)備的通信,它通過(guò)加載驅(qū)動(dòng)的方式(輪詢檢測(cè))來(lái)為操作系統(tǒng)的啟動(dòng)管理構(gòu)建環(huán)境。

    BDS(Boot Device Selection)是UEFI擁有平臺(tái)控制權(quán)的最后一個(gè)階段。BDS與DXE階段一起工作,為啟動(dòng)操作系統(tǒng)建立控制臺(tái)。

    TSL(Transient System Load)即操作系統(tǒng)啟動(dòng)管理器嘗試引導(dǎo)操作系統(tǒng)的階段。

    RT(Run Time)是操作系統(tǒng)啟動(dòng)運(yùn)行后,UEFI提供的一組運(yùn)行時(shí)服務(wù)。

    AL(After Life)階段,即最后一個(gè)階段,其提供一種機(jī)制來(lái)保證用戶在有意或者無(wú)意的情況下終止操作系統(tǒng)后,讓UEFI重新獲得系統(tǒng)控制權(quán)。

    2 全局配置數(shù)據(jù)庫(kù)PCD的設(shè)計(jì)實(shí)現(xiàn)

    EDKII中PCD根據(jù)其作用的時(shí)間,分兩大類,一類是在編譯過(guò)程中起作用,這類PCD等同于C語(yǔ)言中的全局靜態(tài)變量,包含F(xiàn)eatureFlag PCD, FixedAtBuild PCD以及PatchableInModule PCD三種。這類PCD跟全局配置數(shù)據(jù)庫(kù)沒(méi)有關(guān)系,所以本文不做過(guò)多介紹。另一類是平臺(tái)初始化過(guò)程中起作用,包括DynamicDefault PCD, DynamicHII PCD, 和DynamicVpd PC三種應(yīng)用在源代碼組件發(fā)布的PCD,以及與之對(duì)應(yīng)的DynamicExDefault PCD, DynamicExHII PCD 和DynamicExVpd PCD——專門應(yīng)用在編譯好的二進(jìn)制組件發(fā)布中的三種PCD。

    2.1 PCD的分類和區(qū)別

    從大面上,全局配置數(shù)據(jù)庫(kù)中存放的PCD被分為兩個(gè)大類Dynamic和DynamicEx,每個(gè)大類又各分三個(gè)小類Default PCD, HII PCD和VPD PCD。

    Dynamic和DynamicEx的作用局域完全一樣,唯一的區(qū)別就是源代碼級(jí)別的發(fā)布還是編譯好的代碼發(fā)布。如果上層開發(fā)者給二級(jí)開發(fā)者提供的是所有驅(qū)動(dòng)的源代碼,那么二級(jí)開發(fā)者可以直接修改源代碼來(lái)改變某個(gè)參數(shù)的值,此時(shí)只要把該配置參數(shù)設(shè)置為Dynamic形式的即可滿足要求。否則,必須用DynamicEx的。DynamicEx的PCD在保護(hù)上層開發(fā)者的版權(quán)和代碼發(fā)布權(quán)限提供了更多層次的選擇空間。

    Default PCD:在初始化過(guò)程中,可以被PEI,DXE和RT階段的幾乎所有驅(qū)動(dòng)所使用,一般是前面的驅(qū)動(dòng)修改,后面的驅(qū)動(dòng)讀取。這是不同的驅(qū)動(dòng),不同的階段之間有效信息交互和傳遞的一種方法。該P(yáng)CD的作用空間是一次加電過(guò)程,所修改的數(shù)值在系統(tǒng)斷電后會(huì)自動(dòng)回復(fù)到默認(rèn)初始狀態(tài)。

    HII PCD:作用空間和Default PCD一樣,主要的區(qū)別是HII的PCD可以把修改的數(shù)值直接保存到BIOS NOR Flash芯片的NVRAM區(qū)域。這樣一旦修改,再計(jì)算機(jī)下次啟動(dòng)的時(shí)候,訪問(wèn)的就是上次修改的新數(shù)值。

    VPD PCD:作用空間和上面兩種相同,主要區(qū)別是VPD PCD是只讀的不能修改,但是它也有自己的優(yōu)勢(shì)。因?yàn)閂PD PCD是的初始值是保存在BIOS固件的一段二進(jìn)制數(shù)據(jù)空間上的所以在固件編譯完成后,可以在不依賴編譯器重新編譯情況下,對(duì)該P(yáng)CD的數(shù)值進(jìn)行直接的重復(fù)設(shè)置。

    2.2 設(shè)計(jì)原理分析

    在EDKII源代碼編譯中,編譯工具集的AutoGen會(huì)遍歷整個(gè)平臺(tái)所有驅(qū)動(dòng)和頂層結(jié)構(gòu)文件生成AutoGen.h和AutoGen.c兩個(gè)關(guān)鍵文件。這兩個(gè)文件將作為后面C編譯器的自動(dòng)包換的頭文件輸入,參與C語(yǔ)言的系統(tǒng)級(jí)編譯過(guò)程,最終生成這個(gè)平臺(tái)的全局配置數(shù)據(jù)庫(kù)。

    下面通過(guò)一個(gè)NT32模擬平臺(tái)中的例子來(lái)進(jìn)行過(guò)程說(shuō)明。

    首先在NT32的頂層平臺(tái)文件DEC, DSC和INF文件中依次做如下聲明。

    MdeModulePkg.dec

    [PcdsFixedAtBuild, PcdsDynamic, PcdsDynamicEx]

    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0|UINT32|0x30000001

    Nt32Pkg.dsc

    [PcdsDynamicExDefault.common.DEFAULT]

    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0xf000

    WinNtFlashMapPei.inf

    [Pcd]

    gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashNvStorageVariableBase

    通過(guò)該聲明,定義了一個(gè)DynamicExDefault類型的PCD,其類型為UINT32,初始默認(rèn)數(shù)值為0xf000,并且驅(qū)動(dòng)模塊WinNtFlashMapPei要使用該配置數(shù)據(jù)。

    接著用EDKII的BaseTools對(duì)該源代碼架構(gòu)進(jìn)行編譯,AutoGen工具會(huì)在遍歷完整個(gè)代碼之后,在相應(yīng)的PCD驅(qū)動(dòng)編譯目錄下面自動(dòng)生成AutoGen.h和AutoGen.c兩個(gè)文件,如下所示:

    AutoGen.h (Build\NT32\DEBUG_MYTOOLS\IA32\MdeModulePkg\Universal\PCD\Pei\Pcd\DEBUG)

    #define PEI_LOCAL_TOKEN_NUMBER_TABLE_SIZE 3

    #define PEI_LOCAL_TOKEN_NUMBER 3

    #define PEI_EXMAPPING_TABLE_SIZE 1U

    #define PEI_EX_TOKEN_NUMBER 1U

    #define PEI_SIZE_TABLE_SIZE 2U

    typedef struct {

    UINT32 PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc[1];

    DYNAMICEX_MAPPING ExMapTable[PEI_EXMAPPING_TABLE_SIZE];

    UINT32 LocalTokenNumberTable[PEI_LOCAL_TOKEN_NUMBER_TABLE_SIZE];

    GUID GuidTable[PEI_GUID_TABLE_SIZE];

    UINT8 StringTable[1]; /* _ */

    SIZE_INFO SizeTable[PEI_SIZE_TABLE_SIZE];

    UINT8 SkuIdTable[PEI_SKUID_TABLE_SIZE];

    SKU_ID SystemSkuId;

    } PEI_PCD_DATABASE_INIT;

    AutoGen.c (Build\NT32\DEBUG_MYTOOLS\IA32\MdeModulePkg\Universal\PCD\Pei\Pcd\DEBUG)

    PEI_PCD_DATABASE_INIT gPEIPcdDbInit = {

    { 0xf000U }, /* PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc[1] */

    /* ExMapTable */ {{ 0x30000001U, 2U, 0U },},

    /* LocalTokenNumberTable */

    {

    offsetof(PEI_PCD_DATABASE, Uninit.PcdFlashNvStorageFtwSpareBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32,

    offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32,

    },

    /* GuidTable */

    {{ 0xA1AFF049, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xBC }},},

    //gEfiMdeModulePkgTokenSpaceGuid

    /* StringTable */ /* SizeTable *//* SkuIdTable */

    };

    AutoGen.h自動(dòng)生成的是該數(shù)據(jù)庫(kù)的結(jié)構(gòu)定義文件,它定義了各個(gè)PCD在該數(shù)據(jù)庫(kù)中存放的數(shù)據(jù)位置、類型、偏移量等信息。AutoGen.c則配合AutoGen.h詳細(xì)列出了各個(gè)比特位置存放的具體數(shù)值。

    當(dāng)WinNtFlashMapPei驅(qū)動(dòng)模塊中想要訪問(wèn)該P(yáng)CD數(shù)值的時(shí)候,只需要在C語(yǔ)言中引用PcdGet32Ex(gEfiMdeModulePkgTokenSpaceGuid, 0x30000001)。這時(shí)就會(huì)自動(dòng)掃描Init.ExMapTable 和Init.GuidTable兩張數(shù)據(jù)庫(kù)表取得該P(yáng)CD對(duì)應(yīng)的LocalTokenNumber數(shù)值 “2U”。

    而后根據(jù)映射LocalTokenNumber的數(shù)值找到“offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32”。

    通過(guò)在C語(yǔ)言中解析“offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32”的定義,就可以得到該P(yáng)CD在數(shù)據(jù)庫(kù)中的偏移量、PCD類型和數(shù)據(jù)類型信息。

    其過(guò)程如圖2所示:

    圖2 PCD訪問(wèn)過(guò)程

    3 設(shè)計(jì)局限性和改進(jìn)方法

    在該數(shù)據(jù)庫(kù)生成過(guò)程中,離不開對(duì)MS, ICC或者GCC編譯器的支持,這樣DynamicEx所宣稱的二進(jìn)制固件發(fā)布模式受到約束。換言之,想要完全的二進(jìn)制驅(qū)動(dòng)組件的發(fā)布,必須讓EDKII整個(gè)平臺(tái)PCD的生成過(guò)程脫離對(duì)任何編譯器的依賴性。

    針對(duì)這個(gè)設(shè)計(jì)要求,提出了新的設(shè)計(jì)架構(gòu),其流程圖如圖3所示:

    圖3 PCD數(shù)據(jù)庫(kù)生成流程改進(jìn)

    在新的架構(gòu)中,主要改變的是AutoGen的組件,EDKII的編譯工具集依然會(huì)遍歷整個(gè)架構(gòu)的所有驅(qū)動(dòng)和上層配置文件,但它會(huì)直接生成PCD數(shù)據(jù)庫(kù),同時(shí)生成一份包含改數(shù)據(jù)庫(kù)結(jié)構(gòu)的AutoGen.h文件和一份空的只包含注釋信息AutoGen.c文件。AutoGen.h和AutoGen.c依然采用PEI/DXE驅(qū)動(dòng)的源代碼編譯,只不過(guò)PCD數(shù)據(jù)庫(kù)不在依賴該過(guò)程產(chǎn)生,因此稍加改動(dòng),就可使DynamicEx真正發(fā)揮其所宣稱的作用。

    4 結(jié) 語(yǔ)

    EDKII的PCB數(shù)據(jù)庫(kù)目前在國(guó)內(nèi)沒(méi)有任何論文研究發(fā)表過(guò),本文主要針對(duì)這個(gè)空白領(lǐng)域,分析和研究了EDKII 最核心、最關(guān)鍵的全局?jǐn)?shù)據(jù)設(shè)置數(shù)據(jù)庫(kù)PCD的設(shè)計(jì)和實(shí)現(xiàn),并指出了其設(shè)計(jì)的不足。隨著UEFI BIOS的廣泛應(yīng)用,越來(lái)越多的軍用板卡、通信主板、嵌入式設(shè)備和服務(wù)器也會(huì)轉(zhuǎn)移到這個(gè)架構(gòu)上。如果用一個(gè)穩(wěn)定不變的核心代碼來(lái)支持不同的設(shè)備,必然會(huì)減少維護(hù)成本,提高開發(fā)效率,以及提高設(shè)備的質(zhì)量,這就是本文所研究的PCD技術(shù)的意義所在。

    參考文獻(xiàn)

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

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

    [3] Vincent Zimmer. Beyond BIOS[M]. Intel corporation,2006.

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

    [5] Intel Corporation.EDK II C Coding Standard[S]. 2006

    [6] 倪光南. UEFI BIOS是軟件業(yè)的藍(lán)海[EB/OL]. http://soft.chinabyte.com/90/3382590_1.shtml,2007

    [7] Gaurav Banga. EFI/UEFI 將帶領(lǐng)PC產(chǎn)業(yè)進(jìn)入下一世代[EB/OL].

    offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32,

    },

    /* GuidTable */

    {{ 0xA1AFF049, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xBC }},},

    //gEfiMdeModulePkgTokenSpaceGuid

    /* StringTable */ /* SizeTable *//* SkuIdTable */

    };

    AutoGen.h自動(dòng)生成的是該數(shù)據(jù)庫(kù)的結(jié)構(gòu)定義文件,它定義了各個(gè)PCD在該數(shù)據(jù)庫(kù)中存放的數(shù)據(jù)位置、類型、偏移量等信息。AutoGen.c則配合AutoGen.h詳細(xì)列出了各個(gè)比特位置存放的具體數(shù)值。

    當(dāng)WinNtFlashMapPei驅(qū)動(dòng)模塊中想要訪問(wèn)該P(yáng)CD數(shù)值的時(shí)候,只需要在C語(yǔ)言中引用PcdGet32Ex(gEfiMdeModulePkgTokenSpaceGuid, 0x30000001)。這時(shí)就會(huì)自動(dòng)掃描Init.ExMapTable 和Init.GuidTable兩張數(shù)據(jù)庫(kù)表取得該P(yáng)CD對(duì)應(yīng)的LocalTokenNumber數(shù)值 “2U”。

    而后根據(jù)映射LocalTokenNumber的數(shù)值找到“offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32”。

    通過(guò)在C語(yǔ)言中解析“offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32”的定義,就可以得到該P(yáng)CD在數(shù)據(jù)庫(kù)中的偏移量、PCD類型和數(shù)據(jù)類型信息。

    其過(guò)程如圖2所示:

    圖2 PCD訪問(wèn)過(guò)程

    3 設(shè)計(jì)局限性和改進(jìn)方法

    在該數(shù)據(jù)庫(kù)生成過(guò)程中,離不開對(duì)MS, ICC或者GCC編譯器的支持,這樣DynamicEx所宣稱的二進(jìn)制固件發(fā)布模式受到約束。換言之,想要完全的二進(jìn)制驅(qū)動(dòng)組件的發(fā)布,必須讓EDKII整個(gè)平臺(tái)PCD的生成過(guò)程脫離對(duì)任何編譯器的依賴性。

    針對(duì)這個(gè)設(shè)計(jì)要求,提出了新的設(shè)計(jì)架構(gòu),其流程圖如圖3所示:

    圖3 PCD數(shù)據(jù)庫(kù)生成流程改進(jìn)

    在新的架構(gòu)中,主要改變的是AutoGen的組件,EDKII的編譯工具集依然會(huì)遍歷整個(gè)架構(gòu)的所有驅(qū)動(dòng)和上層配置文件,但它會(huì)直接生成PCD數(shù)據(jù)庫(kù),同時(shí)生成一份包含改數(shù)據(jù)庫(kù)結(jié)構(gòu)的AutoGen.h文件和一份空的只包含注釋信息AutoGen.c文件。AutoGen.h和AutoGen.c依然采用PEI/DXE驅(qū)動(dòng)的源代碼編譯,只不過(guò)PCD數(shù)據(jù)庫(kù)不在依賴該過(guò)程產(chǎn)生,因此稍加改動(dòng),就可使DynamicEx真正發(fā)揮其所宣稱的作用。

    4 結(jié) 語(yǔ)

    EDKII的PCB數(shù)據(jù)庫(kù)目前在國(guó)內(nèi)沒(méi)有任何論文研究發(fā)表過(guò),本文主要針對(duì)這個(gè)空白領(lǐng)域,分析和研究了EDKII 最核心、最關(guān)鍵的全局?jǐn)?shù)據(jù)設(shè)置數(shù)據(jù)庫(kù)PCD的設(shè)計(jì)和實(shí)現(xiàn),并指出了其設(shè)計(jì)的不足。隨著UEFI BIOS的廣泛應(yīng)用,越來(lái)越多的軍用板卡、通信主板、嵌入式設(shè)備和服務(wù)器也會(huì)轉(zhuǎn)移到這個(gè)架構(gòu)上。如果用一個(gè)穩(wěn)定不變的核心代碼來(lái)支持不同的設(shè)備,必然會(huì)減少維護(hù)成本,提高開發(fā)效率,以及提高設(shè)備的質(zhì)量,這就是本文所研究的PCD技術(shù)的意義所在。

    參考文獻(xiàn)

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

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

    [3] Vincent Zimmer. Beyond BIOS[M]. Intel corporation,2006.

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

    [5] Intel Corporation.EDK II C Coding Standard[S]. 2006

    [6] 倪光南. UEFI BIOS是軟件業(yè)的藍(lán)海[EB/OL]. http://soft.chinabyte.com/90/3382590_1.shtml,2007

    [7] Gaurav Banga. EFI/UEFI 將帶領(lǐng)PC產(chǎn)業(yè)進(jìn)入下一世代[EB/OL].

    offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32,

    },

    /* GuidTable */

    {{ 0xA1AFF049, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xBC }},},

    //gEfiMdeModulePkgTokenSpaceGuid

    /* StringTable */ /* SizeTable *//* SkuIdTable */

    };

    AutoGen.h自動(dòng)生成的是該數(shù)據(jù)庫(kù)的結(jié)構(gòu)定義文件,它定義了各個(gè)PCD在該數(shù)據(jù)庫(kù)中存放的數(shù)據(jù)位置、類型、偏移量等信息。AutoGen.c則配合AutoGen.h詳細(xì)列出了各個(gè)比特位置存放的具體數(shù)值。

    當(dāng)WinNtFlashMapPei驅(qū)動(dòng)模塊中想要訪問(wèn)該P(yáng)CD數(shù)值的時(shí)候,只需要在C語(yǔ)言中引用PcdGet32Ex(gEfiMdeModulePkgTokenSpaceGuid, 0x30000001)。這時(shí)就會(huì)自動(dòng)掃描Init.ExMapTable 和Init.GuidTable兩張數(shù)據(jù)庫(kù)表取得該P(yáng)CD對(duì)應(yīng)的LocalTokenNumber數(shù)值 “2U”。

    而后根據(jù)映射LocalTokenNumber的數(shù)值找到“offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32”。

    通過(guò)在C語(yǔ)言中解析“offsetof(PEI_PCD_DATABASE, Init.PcdFlashNvStorageVariableBase_a1aff049_fdeb_442a_b320_13ab4cb72bbc) | PCD_TYPE_DATA | PCD_DATUM_TYPE_UINT32”的定義,就可以得到該P(yáng)CD在數(shù)據(jù)庫(kù)中的偏移量、PCD類型和數(shù)據(jù)類型信息。

    其過(guò)程如圖2所示:

    圖2 PCD訪問(wèn)過(guò)程

    3 設(shè)計(jì)局限性和改進(jìn)方法

    在該數(shù)據(jù)庫(kù)生成過(guò)程中,離不開對(duì)MS, ICC或者GCC編譯器的支持,這樣DynamicEx所宣稱的二進(jìn)制固件發(fā)布模式受到約束。換言之,想要完全的二進(jìn)制驅(qū)動(dòng)組件的發(fā)布,必須讓EDKII整個(gè)平臺(tái)PCD的生成過(guò)程脫離對(duì)任何編譯器的依賴性。

    針對(duì)這個(gè)設(shè)計(jì)要求,提出了新的設(shè)計(jì)架構(gòu),其流程圖如圖3所示:

    圖3 PCD數(shù)據(jù)庫(kù)生成流程改進(jìn)

    在新的架構(gòu)中,主要改變的是AutoGen的組件,EDKII的編譯工具集依然會(huì)遍歷整個(gè)架構(gòu)的所有驅(qū)動(dòng)和上層配置文件,但它會(huì)直接生成PCD數(shù)據(jù)庫(kù),同時(shí)生成一份包含改數(shù)據(jù)庫(kù)結(jié)構(gòu)的AutoGen.h文件和一份空的只包含注釋信息AutoGen.c文件。AutoGen.h和AutoGen.c依然采用PEI/DXE驅(qū)動(dòng)的源代碼編譯,只不過(guò)PCD數(shù)據(jù)庫(kù)不在依賴該過(guò)程產(chǎn)生,因此稍加改動(dòng),就可使DynamicEx真正發(fā)揮其所宣稱的作用。

    4 結(jié) 語(yǔ)

    EDKII的PCB數(shù)據(jù)庫(kù)目前在國(guó)內(nèi)沒(méi)有任何論文研究發(fā)表過(guò),本文主要針對(duì)這個(gè)空白領(lǐng)域,分析和研究了EDKII 最核心、最關(guān)鍵的全局?jǐn)?shù)據(jù)設(shè)置數(shù)據(jù)庫(kù)PCD的設(shè)計(jì)和實(shí)現(xiàn),并指出了其設(shè)計(jì)的不足。隨著UEFI BIOS的廣泛應(yīng)用,越來(lái)越多的軍用板卡、通信主板、嵌入式設(shè)備和服務(wù)器也會(huì)轉(zhuǎn)移到這個(gè)架構(gòu)上。如果用一個(gè)穩(wěn)定不變的核心代碼來(lái)支持不同的設(shè)備,必然會(huì)減少維護(hù)成本,提高開發(fā)效率,以及提高設(shè)備的質(zhì)量,這就是本文所研究的PCD技術(shù)的意義所在。

    參考文獻(xiàn)

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

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

    [3] Vincent Zimmer. Beyond BIOS[M]. Intel corporation,2006.

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

    [5] Intel Corporation.EDK II C Coding Standard[S]. 2006

    [6] 倪光南. UEFI BIOS是軟件業(yè)的藍(lán)海[EB/OL]. http://soft.chinabyte.com/90/3382590_1.shtml,2007

    [7] Gaurav Banga. EFI/UEFI 將帶領(lǐng)PC產(chǎn)業(yè)進(jìn)入下一世代[EB/OL].

    国产亚洲精品久久久com| 国产老妇女一区| 久久欧美精品欧美久久欧美| 亚洲18禁久久av| 岛国在线免费视频观看| 色视频www国产| 淫妇啪啪啪对白视频| 国产伦在线观看视频一区| 一进一出抽搐gif免费好疼| 日韩欧美一区二区三区在线观看| 最近中文字幕高清免费大全6 | 淫秽高清视频在线观看| 最近中文字幕高清免费大全6 | 亚洲国产精品999在线| 自拍偷自拍亚洲精品老妇| 亚洲18禁久久av| 日韩欧美精品免费久久 | 亚洲18禁久久av| a在线观看视频网站| 亚洲不卡免费看| 天天一区二区日本电影三级| 在线观看一区二区三区| 我要搜黄色片| 国产精品伦人一区二区| 老熟妇乱子伦视频在线观看| 久久精品国产亚洲av香蕉五月| 精品免费久久久久久久清纯| 两人在一起打扑克的视频| 成人精品一区二区免费| 99久久无色码亚洲精品果冻| 蜜桃久久精品国产亚洲av| 国产探花极品一区二区| 亚洲美女黄片视频| 青草久久国产| 国内久久婷婷六月综合欲色啪| 亚洲国产精品合色在线| 国产免费av片在线观看野外av| 搡老妇女老女人老熟妇| 中文字幕免费在线视频6| 两性午夜刺激爽爽歪歪视频在线观看| 欧美在线黄色| av视频在线观看入口| 亚洲成a人片在线一区二区| 看黄色毛片网站| 日韩人妻高清精品专区| 听说在线观看完整版免费高清| 国产美女午夜福利| 国产伦在线观看视频一区| 2021天堂中文幕一二区在线观| or卡值多少钱| 免费看日本二区| 国产免费男女视频| 久久这里只有精品中国| 99国产精品一区二区蜜桃av| 日韩欧美在线二视频| 久久精品国产亚洲av涩爱 | 午夜福利免费观看在线| 精品欧美国产一区二区三| 又黄又爽又刺激的免费视频.| 亚洲人成网站在线播放欧美日韩| 九九久久精品国产亚洲av麻豆| 老鸭窝网址在线观看| 内地一区二区视频在线| 午夜两性在线视频| 琪琪午夜伦伦电影理论片6080| 欧美日韩福利视频一区二区| 免费人成在线观看视频色| 国产极品精品免费视频能看的| 91麻豆精品激情在线观看国产| 99riav亚洲国产免费| 亚洲天堂国产精品一区在线| 久久精品91蜜桃| 99热只有精品国产| 免费观看的影片在线观看| 亚洲人成网站高清观看| 国产精品久久久久久亚洲av鲁大| 欧美日韩乱码在线| 内地一区二区视频在线| 国产免费一级a男人的天堂| 亚洲熟妇熟女久久| 女人被狂操c到高潮| 老司机深夜福利视频在线观看| 无遮挡黄片免费观看| 国产黄色小视频在线观看| 亚洲精品456在线播放app | 久久亚洲精品不卡| 一边摸一边抽搐一进一小说| 99精品在免费线老司机午夜| 国产av在哪里看| 观看美女的网站| 精品午夜福利视频在线观看一区| 小说图片视频综合网站| 色综合站精品国产| 男人狂女人下面高潮的视频| 国语自产精品视频在线第100页| 久久久成人免费电影| 久久天躁狠狠躁夜夜2o2o| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 日本精品一区二区三区蜜桃| 少妇人妻精品综合一区二区 | 有码 亚洲区| 少妇人妻精品综合一区二区 | 欧美性猛交黑人性爽| 中文字幕精品亚洲无线码一区| 小蜜桃在线观看免费完整版高清| 在线观看一区二区三区| 麻豆成人午夜福利视频| 日韩欧美在线乱码| 日韩欧美精品v在线| 久久6这里有精品| 色尼玛亚洲综合影院| 九九在线视频观看精品| 国产欧美日韩精品亚洲av| 国产美女午夜福利| 白带黄色成豆腐渣| 亚洲精品色激情综合| 1024手机看黄色片| 两性午夜刺激爽爽歪歪视频在线观看| 亚洲av免费在线观看| 成人av在线播放网站| 看黄色毛片网站| 亚洲自拍偷在线| 久久久久久久精品吃奶| 精品久久久久久久久久久久久| 不卡一级毛片| 免费观看人在逋| 蜜桃久久精品国产亚洲av| 欧美三级亚洲精品| 极品教师在线免费播放| 精品久久久久久久久久久久久| 国产精品一区二区性色av| or卡值多少钱| 成熟少妇高潮喷水视频| 永久网站在线| 国产伦人伦偷精品视频| 亚洲不卡免费看| 国产一级毛片七仙女欲春2| 女生性感内裤真人,穿戴方法视频| 给我免费播放毛片高清在线观看| 国产视频内射| 一本精品99久久精品77| 国产亚洲精品av在线| 亚洲经典国产精华液单 | 美女cb高潮喷水在线观看| 一进一出抽搐动态| 欧美色欧美亚洲另类二区| 欧美高清性xxxxhd video| 国产aⅴ精品一区二区三区波| 亚洲av中文字字幕乱码综合| 一级黄色大片毛片| 亚洲乱码一区二区免费版| 精品一区二区免费观看| 午夜免费激情av| 国产成人a区在线观看| 亚洲色图av天堂| 久久久久久久亚洲中文字幕 | xxxwww97欧美| av福利片在线观看| 国产av不卡久久| 成年免费大片在线观看| 久久国产精品影院| 日韩欧美免费精品| 久久久精品大字幕| 欧美bdsm另类| 毛片女人毛片| 久久久久久久久中文| 少妇丰满av| 青草久久国产| 日韩精品中文字幕看吧| 在线免费观看的www视频| 久99久视频精品免费| 国产精品亚洲美女久久久| 国产免费av片在线观看野外av| 午夜精品久久久久久毛片777| 搡老熟女国产l中国老女人| 国产精品av视频在线免费观看| 青草久久国产| 老熟妇乱子伦视频在线观看| 国产成人福利小说| 别揉我奶头 嗯啊视频| 国内精品美女久久久久久| 嫩草影院精品99| 国内久久婷婷六月综合欲色啪| 亚洲成人久久性| 国产伦人伦偷精品视频| 中文字幕久久专区| 国内揄拍国产精品人妻在线| x7x7x7水蜜桃| 亚洲av二区三区四区| 床上黄色一级片| 极品教师在线视频| 1000部很黄的大片| 欧美成人性av电影在线观看| av专区在线播放| 亚洲精品成人久久久久久| 美女cb高潮喷水在线观看| 韩国av一区二区三区四区| www日本黄色视频网| 国产亚洲av嫩草精品影院| 久久久久免费精品人妻一区二区| 精品乱码久久久久久99久播| 久久草成人影院| 动漫黄色视频在线观看| 最近中文字幕高清免费大全6 | 久久久久久久久中文| 久久这里只有精品中国| 美女高潮的动态| 国产老妇女一区| 乱人视频在线观看| 国产成人a区在线观看| 亚洲自拍偷在线| 国产精华一区二区三区| 欧美+日韩+精品| 欧美黄色片欧美黄色片| 欧美日韩亚洲国产一区二区在线观看| 在线观看av片永久免费下载| 性色avwww在线观看| 午夜日韩欧美国产| 88av欧美| 精品日产1卡2卡| 日韩欧美 国产精品| 亚洲av第一区精品v没综合| 国产精品一区二区免费欧美| 一边摸一边抽搐一进一小说| 好看av亚洲va欧美ⅴa在| 色综合亚洲欧美另类图片| 日韩有码中文字幕| 国产精品一区二区三区四区免费观看 | 欧美极品一区二区三区四区| 免费av毛片视频| 18禁在线播放成人免费| 国产人妻一区二区三区在| 色尼玛亚洲综合影院| 国产精品一区二区三区四区免费观看 | 露出奶头的视频| 很黄的视频免费| 国产在线精品亚洲第一网站| 欧美最新免费一区二区三区 | 亚洲av第一区精品v没综合| 亚洲人成伊人成综合网2020| 亚洲在线自拍视频| 九九在线视频观看精品| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 色噜噜av男人的天堂激情| 简卡轻食公司| 在线观看66精品国产| 亚洲性夜色夜夜综合| 精品人妻一区二区三区麻豆 | 国产精品亚洲美女久久久| 精品午夜福利在线看| 精品日产1卡2卡| 嫩草影视91久久| 99riav亚洲国产免费| 国产探花极品一区二区| 亚洲性夜色夜夜综合| 天堂网av新在线| 一a级毛片在线观看| 精品人妻熟女av久视频| 国产精品一区二区性色av| 99久久无色码亚洲精品果冻| 中文资源天堂在线| 国产一区二区亚洲精品在线观看| 国产高清三级在线| 他把我摸到了高潮在线观看| 成年女人毛片免费观看观看9| 国产爱豆传媒在线观看| 欧美成狂野欧美在线观看| 日韩精品中文字幕看吧| 噜噜噜噜噜久久久久久91| 精品久久久久久久久久免费视频| 国产精品一及| 尤物成人国产欧美一区二区三区| 一a级毛片在线观看| 国产视频内射| 人人妻,人人澡人人爽秒播| 亚洲成av人片免费观看| 亚洲中文字幕日韩| 亚洲狠狠婷婷综合久久图片| 内地一区二区视频在线| 成人三级黄色视频| 国产精品嫩草影院av在线观看 | 搞女人的毛片| 嫩草影院精品99| 免费在线观看日本一区| 亚洲国产欧洲综合997久久,| 国产高清三级在线| 高清日韩中文字幕在线| 欧美国产日韩亚洲一区| 午夜福利欧美成人| 一级av片app| 亚洲精品亚洲一区二区| 简卡轻食公司| 日韩欧美 国产精品| 高清毛片免费观看视频网站| 一级黄色大片毛片| 国产精品久久视频播放| 亚洲va日本ⅴa欧美va伊人久久| 久久久久久久午夜电影| 国产成人a区在线观看| 九九久久精品国产亚洲av麻豆| 久久久国产成人精品二区| 国产爱豆传媒在线观看| 亚洲人成电影免费在线| 国产免费一级a男人的天堂| 最后的刺客免费高清国语| 国产精品国产高清国产av| av在线天堂中文字幕| 日日摸夜夜添夜夜添小说| 久久久久久久久久黄片| 观看免费一级毛片| 黄片小视频在线播放| 久久精品国产亚洲av天美| 亚洲欧美日韩无卡精品| 免费看日本二区| av中文乱码字幕在线| 欧美日韩福利视频一区二区| 国产免费一级a男人的天堂| 久久久久九九精品影院| 国产精品久久久久久久电影| 桃红色精品国产亚洲av| 全区人妻精品视频| 国产精华一区二区三区| 永久网站在线| 久9热在线精品视频| 成人特级黄色片久久久久久久| 亚洲精华国产精华精| 又黄又爽又免费观看的视频| 欧美在线一区亚洲| 精品福利观看| 亚洲七黄色美女视频| 91在线观看av| 黄色视频,在线免费观看| 成人一区二区视频在线观看| 国产成人福利小说| 成人一区二区视频在线观看| 女生性感内裤真人,穿戴方法视频| 午夜精品一区二区三区免费看| 色综合亚洲欧美另类图片| 蜜桃久久精品国产亚洲av| 精品久久久久久久久亚洲 | 欧美绝顶高潮抽搐喷水| 狠狠狠狠99中文字幕| 亚洲,欧美,日韩| 最近视频中文字幕2019在线8| 成人精品一区二区免费| 嫩草影院精品99| 人人妻人人看人人澡| 久久久久久国产a免费观看| 亚洲欧美日韩高清在线视频| 有码 亚洲区| 欧美潮喷喷水| 欧美日韩中文字幕国产精品一区二区三区| 丁香六月欧美| 综合色av麻豆| 久久久久免费精品人妻一区二区| 制服丝袜大香蕉在线| 亚洲无线观看免费| 日本a在线网址| 国产成+人综合+亚洲专区| 乱人视频在线观看| 国产探花极品一区二区| 久久久久久久精品吃奶| 变态另类成人亚洲欧美熟女| 日本一二三区视频观看| 成年女人看的毛片在线观看| 午夜精品久久久久久毛片777| 两个人的视频大全免费| bbb黄色大片| 日韩免费av在线播放| 成人av在线播放网站| 91久久精品电影网| 免费在线观看成人毛片| 成人三级黄色视频| 欧洲精品卡2卡3卡4卡5卡区| 宅男免费午夜| 亚洲三级黄色毛片| 精品久久国产蜜桃| 欧美日本视频| 观看美女的网站| 免费看光身美女| 69人妻影院| 婷婷亚洲欧美| 午夜福利在线观看吧| 三级男女做爰猛烈吃奶摸视频| 中国美女看黄片| 三级男女做爰猛烈吃奶摸视频| 一边摸一边抽搐一进一小说| 亚洲一区二区三区色噜噜| 99在线视频只有这里精品首页| 12—13女人毛片做爰片一| 国产真实乱freesex| 久久久久久九九精品二区国产| 成人av在线播放网站| 国产乱人视频| 麻豆av噜噜一区二区三区| 深夜a级毛片| 亚洲欧美精品综合久久99| 久久精品久久久久久噜噜老黄 | a级毛片a级免费在线| 欧美中文日本在线观看视频| 精品一区二区三区视频在线观看免费| 少妇裸体淫交视频免费看高清| av在线老鸭窝| 精华霜和精华液先用哪个| 国产真实乱freesex| 变态另类成人亚洲欧美熟女| 极品教师在线免费播放| 高潮久久久久久久久久久不卡| 一a级毛片在线观看| 免费在线观看亚洲国产| 成年女人看的毛片在线观看| 欧美激情在线99| 在线国产一区二区在线| 五月玫瑰六月丁香| 精品久久久久久成人av| av中文乱码字幕在线| 久久久国产成人免费| 免费av不卡在线播放| 一夜夜www| 午夜免费男女啪啪视频观看 | 香蕉av资源在线| 久久人妻av系列| 亚洲熟妇中文字幕五十中出| 国产亚洲精品综合一区在线观看| 观看美女的网站| 白带黄色成豆腐渣| 青草久久国产| 波多野结衣高清无吗| 久久99热6这里只有精品| 成人三级黄色视频| 精品人妻一区二区三区麻豆 | 国产高潮美女av| 亚洲人成伊人成综合网2020| 日韩中字成人| 十八禁国产超污无遮挡网站| 色综合站精品国产| 日本熟妇午夜| www.www免费av| 国产一级毛片七仙女欲春2| 午夜精品久久久久久毛片777| 欧美又色又爽又黄视频| 婷婷丁香在线五月| 香蕉av资源在线| 啦啦啦韩国在线观看视频| 亚洲av电影在线进入| 老司机深夜福利视频在线观看| 一个人观看的视频www高清免费观看| 麻豆成人av在线观看| 麻豆国产av国片精品| 日韩欧美国产一区二区入口| 成人亚洲精品av一区二区| 国产91精品成人一区二区三区| 欧美激情在线99| 黄色日韩在线| 别揉我奶头~嗯~啊~动态视频| 亚洲av成人不卡在线观看播放网| 成年女人毛片免费观看观看9| 久久久成人免费电影| 国内精品久久久久精免费| 露出奶头的视频| 欧美日韩瑟瑟在线播放| 禁无遮挡网站| 国产av在哪里看| 亚洲男人的天堂狠狠| 亚洲精品色激情综合| 午夜免费男女啪啪视频观看 | 国产精品精品国产色婷婷| 少妇高潮的动态图| 国产亚洲精品久久久com| 国产三级中文精品| 欧美成人免费av一区二区三区| 国产蜜桃级精品一区二区三区| 啦啦啦观看免费观看视频高清| 最近视频中文字幕2019在线8| 成人国产综合亚洲| 国产精品嫩草影院av在线观看 | 国产欧美日韩一区二区三| 美女被艹到高潮喷水动态| 免费观看人在逋| 一级黄色大片毛片| 狂野欧美白嫩少妇大欣赏| 18禁黄网站禁片免费观看直播| 国产综合懂色| 舔av片在线| 看十八女毛片水多多多| 99精品久久久久人妻精品| 日韩欧美精品v在线| 又爽又黄a免费视频| 国产亚洲欧美在线一区二区| 国产精品国产高清国产av| 久久九九热精品免费| 婷婷精品国产亚洲av在线| 亚洲av电影不卡..在线观看| 国产欧美日韩精品亚洲av| 欧美+日韩+精品| 十八禁人妻一区二区| 好男人电影高清在线观看| 如何舔出高潮| 天堂动漫精品| 两性午夜刺激爽爽歪歪视频在线观看| 日本一二三区视频观看| 免费看a级黄色片| 高清在线国产一区| 国产亚洲欧美在线一区二区| 白带黄色成豆腐渣| 日韩有码中文字幕| av欧美777| 欧美最黄视频在线播放免费| 最近中文字幕高清免费大全6 | 国产三级在线视频| 国产大屁股一区二区在线视频| 午夜福利免费观看在线| .国产精品久久| 一进一出抽搐动态| 婷婷六月久久综合丁香| 午夜视频国产福利| 色精品久久人妻99蜜桃| 此物有八面人人有两片| 欧洲精品卡2卡3卡4卡5卡区| 欧美一区二区国产精品久久精品| 精品福利观看| 午夜激情欧美在线| 丰满的人妻完整版| 色综合婷婷激情| 欧美成人a在线观看| 在线观看av片永久免费下载| 免费黄网站久久成人精品 | 国产毛片a区久久久久| 国产精品嫩草影院av在线观看 | 在线免费观看的www视频| 日日摸夜夜添夜夜添av毛片 | 久久国产精品人妻蜜桃| 免费大片18禁| 亚洲中文字幕一区二区三区有码在线看| 欧美丝袜亚洲另类 | 18禁裸乳无遮挡免费网站照片| 国产精品影院久久| 中文在线观看免费www的网站| 国产一区二区三区在线臀色熟女| 在线观看66精品国产| x7x7x7水蜜桃| 91麻豆精品激情在线观看国产| 韩国av一区二区三区四区| 高清毛片免费观看视频网站| 村上凉子中文字幕在线| 夜夜躁狠狠躁天天躁| 狠狠狠狠99中文字幕| 成人av一区二区三区在线看| 亚洲人成网站在线播| 亚洲国产欧美人成| 亚洲专区国产一区二区| aaaaa片日本免费| 亚洲av.av天堂| 91狼人影院| 午夜精品在线福利| 国产一区二区在线观看日韩| 国产精品野战在线观看| 最近最新免费中文字幕在线| 国产av在哪里看| 真实男女啪啪啪动态图| 观看美女的网站| 人妻夜夜爽99麻豆av| 成熟少妇高潮喷水视频| 欧美日韩中文字幕国产精品一区二区三区| 亚洲专区国产一区二区| 日本黄色片子视频| 十八禁网站免费在线| 激情在线观看视频在线高清| 亚洲成人久久爱视频| www.色视频.com| 91九色精品人成在线观看| 欧美成狂野欧美在线观看| 午夜福利欧美成人| 午夜日韩欧美国产| 国产精华一区二区三区| 精品久久久久久久久亚洲 | 亚洲精品在线观看二区| 十八禁国产超污无遮挡网站| 69人妻影院| 日韩人妻高清精品专区| 天堂影院成人在线观看| 亚洲av一区综合| 99久久久亚洲精品蜜臀av| 欧美国产日韩亚洲一区| 免费大片18禁| 国产精品综合久久久久久久免费| 亚洲不卡免费看| 国产精品精品国产色婷婷| 日本黄大片高清| 成熟少妇高潮喷水视频| 综合色av麻豆| 国产极品精品免费视频能看的| 欧美极品一区二区三区四区| 亚洲无线在线观看| 久久香蕉精品热| 如何舔出高潮| 90打野战视频偷拍视频| 精品国产亚洲在线| 中文字幕免费在线视频6| 中文字幕熟女人妻在线| 日本黄大片高清| 久久精品国产亚洲av天美| 偷拍熟女少妇极品色| 国产高潮美女av| 精品人妻一区二区三区麻豆 | av天堂在线播放| 午夜福利成人在线免费观看| 国产精品久久久久久精品电影| 人妻丰满熟妇av一区二区三区| 亚洲自偷自拍三级| 人人妻人人看人人澡| 性色av乱码一区二区三区2| 少妇高潮的动态图| 国产亚洲精品久久久com| 国产精品影院久久|