• 
    

    
    

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

      基于UEFI的數(shù)據(jù)傳輸工具的研究與實(shí)現(xiàn)

      2020-08-06 15:01:03朱勇洪
      計(jì)算機(jī)時代 2020年7期
      關(guān)鍵詞:數(shù)據(jù)傳輸串口

      朱勇洪

      摘要:由于UEFI框架下沒有提供數(shù)據(jù)傳輸?shù)哪K,使得測試或者調(diào)試開發(fā)時需要經(jīng)常對數(shù)據(jù)文件進(jìn)行人工拷貝,導(dǎo)致了實(shí)現(xiàn)測試自動化或遠(yuǎn)程調(diào)試的不便。采用Socket數(shù)據(jù)傳輸方式設(shè)計(jì)并實(shí)現(xiàn)了UEFI下數(shù)據(jù)傳輸?shù)墓ぞ撸ㄟ^使用串口線來連接Host端和UEFI端,實(shí)現(xiàn)UEFI下的Application和Hostt端協(xié)同工作來達(dá)到Host端和uEFI端通信的目的,從而使得從Host端編譯出來的文件可以直接傳輸?shù)経EFI端的設(shè)備中去,減少人工操作方便實(shí)現(xiàn)測試自動化。最后本文通過Intel 945G Express Chioset平臺來驗(yàn)證工具的正確性。

      關(guān)鍵詞:UEFI;數(shù)據(jù)傳輸;Application;串口;Socket

      中圖分類號:TP311.56 文獻(xiàn)標(biāo)識碼:A 文章編號:1006-8228(2020)07-26-04

      0引言

      數(shù)據(jù)傳輸,顧名思義,就是要將數(shù)據(jù)從一個地方傳送到另一個地方的通信過程。目前,UEFI框架下并沒有提供數(shù)據(jù)傳輸?shù)墓ぞ?,?dǎo)致開發(fā)人員、測試人員將UEFIBIOS文件編譯出來之后,需要手動拷貝該文件到UEFI主板設(shè)備中,大量的人工操作導(dǎo)致了實(shí)現(xiàn)自動化測試或者遠(yuǎn)程調(diào)試的不便?;谶@樣的實(shí)用背景,本文通過采用Socket的數(shù)據(jù)傳輸方式,實(shí)現(xiàn)UEFI端的Application協(xié)同Host端進(jìn)行工作,達(dá)到Host端和UEFI端之間的通信的功能,從而可以輕松的將文件在兩端互傳,避免了手動操作,為遠(yuǎn)程調(diào)試和測試自動化提供基礎(chǔ)。

      1UEFl Application簡介

      UEFI的Application指系統(tǒng)的核心應(yīng)用和調(diào)用程序,如BIOS的設(shè)置、一些應(yīng)用程式以及配置管理等等,它與UEFI庫函數(shù)結(jié)合在一起,可以提供基本控制臺I/O,基本磁盤I/O,內(nèi)存管理以及字符串操作的功能。它是不依賴于系統(tǒng)軟硬件的跨平臺擴(kuò)展Firmware,以.eft文件形式存在,它在執(zhí)行完成后會返回控制權(quán),不會駐留在系統(tǒng)內(nèi)存中,因而能夠方便地移植到各個不同的平臺上(例如,IA32、IA64、Intel-64、Apple*,Duet模擬器等等)。UEFI Application的編程模型主要分為兩大類,一類是基于EFI模型的,它的代碼比較小,因?yàn)樗鼉H僅需要使用EFI的數(shù)據(jù)結(jié)構(gòu);另一類是基于便攜式模型開發(fā)的,與前一類相比較,它是一種更容易導(dǎo)入ANSI/POSIX編程模型的程序,并且它擁有常用的c語言的Library和c語言編程接口程序。

      UEFI Application的執(zhí)行流程分為三個部分,首先它必須經(jīng)過UEFI Loader來進(jìn)行加載,然后進(jìn)入到Application的入口函數(shù)處,最后通過Exit()退出應(yīng)用并返回Application的UEFI Component。

      2基于UEFl的數(shù)據(jù)傳輸工具的研發(fā)

      數(shù)據(jù)傳輸?shù)姆绞揭话阌幸韵聨追N:最簡單交互的socket方式,適合大數(shù)據(jù)量交互的邱/文件共享服務(wù)器方式,數(shù)據(jù)庫共享數(shù)據(jù)方式以及Message數(shù)據(jù)傳輸方式。本文采用socket方式,因?yàn)樵摲绞酵ㄓ眯员容^強(qiáng),且易于編程實(shí)現(xiàn),通過傳輸層協(xié)議容易加密傳輸?shù)臄?shù)據(jù),使得安全性更高,同時UEFI下需要傳輸?shù)奈募亢苄?,?shù)據(jù)交互量少,也比較適用該方式。

      2.1設(shè)計(jì)架構(gòu)分析

      通過使用串口線纜來連接Host端和UEFI端,Host端使用Windows 10 Enterprise系統(tǒng),通過標(biāo)準(zhǔn)的c++語言開發(fā)程序,UEFI端使用支持UEFI啟動的主板,使用c語言編寫并通過編譯產(chǎn)生一個備數(shù)據(jù)傳輸功能的UEFI Application的應(yīng)用程序,此處所使用的c語言在庫函數(shù)、框架結(jié)構(gòu)、調(diào)用的服務(wù)類型等方面需參照Platform Initialization Spec。

      Host端主要由以下四個部分組成:基本信息部分、串口控制部分、線程控制部分、文件傳輸部分。

      (1)基本信息部分:通過運(yùn)行ReadSetuplnfo()函數(shù)來讀取串口的相關(guān)配置信息,主要包括串口的名稱、波特率和串口的流控信息,并將這些信息存入到指定的數(shù)據(jù)結(jié)構(gòu)中。

      (2)串口控制部分:創(chuàng)建一個CSerial類來負(fù)責(zé)串口的初始化并獲得句柄進(jìn)行串口的讀寫操作。在該類中封裝了初始化串口和控制串口運(yùn)行過程中需要使用的一些變量以及讀寫串口時需要的相關(guān)函數(shù)。

      (3)線程控制部分:設(shè)計(jì)主線程、讀線程和寫線程。主線程主要負(fù)責(zé)創(chuàng)建讀寫線程,后續(xù)將不再進(jìn)行其他操作,可留作后續(xù)開發(fā)的拓展使用。在使用串口進(jìn)行數(shù)據(jù)的讀寫傳輸時,讀線程負(fù)責(zé)讀取UEFI端通過串口線纜發(fā)送過來的信息,并將這些信息顯示在屏幕上;寫線程則負(fù)責(zé)將用戶輸入的信息(例如,需要傳輸?shù)奈募┩ㄟ^串口線纜發(fā)送到UEFI端。

      (4)文件傳輸部分:包括從Host端發(fā)送單個文件到UEFI端和從UEFI端接收單個文件兩部分,這個過程需要UEFI端的Application配合使用。

      UEFI端是一個基于UEFI的Application應(yīng)用程序,參考EDKIIINFSpec、DSCSpec、DECspec提供該程序所需要的模塊文件(.inf)及c文件,平臺描述文件(.dsc)和平臺聲明文件(.dec),其功能是為了配合Host端的文件傳輸部分,其中UEFI端主要實(shí)現(xiàn)了從Host端接收單個文件和發(fā)送單個文件到Host端這兩個部分的功能。

      2.2數(shù)據(jù)傳輸實(shí)現(xiàn)過程分析

      對于數(shù)據(jù)的傳輸,其實(shí)現(xiàn)過程主要包括四個部分:Host端發(fā)送單個文件,Host端接收單個文件,UEFI端發(fā)送單個文件以及UEFI端接收單個文件。以Host端發(fā)送單個文件為例,其過程主要包括①讀取用戶輸入的文件名,并將文件打開;②將讀取到的文件名轉(zhuǎn)換成傳輸至UEFI端的路徑、文件名組合;③計(jì)算該文件名的長度以及文件的長度;④調(diào)用TestSpeed H to_T()函數(shù)來測試Host端向UEFI端傳輸數(shù)據(jù)的速度;⑤按照上一步獲得的數(shù)據(jù)來設(shè)置傳輸包的長度以及包的傳輸時間間隔;⑥按照包封裝的形式發(fā)送包含文件名、文件名長度、文件長度的數(shù)據(jù)包至UEFI端;⑦按照包封裝的形式發(fā)送文件內(nèi)容至UEFI端;⑧釋放所使用的相關(guān)資源,從Host端到UEFI端的數(shù)據(jù)傳輸?shù)酱私Y(jié)束。在該過程中,主函數(shù)TransferHostFile()首先調(diào)用SafeSendData()函數(shù)來發(fā)送包含文件名、文件名長度、文件長度的數(shù)據(jù)包至UEFI端,然后再次調(diào)用SafeSendData()函數(shù)來發(fā)送文件內(nèi)容至UEFI端。而SafeSendData()函數(shù)則會將所得到的所有數(shù)據(jù)分裝成數(shù)據(jù)包的形式,然后將數(shù)據(jù)包進(jìn)行Md5 CheckSum的計(jì)算來檢驗(yàn)在傳輸過程中數(shù)據(jù)包的正確性。圖1顯示了Host端傳輸文件至UEFI端的流程。

      在UEFI端的Application其實(shí)現(xiàn)過程需要將其代碼添加到UEFI的源代碼結(jié)構(gòu)中進(jìn)行編譯,首先需要建立一個存放該Application源代碼的子目錄和一個與Application源代碼相關(guān)的.inf文件,對于Application的源文件,可以放在工作目錄的任何地方,而該文件的存放路徑則需要在所開發(fā)模塊的.inf文件中指出。一個模塊的.inf文件主要是為了定義單個項(xiàng)目所需要的所有信息,包括了一些源文件,庫或者庫類,以及一些編譯相關(guān)的組件等,用它來產(chǎn)生的二進(jìn)制文件要么是原始的二進(jìn)制文件,要么是具有PE32/PE32+/COFF格式的可以在UEFIShell環(huán)境下執(zhí)行的文件。

      3數(shù)據(jù)傳輸工具的測試檢驗(yàn)

      該檢驗(yàn)過程分別以Windows 10 Enterprise系統(tǒng)和Intel 945G Express Chipset平臺作為實(shí)驗(yàn)檢測的Host端和UEFI端,通過串口連接兩端,同時在UEFI端配備有外圍設(shè)備u盤。將Intel 945G Express Chipset平臺啟動到UEFI Shell的模式下,運(yùn)行處于Host端的程序,在彈出的運(yùn)行窗口中運(yùn)行處于UEFI端u盤中的UEFI Application-FDTTargetWithShell.efi,此時便可以進(jìn)行Host端和UEFI端的相互通信功能,進(jìn)行單個文件的收發(fā)功能。

      在Host端執(zhí)行數(shù)據(jù)傳輸工具,首先會獲得串口相關(guān)信息,然后進(jìn))kUEFI端的Shell環(huán)境,由此可進(jìn)入處于UEFI端的外圍設(shè)備u盤中,在運(yùn)行了u盤中的FDTTargetWithShell.eft這個Application之后便可以在Host端和UEFI端進(jìn)行數(shù)據(jù)傳輸了。此時狀態(tài)如圖3。

      數(shù)據(jù)傳輸工具提供了單個文件的收發(fā)功能,可以通過輸入操作數(shù)1、2分別進(jìn)行選擇。圖4給出了選擇單個文件從Host端發(fā)送到UEFI端的過程,圖5給出了文件成功傳輸時的狀態(tài)。最后通過檢查u盤中的文件來確認(rèn)文件已經(jīng)從Host端傳輸?shù)経EFI端,同時對接收到的文件與Host端的發(fā)送的文件進(jìn)行比較,來確認(rèn)數(shù)據(jù)在傳輸過程中的完整性。

      在選擇輸入操作功能2的情況下,實(shí)現(xiàn)了從UEFI端發(fā)送單個文件到Host端的功能。圖6給出了選擇單個文件從UEFI端發(fā)送到Host端的過程,而圖7則給出了雙端通信過程中文件傳輸成功時的狀態(tài)。

      4結(jié)束語

      本文采用Socket數(shù)據(jù)傳輸?shù)姆绞皆O(shè)計(jì)了UEFI下的數(shù)據(jù)傳輸工具進(jìn)行UEFI端和Host端的單個文件的傳輸功能,可以方便開發(fā)人員進(jìn)行遠(yuǎn)程調(diào)試的工作,也可以方便測試人員使用該工具實(shí)現(xiàn)測試自動化。下一步可以嘗試對數(shù)據(jù)傳輸?shù)膱D形化界面的設(shè)計(jì)與實(shí)現(xiàn),嘗試支持豐富的窗口創(chuàng)建、控件的支持和顯示顏色特效的添加。目前圖形化界面僅僅負(fù)責(zé)對配置選項(xiàng)進(jìn)行簡單的控制,當(dāng)然選用的圖形化界面語言范圍可以再進(jìn)一步擴(kuò)展,不僅僅局限于UEFI BIOS系統(tǒng)當(dāng)前支持的VFR語言。

      猜你喜歡
      數(shù)據(jù)傳輸串口
      淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
      基于Ad Hoc的微震監(jiān)測數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)
      網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)總體架構(gòu)設(shè)計(jì)
      短波中低速數(shù)據(jù)傳輸技術(shù)
      基于ZigBee 的井下探測小助手設(shè)計(jì)
      GPRS DTU的應(yīng)用經(jīng)驗(yàn)淺析
      科技視界(2016年11期)2016-05-23 17:44:00
      北斗衛(wèi)星導(dǎo)航定位系統(tǒng)在數(shù)字林業(yè)的應(yīng)用
      數(shù)字電源內(nèi)部數(shù)據(jù)傳輸?shù)拇谕ㄐ欧椒▽?shí)現(xiàn)
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      串口技術(shù)的實(shí)物調(diào)試和虛擬仿真聯(lián)合教學(xué)模式
      黎城县| 抚州市| 陆丰市| 时尚| 商丘市| 五寨县| 宁明县| 德清县| 贵阳市| 甘肃省| 多伦县| 开阳县| 平和县| 宁远县| 若羌县| 镇宁| 通州区| 鸡东县| 南丰县| 玛沁县| 渭源县| 历史| 九龙坡区| 拉萨市| 青河县| 拜城县| 买车| 东城区| 宝坻区| 稷山县| 历史| 磐安县| 容城县| 屏东市| 当雄县| 沅江市| 武宁县| 和顺县| 香格里拉县| 突泉县| 交城县|