• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于UEFI的膠囊式固件定制更新研究

      2014-06-07 05:53:21杜振龍沙光俠李曉麗沈鋼綱
      計算機工程 2014年10期
      關(guān)鍵詞:固件分塊內(nèi)存

      杜振龍,沙光俠,李曉麗,沈鋼綱

      (南京工業(yè)大學電子與信息工程學院,南京210009)

      基于UEFI的膠囊式固件定制更新研究

      杜振龍,沙光俠,李曉麗,沈鋼綱

      (南京工業(yè)大學電子與信息工程學院,南京210009)

      當前固件刷新技術(shù)不靈活、不能單獨更新功能模塊,且各硬件平臺、操作系統(tǒng)的更新數(shù)據(jù)傳輸接口不統(tǒng)一。為解決上述問題,基于統(tǒng)一可擴展固件接口(UEFI)規(guī)范的EDKⅡ,提出一種膠囊(Capsule)式固件更新方法,將更新數(shù)據(jù)封裝為Capsule,在固件層對Capsule進行識別、析取,把獲取數(shù)據(jù)寫入固件文件系統(tǒng)的更新目標地址,實現(xiàn)對固件系統(tǒng)內(nèi)核函數(shù)、驅(qū)動模塊、協(xié)議、應(yīng)用程序等的更新、修復。該方法在操作系統(tǒng)加載前實現(xiàn)指定功能模塊的定制更新和維護,不限制更新模塊的容量,可解決傳統(tǒng)固件更新方法過于依賴硬件、操作系統(tǒng)的問題,具有安全、高效、靈活、實用性強的特點。

      膠囊式;更新;固件;統(tǒng)一可擴展固件接口;固件文件系統(tǒng);定制

      1 概述

      固件基本輸入輸出系統(tǒng)(Basic Input and Output System,BIOS)保存于計算機系統(tǒng)的可編程Flash芯片,是計算機、嵌入式系統(tǒng)的重要底層系統(tǒng)軟件[1]。固件的升級、更新能夠修復計算機系統(tǒng)故障、擴展固件功能,是系統(tǒng)軟件的適應(yīng)性維護工作。隨著互聯(lián)網(wǎng)應(yīng)用的深入,證劵、金融、電信等領(lǐng)域的客戶端固件定制正成為新的應(yīng)用熱點,需要具有個性化鮮明的定制產(chǎn)品。隨之而來的問題是固件的更新更為頻繁,而目前的固件更新技術(shù)不能對指定模塊進行更新,因此,亟需研究新的軟件更新維護方式。

      傳統(tǒng)固件與不同操作系統(tǒng)的數(shù)據(jù)傳輸接口不統(tǒng)一,造成相同功能的固件系統(tǒng)需定制多個發(fā)行版本。為了解決該問題,統(tǒng)一可擴展固件接口(Unified Extensible Firmware Interface,UEFI)定義了膠囊(Capsule)規(guī)范,利用Capsule把數(shù)據(jù)傳至UEFI固件,實現(xiàn)固件更新、BIOS參數(shù)修改等系統(tǒng)維護。

      傳統(tǒng)固件更新技術(shù)采用整體刷新方式,刷新工具過于依賴硬件,且不能對特定模塊進行定制更新。本文分析Capsule規(guī)范,結(jié)合UEFI固件文件系統(tǒng),提出了一種基于UEFI的固件Capsule式定制更新方法。

      2 統(tǒng)一可擴展固件接口UEFI

      傳統(tǒng)固件系統(tǒng)采用匯編語言開發(fā),工作在16位實模式狀態(tài),尋址空間僅1 024 Byte,已很難通過優(yōu)化改良獲得本質(zhì)性的突破,成為了限制PC機發(fā)展的瓶頸[2]。為此,Intel等公司提出了通用可擴展固件接口UEFI架構(gòu),該架構(gòu)具有支持C語言開發(fā)、模塊化設(shè)計、圖形化界面及文件系統(tǒng)等優(yōu)勢,在開發(fā)語言、運行狀態(tài)及可用內(nèi)存等方面比傳統(tǒng)固件有了很大突破。按照模塊化設(shè)計要求,UEFI定義了設(shè)備驅(qū)動模型,硬件廠商可以按照UEFI標準開發(fā)出硬件設(shè)備驅(qū)動,減少了廠商間的依賴[2]。UEFI規(guī)范把操作系統(tǒng)啟動之前劃分為:安全保護階段SEC,環(huán)境初始化階段PEI,驅(qū)動執(zhí)行環(huán)境階段DXE和引導設(shè)備選擇階段BDS這4個階段,詳細描述了系統(tǒng)從加電、處理器初始化、硬件初始化、啟動路徑判斷、系統(tǒng)策略設(shè)定、用戶配置界面,到進入操作系統(tǒng)的詳細過程[3]。

      UEFI程序分為內(nèi)核、驅(qū)動和應(yīng)用程序3類。UEFI內(nèi)核提供包括內(nèi)存管理、事件管理、任務(wù)優(yōu)先級管理、句柄管理[4-5]等服務(wù)。驅(qū)動實現(xiàn)對硬件資源的訪問與管理、支持新設(shè)備的驅(qū)動開發(fā)[6-7]及擴展。應(yīng)用程序提供固件功能擴展、定制、增值等服務(wù)。

      UEFI定義了固件文件系統(tǒng)和文件組成結(jié)構(gòu)[6]。編譯生成的二進制UEFI固件稱為固件鏡像文件,由不同文件類型的固件卷組成[8-10],包括系統(tǒng)固件卷和非易失性存儲固件卷。系統(tǒng)固件卷主要用于存放固件代碼,非易失性存儲固件卷用于存放系統(tǒng)變量、配置文件、日志等。利用固件文件系統(tǒng)可在有限的Flash空間有效地存儲、管理模塊化驅(qū)動程序[11-12]。

      3 傳統(tǒng)固件更新技術(shù)

      傳統(tǒng)固件由MainBios和Bootblock 2個部分組成。Mainbios負責硬件初始化、服務(wù)程序建立、操作系統(tǒng)引導。Bootblock包含用于引導的最小指令集,正常的固件更新操作不清除Bootblock內(nèi)容,因此,更新失敗時可利用Bootblock進行恢復操作。傳統(tǒng)固件更新采用刷新MainBios和整體固件刷新2種方式。當需要更新某一特定芯片的驅(qū)動程序、添加增值應(yīng)用模塊時,傳統(tǒng)固件更新方法需要對整個Flash進行更新。

      目前的更新機制需要CPU支持系統(tǒng)管理模式(System Management Mode,SMM)。進入SMM模式是由中斷信號SMI觸發(fā)引起,由處理器SMI管腳信號有效或者收到高級配置和電源管理接口(Advanced Configuration and Power Management Interface,ACPI)總線的修改請求。SMI中斷是不可屏蔽外部中斷,獨立于其他中斷和異常處理。處理器接收到SMI請求后,等待所有指令執(zhí)行和訪存完成后把當前處理器上下文存入SMRAM,切入SMM模式執(zhí)行SMI處理程序。采用這種刷新技術(shù),需要依賴BIOS的SMI驅(qū)動支持,因此,SMI驅(qū)動程序的可靠性影響固件刷新的成功率[4]。

      4 基于Capsule的固件定制式更新

      Capsule是UEFI定義用于操作系統(tǒng)與固件系統(tǒng)進行數(shù)據(jù)傳輸?shù)囊环N規(guī)范。本節(jié)主要討論基于Capsule規(guī)范實現(xiàn)固件定制更新的方法。

      4.1 Capsule結(jié)構(gòu)

      Capsule由頭結(jié)構(gòu)和卷組成,如圖1所示。

      圖1 Capsule結(jié)構(gòu)

      Capsule頭結(jié)構(gòu)體包含整個 Capsule的有關(guān)信息,其結(jié)構(gòu)體的主要組成如下。

      Capsule結(jié)構(gòu)包括表示文件大小的CapsuleImage Size,指示Capsule在固件卷位置的OffsetToCapsule Body。固件更新文件較大時,升級時需要申請一段連續(xù)內(nèi)存用以存放升級鏡像文件。為了避免未能申請到所需內(nèi)存導致升級失敗的情況出現(xiàn),在更新過程中可按需把Capsule分成更小的SubCapsule數(shù)據(jù)單元。每個SubCapsule和Capsule的結(jié)構(gòu)相同,以SequenceNumber標識指示順序。InstanceId標識分割后的 Capsule塊,為方便升級過程按順序組合Capsule塊并寫入Flash。

      Capsule卷的組織結(jié)構(gòu)和標準固件卷文件相同。Capsule卷中可存儲固件文件、EFI程序、BIOS配置信息等數(shù)據(jù)。

      UEFI規(guī)范中基于Capsule的數(shù)據(jù)傳輸機制,需要經(jīng)過數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)封裝和數(shù)據(jù)解析3個階段。

      (1)Capsule數(shù)據(jù)結(jié)構(gòu)設(shè)計:定義用于操作系統(tǒng)與固件系統(tǒng)之間的數(shù)據(jù)傳輸接口。

      (2)數(shù)據(jù)封裝:把需要傳輸?shù)焦碳到y(tǒng)的數(shù)據(jù)進行才Capsule包裝,并按需分配內(nèi)存。

      (3)數(shù)據(jù)解析:固件系統(tǒng)在PEI,DXE,BDS階段對Capsule包進行解析,提取其中的固件文件和數(shù)據(jù)。

      4.2 固件定制式更新

      基于UEFI的Capsule式固件定制更新方法在編譯階段把待更新的數(shù)據(jù)封裝成Capsule,在固件系統(tǒng)啟動過程解析Capsule,并把解析內(nèi)容寫入內(nèi)存指定地址的Flash,從而使更新、升級數(shù)據(jù)傳遞至固件系統(tǒng),實現(xiàn)對指定固件卷的更新。

      采用Capsule的固件定制式更新方法主要包括數(shù)據(jù)傳輸和數(shù)據(jù)更新過程。數(shù)據(jù)傳輸階段運行在操作系統(tǒng)環(huán)境或 UEFI Shell,把更新數(shù)據(jù)封裝成Capsule并傳輸至固件系統(tǒng)。數(shù)據(jù)更新階段解析更新的Capsule,為Capsule分配內(nèi)存,把更新內(nèi)容寫入指定位置。

      更新時先通過Capsule頭結(jié)構(gòu)找到Capsule的固件卷位置,根據(jù)系統(tǒng)當前內(nèi)存的空閑情況判斷是否需要對Capsule進行分塊。在Capsule所需的連續(xù)空間內(nèi)存未能滿足時,則需要把Capsule劃分為更小的SubCapsule數(shù)據(jù)單元,并為每個SubCapsule分配內(nèi)存,修改 EFI_CAPSULE_HEADER結(jié)構(gòu)體的SequenceNumber成員,使其記錄下一個相鄰的SubCapsule位置。當所需內(nèi)存申請成功時,則不需要對Capsule進行再分塊,直接把SequenceNumber值設(shè)為0。Capsule分塊為SubCapsule的過程如圖2所示。

      圖2 Capsule分塊過程

      分塊過程需為每個SubCapsule創(chuàng)建包括數(shù)據(jù)起始地址、數(shù)據(jù)長度、校驗和的描述信息鏈表。把第一個SubCapsule描述符的地址存儲到CMOS中的變量參數(shù)表或 UEFI端口映射表的 LocationOf ThePointer指定的內(nèi)存位置。升級、刷新過程在計算機的S3睡眠狀態(tài)進行,更新完成后通過實時時鐘(Real-time Clock,RTC)喚醒。

      采用Capsule的固件定制式更新在數(shù)據(jù)更新階段解析、提取Capsule中封裝的數(shù)據(jù),根據(jù)設(shè)定對固件系統(tǒng)進行定制更新。數(shù)據(jù)更新工作主要在PEI, DXE階段進行。

      PEI階段用 PPI識別并恢復 Capsule。PPI是UEFI定義的用于PEI階段模塊(PEIM)之間傳遞函數(shù)和數(shù)據(jù)的接口。PEIM將需要提供給其他PEIM的數(shù)據(jù)和函數(shù)封裝在PEI服務(wù)中,PEIM通過GUID找到所需模塊,獲得需要的數(shù)據(jù)。PPI的結(jié)構(gòu)體原型定義如下:

      PEI階段利用PPI的CheckCapsuleUpdate函數(shù)查找CMOS中是否有 Capsule,有 Capsule時調(diào)用Coalesce函數(shù)將 SubCapsule按順序合并,再通過CreateState函數(shù)把合并后的Capsule在內(nèi)存中的位置和大小寫入HOB鏈表,由HOB把數(shù)據(jù)從PEI階段傳遞至DXE階段。

      DXE階段從 HOB鏈表搜索 Capsule相關(guān)的HOB,調(diào)用服務(wù)ProcessFirmwareVolume從HOB鏈表中得到Capsule在內(nèi)存中的地址、大小等參數(shù),分離出固件卷,并為固件卷創(chuàng)建Protocol,方便對其進行讀寫操作。分離出的固件卷需根據(jù)校驗和判斷其有效性,只對有效的固件卷實施更新操作。

      4.3 基于Capsule固件定制式的更新流程

      如圖3所示,固件更新流程在操作系統(tǒng)階段根據(jù)系統(tǒng)當前的內(nèi)存使用狀況判斷是否需要對Capsule進行分塊,所需的連續(xù)內(nèi)存不滿足時把Capsule分塊為SubCapsule,為每個SubCapsule分配內(nèi)存空間。使計算機系統(tǒng)進入S3睡眠狀態(tài),開始對UEFI固件系統(tǒng)進行更新。

      圖3 UEFI更新流程

      UEFI固 件 系 統(tǒng) 在 PEI階段 識 別、合 并SubCapsule,形成完整的Capsule,把合并后的Capsule在內(nèi)存中的地址和大小相關(guān)信息寫入HOB鏈表。進入DXE階段后,查找 HOB鏈表并定位至包含Capsule的HOB,從中解析Capsule,提取出保存在其中的固件卷,利用固件卷的校驗和來判斷其是否合法,讀取合法有效的固件卷中的驅(qū)動或應(yīng)用程序。調(diào)用DXE階段的驅(qū)動分配加載服務(wù)Dispatch,判斷驅(qū)動之間的依賴關(guān)系,根據(jù)正確的順序查找和執(zhí)行UEFI固件更新。

      基于UEFI的Capsule固件定制式更新方法能夠靈活地更新固件系統(tǒng)文件或模塊,既能夠根據(jù)需要更新固件卷模塊,又可以更新固件卷模塊的應(yīng)用程序,方便了固件系統(tǒng)的更新、修改和移植。

      5 功能測試

      在Intel的Sandy Bridge測試平臺測試了本文所提出的基于UEFI的Capsule固件定制式更新算法。測試環(huán)境為UEFI SHELL。測試包括更新整個UEFI固件和單一固件卷模塊(FV_APPLY)。Flash Map描述了固件的靜態(tài)結(jié)構(gòu)組成,設(shè)定Flash Map可改變固件卷在Flash的位置。表1為Flash Map的部分內(nèi)容。

      Flash Map確定了固件卷模塊在Flash中的起始地址和空間大小,如表1所示,固件文件包含5個固件卷模塊,大小為3 MB,存儲在容量為8 MB的Flash?;赨EFI的Capsule固件定制式更新把固件卷封裝成Capsule,根據(jù)需要把Capsule分割成SubCapsule,PEI階段將SubCapsule合并,DXE階段通過對Capsule進行解析取得固件卷模塊及其在內(nèi)存中的地址。

      表1 Flash Map的部分內(nèi)容

      圖4為仿真器[6]跟蹤的內(nèi)存中待更新模塊FV_ APPLY的內(nèi)容,從 0xFFF0 0000位置至 0xFFF8 0000為更新內(nèi)容。

      圖4 仿真器測試結(jié)果

      經(jīng)過測試,基于Capsule的固件定制更新方法可以實現(xiàn)整體、分塊更新,更新所用時間和更新數(shù)據(jù)大小如表2所示。

      表2 固件定制更新方法測試結(jié)果

      6 結(jié)束語

      基于UEFI的固件Capsule式定制更新方法統(tǒng)一了不同操作系統(tǒng)和固件系統(tǒng)之間的傳輸方式,降低了對操作系統(tǒng)的依賴。更新、升級的數(shù)據(jù)在固件系統(tǒng)進行讀取,避免了操作系統(tǒng)中未經(jīng)授權(quán)的操作、訪問,安全性較高。Capsule內(nèi)容既可作為系統(tǒng)參數(shù)、變量等信息,也可用作固件驅(qū)動及應(yīng)用程序,更新、升級的內(nèi)容更為廣泛。本文提出了一種基于UEFI的固件Capsule式定制更新方法,與利用SMI中斷技術(shù)的軟件更新方法相比,該方法可靠、靈活,且運行在操作系統(tǒng)啟動之前,無需受制于操作系統(tǒng),可根據(jù)需要對固件模塊進行定制式更新。該方法可用于固件遠程刷新、固件自動恢復等應(yīng)用。

      [1] 李榮冰,劉建業(yè),袁 朔,等.用串行方式實現(xiàn)微小型導航計算機應(yīng)用軟件的快速更新研究[J].小型微型計算機系統(tǒng),2005,26(9):1657-1660.

      [2] 黃海彬.基于EFI固件文件系統(tǒng)的平臺安全策略研究與實現(xiàn)[D].上海:上海交通大學,2010.

      [3] Unified EFI Inc.Unified Extensible Firmware Interface Specification Version 2.3[EB/OL].(2009-11-26). https://www.tianocore.org.

      [4] 劉 佳,辛曉晨,沈鋼綱,等.基于UEFI的Flash更新的開發(fā)研究[J].計算機工程與設(shè)計,2011,32(1): 114-117.

      [5] 唐文彬,祝躍飛,陳嘉勇.統(tǒng)一可擴展固件接口攻擊方法研究[J].計算機工程,2012,38(13):99-111.

      [6] 崔 瑩,王寶濤,沈鋼綱.UEFI下基于USB的調(diào)試信息輸出工具的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計, 2010,24(10):5227-5230.

      [7] 崔 瑩,辛曉晨,沈鋼綱.基于UEFI的嵌入式驅(qū)動程序的開發(fā)研究[J].計算機工程與設(shè)計,2010,24(10): 2384-2387.

      [8] Intel Corporation.Intel Platform Innovation Framework for EFI Architecture Specification,Version 0.9[Z]. 2003.

      [9] Intel Corporation.Intel Platform Innovation Framework for EFI Firmware File System Specification,Version 0.9 [Z].2003.

      [10] Intel Corporation.Intel Platform Innovation Framework for EFI Firmware Volume Specification,Version 0.9 [Z].2003.

      [11] Du Zhenlong,Li Xiaoli,Shen Kangkang,et al.Ensemble of Trusted Firmware Services Based on TPM[J]. International Journal of Digital Content Technology and Its Applications,2011,5(3):175-184.

      [12] 杜振龍,沙光俠,李曉麗,等.MIPS架構(gòu)計算機平臺的支持固件研究[J].蘭州理工大學學報,2013,39(6): 94-99.

      編輯 顧逸斐

      Customization and Update Research on Capsule Type Firmware Based on UEFI

      DU Zhen-long,SHA Guang-xia,LI Xiao-li,SHEN Gang-gang
      (College of Electronic and Information Engineering,Nanjing University of Technology,Nanjing 210009,China)

      Conventional firmware update is totally refreshed,which is inflexible for updating the specified modules.In the paper,based on Unified Extensible Firmware Interface(UEFI),an approach of Capsule type firmware update is proposed,which encapsulates the update data in Capsule,transfers the Capsule to firmware system,unpacks the Capsule for recollecting the update data,and writes the refresh data to the required memory.The proposed method is able to update the specified firmware function,module,protocol,or application.Experimental result shows that the given method can perform the firmware update in module,and holds the advantages of security,high-efficiency and strong flexibility.

      Capsule type;update;firmware;Unified Extensible Firmware Interface(UEFI);firmware file system;

      1000-3428(2014)10-0292-04

      A

      TP391.4

      10.3969/j.issn.1000-3428.2014.10.054

      教育部高等學校博士點基金資助項目(20113221120003);江蘇省六大人才高峰基金資助項目(2012-WLW-023);江蘇省自然科學基金資助項目(BK2009081);江蘇省高校自然科學基金資助項目(09KJB520006,11KJD520007)。

      杜振龍(1971-),男,副教授、博士,主研方向:可信媒體認證,計算機圖形學,機器學習;沙光俠,工程師、碩士;李曉麗,副教授、博士研究生;沈鋼綱,教授、博士、博士生導師。

      2013-09-04

      2013-11-14E-mail:duzhlcad@gmail.com

      中文引用格式:杜振龍,沙光俠,李曉麗,等.基于UEFI的膠囊式固件定制更新研究[J].計算機工程,2014, 40(10):292-295,303.

      英文引用格式:Du Zhenlong,Sha Guangxia,Li Xiaoli,et al.Customization and Update Research on Capsule Type Firmware Based on UEFI[J].Computer Engineering,2014,40(10):292-295,303.

      customization

      猜你喜歡
      固件分塊內(nèi)存
      分塊矩陣在線性代數(shù)中的應(yīng)用
      “春夏秋冬”的內(nèi)存
      當代陜西(2019年13期)2019-08-20 03:54:22
      反三角分塊矩陣Drazin逆新的表示
      基于固件的遠程身份認證
      基于自適應(yīng)中值濾波的分塊壓縮感知人臉識別
      基于多分辨率半邊的分塊LOD模型無縫表達
      提取ROM固件中的APP
      電腦愛好者(2015年7期)2015-04-09 08:54:02
      一種通過USB接口的可靠固件升級技術(shù)
      基于內(nèi)存的地理信息訪問技術(shù)
      奧林巴斯XZ—2新固件升級
      中國攝影(2014年1期)2014-02-24 01:50:23
      浦东新区| 巴林左旗| 合川市| 张家口市| 兴海县| 东山县| 牙克石市| 宜君县| 凤阳县| 扎兰屯市| 乌海市| 台南县| 婺源县| 乌拉特后旗| 普格县| 镇安县| 柳江县| 绥德县| 沂水县| 横山县| 邮箱| 泰兴市| 平塘县| 介休市| 黔西县| 河北区| 南京市| 砚山县| 时尚| 海口市| 于田县| 垣曲县| 花垣县| 土默特左旗| 金川县| 西青区| 石城县| 读书| 两当县| 五华县| 石嘴山市|