亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        朱勇洪

        摘要:由于UEFI框架下沒有提供數(shù)據(jù)傳輸?shù)哪K,使得測試或者調(diào)試開發(fā)時(shí)需要經(jīng)常對數(shù)據(jù)文件進(jìn)行人工拷貝,導(dǎo)致了實(shí)現(xiàn)測試自動(dòng)化或遠(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)測試自動(dòng)化。最后本文通過Intel 945G Express Chioset平臺(tái)來驗(yàn)證工具的正確性。

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

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

        0引言

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

        1UEFl Application簡介

        UEFI的Application指系統(tǒng)的核心應(yīng)用和調(diào)用程序,如BIOS的設(shè)置、一些應(yīng)用程式以及配置管理等等,它與UEFI庫函數(shù)結(jié)合在一起,可以提供基本控制臺(tái)I/O,基本磁盤I/O,內(nèi)存管理以及字符串操作的功能。它是不依賴于系統(tǒng)軟硬件的跨平臺(tái)擴(kuò)展Firmware,以.eft文件形式存在,它在執(zhí)行完成后會(huì)返回控制權(quán),不會(huì)駐留在系統(tǒng)內(nèi)存中,因而能夠方便地移植到各個(gè)不同的平臺(tá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í)行流程分為三個(gè)部分,首先它必須經(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ù),使得安全性更高,同時(shí)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啟動(dòng)的主板,使用c語言編寫并通過編譯產(chǎn)生一個(gè)備數(shù)據(jù)傳輸功能的UEFI Application的應(yīng)用程序,此處所使用的c語言在庫函數(shù)、框架結(jié)構(gòu)、調(diào)用的服務(wù)類型等方面需參照Platform Initialization Spec。

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

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

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

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

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

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

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

        對于數(shù)據(jù)的傳輸,其實(shí)現(xiàn)過程主要包括四個(gè)部分:Host端發(fā)送單個(gè)文件,Host端接收單個(gè)文件,UEFI端發(fā)送單個(gè)文件以及UEFI端接收單個(gè)文件。以Host端發(fā)送單個(gè)文件為例,其過程主要包括①讀取用戶輸入的文件名,并將文件打開;②將讀取到的文件名轉(zhuǎn)換成傳輸至UEFI端的路徑、文件名組合;③計(jì)算該文件名的長度以及文件的長度;④調(diào)用TestSpeed H to_T()函數(shù)來測試Host端向UEFI端傳輸數(shù)據(jù)的速度;⑤按照上一步獲得的數(shù)據(jù)來設(shè)置傳輸包的長度以及包的傳輸時(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ù)則會(huì)將所得到的所有數(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)行編譯,首先需要建立一個(gè)存放該Application源代碼的子目錄和一個(gè)與Application源代碼相關(guān)的.inf文件,對于Application的源文件,可以放在工作目錄的任何地方,而該文件的存放路徑則需要在所開發(fā)模塊的.inf文件中指出。一個(gè)模塊的.inf文件主要是為了定義單個(gè)項(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平臺(tái)作為實(shí)驗(yàn)檢測的Host端和UEFI端,通過串口連接兩端,同時(shí)在UEFI端配備有外圍設(shè)備u盤。將Intel 945G Express Chipset平臺(tái)啟動(dòng)到UEFI Shell的模式下,運(yùn)行處于Host端的程序,在彈出的運(yùn)行窗口中運(yùn)行處于UEFI端u盤中的UEFI Application-FDTTargetWithShell.efi,此時(shí)便可以進(jìn)行Host端和UEFI端的相互通信功能,進(jìn)行單個(gè)文件的收發(fā)功能。

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

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

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

        4結(jié)束語

        本文采用Socket數(shù)據(jù)傳輸?shù)姆绞皆O(shè)計(jì)了UEFI下的數(shù)據(jù)傳輸工具進(jìn)行UEFI端和Host端的單個(gè)文件的傳輸功能,可以方便開發(fā)人員進(jìn)行遠(yuǎn)程調(diào)試的工作,也可以方便測試人員使用該工具實(shí)現(xiàn)測試自動(dòng)化。下一步可以嘗試對數(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é)模式
        真人在线射美女视频在线观看| 国产自拍视频在线观看网站| 亚洲av无码乱码精品国产| 久久精品国产精油按摩| 熟妇人妻av无码一区二区三区| 日本一区二区啪啪视频| 久久一二三四区中文字幕| 一区二区在线观看日本视频| аⅴ天堂中文在线网| 国产精品久久久久影院| 在线人妻无码一区二区| 中文字幕一区二区三区97| 一区二区三区四区黄色av网站| 少妇无码av无码专线区大牛影院| 久久人人爽人人爽人人片av东京热| 久久精品岛国av一区二区无码 | 国产白袜脚足j棉袜在线观看| 国产亚洲精久久久久久无码| 欧美成人a视频免费专区| 亚洲av日韩精品一区二区| 亚洲中文无码av永久| 国产裸体xxxx视频在线播放 | 无码精品一区二区三区在线| 久久久精品一区aaa片| 激情偷乱人伦小说视频在线| 操B小视频国产| 亚洲国产av综合一区| 性做久久久久久免费观看| 欧妇女乱妇女乱视频| 日韩av中出在线免费播放网站 | 曝光无码有码视频专区| 精品无吗国产一区二区三区av| 东京热日本道免费高清| 亚洲国产精品美女久久| 初女破初的视频| 成人不卡国产福利电影在线看| 国产毛片精品一区二区色| 国产婷婷色一区二区三区深爱网| 人妻aⅴ中文字幕| 国产高潮精品久久AV无码| 玖玖资源网站最新网站|