牛津文
摘 要:近年來,國產(chǎn)化芯片技術(shù)日趨成熟,應(yīng)用領(lǐng)域不斷擴大,尤其是變電站自動化領(lǐng)域,越來越多的全國產(chǎn)化自動化設(shè)備投入使用。但與之前采用進口成熟芯片的硬件平臺驅(qū)動及接口不同,國產(chǎn)化硬件平臺在硬件架構(gòu)、硬件驅(qū)動、接口實現(xiàn)方面存在較大差異,因此移植現(xiàn)有軟件平臺至國產(chǎn)化硬件平臺以及開發(fā)國產(chǎn)硬件平臺的驅(qū)動適配接口將是關(guān)鍵點及難點。本文提供一種自適應(yīng)網(wǎng)關(guān)機及服務(wù)器的硬件驅(qū)動方法,有效解決電力監(jiān)控系統(tǒng)自動化設(shè)備無法自動匹配不同硬件平臺驅(qū)動的問題。
關(guān)鍵詞:B+樹;驅(qū)動建模;動態(tài)匹配;接口固化
中圖分類號:TP316 文獻標識碼:A 文章編號:1003-5168(2021)06-0029-04
A Hardware Drive Method of Adaptive Gateway Device and Server
NIU Jinwen
(Xuji Group Co., Ltd.,Xuchang Henan 461000)
Abstract: In recent years, localized chip technology has become increasingly mature, and the application field has been expanding, especially in the field of substation automation, more and more national production automation equipment has been put into use. However, unlike the previous hardware platform drivers and interfaces that used imported mature chips, the localized hardware platform has big differences in hardware architecture, hardware drivers, and interface implementation, therefore, transplanting the existing software platform to the domestic hardware platform and developing the driver adaptation interface of the domestic hardware platform will be the key and difficult points. This paper provided an adaptive gateway machine and server hardware drive method, which effectively solved the problem that the automation equipment of the power monitoring system could not automatically match the drive of different hardware platforms.
Keywords: B + tree;driver modeling;dynamic matching;interface solidification
網(wǎng)關(guān)機[1]及服務(wù)器等變電站自動化系統(tǒng)及設(shè)備是確保電網(wǎng)安全穩(wěn)定運行的關(guān)鍵設(shè)備,目前,變電站監(jiān)控系統(tǒng)[2]的核心芯片大量依靠進口,操作系統(tǒng)仍大量采用國外系統(tǒng),存在巨大安全隱患。2019年以來,國產(chǎn)化系統(tǒng)及設(shè)備逐步得到推廣,有助于解決變電站電力監(jiān)控系統(tǒng)的安全隱患。另外,在國產(chǎn)芯片及器件普遍使用的情形下,其與之前采用的成熟進口芯片的驅(qū)動及接口必然存在較大差異,因此移植現(xiàn)有軟件平臺至國產(chǎn)化硬件平臺,開發(fā)國產(chǎn)硬件平臺的驅(qū)動適配接口將是關(guān)鍵點及難點。
本文提出一種自適應(yīng)網(wǎng)關(guān)機及服務(wù)器[3]的硬件驅(qū)動方法,該方法包括建立通用驅(qū)動接口動態(tài)庫,包含所有硬件的驅(qū)動接口程序;對所有硬件的驅(qū)動接口進行模型創(chuàng)建;對加載的硬件驅(qū)動接口模型與硬件的驅(qū)動接口程序進行動態(tài)匹配;成功匹配后,對動態(tài)匹配成功的接口程序進行固化,實現(xiàn)硬件驅(qū)動接口固化[4]。設(shè)備包括通用驅(qū)動接口動態(tài)庫系統(tǒng),包含所有硬件的驅(qū)動接口程序;硬件驅(qū)動接口模型系統(tǒng)包括所有硬件的驅(qū)動接口模型;動態(tài)匹配[5]系統(tǒng)用于將加載的硬件驅(qū)動接口模型與硬件的驅(qū)動接口程序進行動態(tài)匹配;接口固化系統(tǒng)用于對動態(tài)匹配成功的接口程序進行固化,實現(xiàn)硬件驅(qū)動接口固化。本發(fā)明有效解決電力監(jiān)控系統(tǒng)自動化設(shè)備無法自動匹配不同硬件平臺驅(qū)動的問題。
1 通用驅(qū)動接口機制
自適應(yīng)硬件驅(qū)動的方法引入驅(qū)動建模、動態(tài)匹配、接口固化等機制,有效地解決電力監(jiān)控系統(tǒng)自動化設(shè)備無法自動匹配不同硬件平臺驅(qū)動的問題,硬件驅(qū)動原理架構(gòu)如圖1所示。
為實現(xiàn)網(wǎng)關(guān)機、服務(wù)器等自動化設(shè)備自適應(yīng)不同硬件平臺驅(qū)動,首先需要統(tǒng)一、固化應(yīng)用程序調(diào)用的硬件驅(qū)動接口[6]函數(shù),因此要引入通用驅(qū)動接口動態(tài)庫,由應(yīng)用程序進行動態(tài)鏈接[7]、靜態(tài)加載[8],實現(xiàn)對下動態(tài)加載、對上統(tǒng)一接口的分層設(shè)計[9]理念。
針對不同硬件平臺的不同驅(qū)動接口預(yù)定義在通用硬件驅(qū)動接口程序中,并按照其功能類型、返回類型、參數(shù)類型等參數(shù)以B+樹[10]的形式存儲在內(nèi)存中,提高硬件驅(qū)動接口動態(tài)匹配檢索效率。
然后,對于不同硬件平臺的驅(qū)動接口,根據(jù)自定義模型規(guī)則,以XML文件[11]的形式創(chuàng)建不同硬件驅(qū)動模型,模型內(nèi)容包括接口功能、返回類型及返回值、參數(shù)個數(shù)、參數(shù)類型等驅(qū)動接口的詳細描述,實現(xiàn)不同型號硬件驅(qū)動的模型創(chuàng)建。
硬件驅(qū)動模型創(chuàng)建后,由通用硬件驅(qū)動接口程序讀取、解析硬件驅(qū)動模型文件,根據(jù)模型參數(shù),如接口功能、返回類型、參數(shù)類型等參數(shù)檢索預(yù)定義驅(qū)動接口列表進行精確動態(tài)匹配。
匹配成功后,通用硬件驅(qū)動接口動態(tài)加載硬件驅(qū)動平臺動態(tài)庫至內(nèi)存,根據(jù)驅(qū)動模型中的接口名稱,獲取相應(yīng)接口地址賦值給動態(tài)匹配的預(yù)定義接口函數(shù),達到接口固化的目的,最終實現(xiàn)不同硬件驅(qū)動平臺的自適應(yīng)接口調(diào)用。
2 自適應(yīng)硬件驅(qū)動流程
為解決不同硬件平臺提供的硬件驅(qū)動存在較大差異,并且更換硬件需要修改調(diào)用接口的應(yīng)用程序以適應(yīng)新硬件驅(qū)動的問題,引入通用驅(qū)動接口機制,為調(diào)用的應(yīng)用程序提供固定的硬件驅(qū)動接口,實現(xiàn)通用、統(tǒng)一自適應(yīng)硬件驅(qū)動接口功能,使得每一步實現(xiàn)都具備通用性、可移植性,具體流程如圖2所示。
從圖2可以看出,自適應(yīng)硬件驅(qū)動方法的整體過程從通用驅(qū)動接口初始化預(yù)定義硬件驅(qū)動接口列表開始,即根據(jù)預(yù)定義接口功能、接口類型、參數(shù)類型等信息創(chuàng)建B+樹結(jié)構(gòu)。接下來分別將硬件驅(qū)動模型與硬件驅(qū)動動態(tài)庫加載至內(nèi)存,然后根據(jù)硬件驅(qū)動接口模型中的配置檢索B+樹進行動態(tài)匹配,此匹配方式為精確匹配,即所有驅(qū)動接口的所有參數(shù)匹配成功才判定為匹配成功。最后通過硬件驅(qū)動接口名稱與硬件驅(qū)動動態(tài)庫獲取實際接口指針地址賦值給精確匹配的預(yù)定義硬件驅(qū)動接口,完成跨平臺的自適應(yīng)硬件驅(qū)動。
3 自適應(yīng)硬件驅(qū)動實現(xiàn)方案
通用驅(qū)動接口初始化預(yù)定義硬件驅(qū)動接口結(jié)束后,要對硬件驅(qū)動接口進行模型創(chuàng)建,然后對預(yù)定義接口進行B+樹的創(chuàng)建,最后進行硬件驅(qū)動接口的動態(tài)匹配與固化,實現(xiàn)自適應(yīng)的硬件平臺驅(qū)動接口實例化。
3.1 驅(qū)動建模機制
為解決通用驅(qū)動接口無法任意加載不同平臺的硬件驅(qū)動問題,本文采用動態(tài)加載方式,并引入硬件驅(qū)動建模機制,通過配置規(guī)則對不同的硬件驅(qū)動功能接口進行模型創(chuàng)建,實現(xiàn)不同類型硬件驅(qū)動的統(tǒng)一建模。模型配置文件如圖3所示。
如圖3所示,硬件驅(qū)動接口模型由XML文件配置生成,主要描述了硬件驅(qū)動接口功能類型、返回類型、參數(shù)類型等信息,并且可以同時配置多個硬件型號的驅(qū)動接口模型,但是通用驅(qū)動接口僅加載DRIVER_MODEL標簽中enable等于1的硬件型號模型。其中,DRIVER_MODEL標簽分別描述不同硬件平臺型號的使能參數(shù)enable,即此硬件平臺是否啟用;驅(qū)動名稱name為硬件驅(qū)動動態(tài)庫的全路徑名稱;硬件描述desc為硬件平臺型號信息。
FUNC標簽描述了驅(qū)動接口的功能類型tpye,即該接口函數(shù)實現(xiàn)的功能類型(自定義);接口名稱name為函數(shù)定義名稱;參數(shù)個數(shù)paranum為接口函數(shù)傳入?yún)?shù)的數(shù)量;描述desc為驅(qū)動接口的功能描述。
RETURN標簽描述了驅(qū)動接口返回值類型type,其子標簽VALUE采用鍵-值對的方式描述了返回值的取值范圍,其中key等于1表示成功,等于2表示失敗,分別對應(yīng)的val值為0和-1。
PARA標簽描述了驅(qū)動接口的參數(shù)類型,其子標簽VALUE同樣采用鍵-值對的方式描述了參數(shù)的取值范圍,key的取值根據(jù)不同的參數(shù)功能進行定義,比如,取值1表示點亮LED,取值2表示熄滅LED,以此對應(yīng)val的取值內(nèi)容。
3.2 硬件驅(qū)動接口B+樹結(jié)構(gòu)
驅(qū)動接口的動態(tài)匹配主要根據(jù)模型參數(shù)對B+樹結(jié)構(gòu)的接口列表進行檢索,B+樹具備查詢次數(shù)少、性能穩(wěn)定、便于范圍查詢等優(yōu)勢,因此很大程度上提升了動態(tài)匹配效率。驅(qū)動接口B+樹示意圖如圖4所示。
如圖4所示,通用驅(qū)動接口程序初始化時,首先根據(jù)預(yù)定義的所有硬件驅(qū)動接口和功能類型創(chuàng)建m階B+樹,m取值5,具體流程如下:B+樹為空樹,創(chuàng)建一個節(jié)點將記錄1插入其中,此時這個葉子結(jié)點也是根結(jié)點,插入操作結(jié)束;根據(jù)key值找到葉子結(jié)點,向這個葉子結(jié)點插入記錄,插入后,若當前結(jié)點key的個數(shù)不大于m-1,則插入結(jié)束,否則,要對節(jié)點進行分裂;由于此處按照類型序號依次插入,因此節(jié)點插入5時,要將葉子結(jié)點分裂成左右兩個葉子結(jié)點,左葉子結(jié)點包含前m/2個(2個)記錄,右結(jié)點包含剩下的記錄,將第m/2+1個(3個)記錄的key進位到父結(jié)點中,進位到父結(jié)點的key左孩子指針指向左結(jié)點,右孩子指針指向右結(jié)點。將當前結(jié)點的指針指向父結(jié)點;依據(jù)此規(guī)則,B+樹自下而上進行依次分裂,直至結(jié)束。
硬件驅(qū)動接口的功能類型越豐富,檢索及動態(tài)匹配的效率優(yōu)勢越能夠體現(xiàn)出來。
3.3 硬件動態(tài)匹配機制
硬件驅(qū)動模型解析后,根據(jù)模型參數(shù),檢索硬件驅(qū)動接口列表進行動態(tài)匹配,其間采用精準匹配模式,即列表中的最小葉子節(jié)點函數(shù)必須與模型中的所有參數(shù)完全一致才算匹配成功,否則匹配失敗。動態(tài)匹配的主要過程是根據(jù)模型參數(shù)對B+樹結(jié)構(gòu)的接口列表進行檢索,B+樹具備查詢次數(shù)少、性能穩(wěn)定、便于范圍查詢等優(yōu)勢,因此很大程度上提升了動態(tài)匹配效率。動態(tài)匹配流程如圖5所示。
如圖5所示,動態(tài)匹配過程分為兩部分,第一部分根據(jù)解析硬件驅(qū)動模型獲取驅(qū)動接口類型范圍,然后遍歷預(yù)定義驅(qū)動接口B+樹檢索出對應(yīng)節(jié)點信息;第二部分則根據(jù)解析硬件驅(qū)動模型獲取的驅(qū)動接口返回值類型、參數(shù)個數(shù)、參數(shù)類型,依次匹配節(jié)點信息,并最終定位到需要調(diào)用的接口函數(shù)進行接口固化。
由于硬件設(shè)備所承擔(dān)的業(yè)務(wù)不盡相同,硬件驅(qū)動接口的類型也有所差異,接口類型越豐富的硬件驅(qū)動,越能體現(xiàn)出動態(tài)匹配的效率優(yōu)勢。
4 結(jié)論
本文提出一種自適應(yīng)硬件驅(qū)動的方法,包括驅(qū)動建模、動態(tài)匹配、接口固化。驅(qū)動建模用于對不同硬件平臺提供的驅(qū)動程序進行模型創(chuàng)建,主要包括驅(qū)動名稱、接口功能、參數(shù)類型等信息,其間通過XML文件的形式對驅(qū)動程序及其提供的接口功能進行統(tǒng)一建模,以便通用接口程序進行正確解析并加載至內(nèi)存;動態(tài)匹配用于通用接口程序解析模型后,根據(jù)接口功能、參數(shù)個數(shù)、參數(shù)類型等參數(shù),依次與預(yù)定義的硬件驅(qū)動接口列表進行動態(tài)匹配,最終選擇匹配成功的接口函數(shù)作為調(diào)用的硬件驅(qū)動接口;接口固化用于根據(jù)硬件驅(qū)動程序與硬件驅(qū)動模型獲取接口地址,并將其固化至對應(yīng)匹配成功的預(yù)定義驅(qū)動接口,完成不同廠家自適應(yīng)硬件驅(qū)動接口的選擇,最終在不擴展通用驅(qū)動接口程序的基礎(chǔ)上,僅通過配置硬件驅(qū)動模型及更換硬件平臺提供的驅(qū)動程序完成應(yīng)用程序在不同硬件之間的無縫切換。
參考文獻:
[1]李世群,顧穎,郭飛,等.智能變電站數(shù)據(jù)通信網(wǎng)關(guān)機遙測處理優(yōu)化研究[J].電工電氣,2020(11):72-74.
[2]高翔,周健,周紅,等.IEC 61850標準在南橋變電站監(jiān)控系統(tǒng)中應(yīng)用[J].電力系統(tǒng)自動化,2006(16):105-107.
[3]余勁,黃皓,諸渝,等.DBox:宏內(nèi)核下各種設(shè)備驅(qū)動程序的高性能安全盒[J].計算機學(xué)報,2020(4):724-739.
[4]曹慧,程宏斌,汪洋,等.FPGA多重配置在LED顯示控制系統(tǒng)中的應(yīng)用[J].液晶與顯示,2020(5):51-58.
[5]水為漣,王成亮,楊慶勝,等.基于動態(tài)均衡原理的并聯(lián)VSG參數(shù)匹配方法[J].電力電子技術(shù),2020(8):28-30.
[6]郝強.基于硬件仿真器的PCIe接口驗證方法的研究和實現(xiàn)[J].電子技術(shù)應(yīng)用,2020(8):83-85.
[7]苗維誠,朱文婕.基于動態(tài)鏈接庫的實驗室管理系統(tǒng)設(shè)計與實現(xiàn)[J].太原學(xué)院學(xué)報(自然科學(xué)版),2020(1):87-90.
[8]李璜華,李凌,趙宇,等.一種包解析器硬件配置描述語言及其編譯結(jié)構(gòu)[J].軟件學(xué)報,2020(8):7-30.
[9]李天成,陳天星,楊創(chuàng),等.基于分層技術(shù)的居家智能系統(tǒng)軟件設(shè)計[J].電腦編程技巧與維護,2020(3):125-127.
[10]張小陸.基于B+樹的電力大數(shù)據(jù)混合索引設(shè)計分析[J].電子設(shè)計工程,2020(22):13-16.
[11]王森林,喻杰奎,趙建宜,等.基于XML技術(shù)的光網(wǎng)絡(luò)設(shè)備通信的設(shè)計與實現(xiàn)[J].信息技術(shù),2020(4):96-99.