實(shí)現(xiàn)電力采集終端軟件通用化設(shè)計(jì)的硬件接口層研究
引言
由于電力采集終端間的多平臺(tái)硬件存在差異,為此需設(shè)計(jì)針對(duì)性的硬件接口,此時(shí)就難以保證多個(gè)平臺(tái)采用同一套軟件。硬件接口層的抽煉及規(guī)范可以很好地梳理出公共點(diǎn)及差異點(diǎn),而基于硬件接口層設(shè)計(jì)的軟件平臺(tái)具有比較良好的可移植性。硬件接口層就好比樁子,保證了軟件平臺(tái)的穩(wěn)定。
1硬件接口層設(shè)計(jì)
1.1總體設(shè)計(jì)思路概述
首先,要設(shè)計(jì)出較為穩(wěn)定的硬件接口層,需遵循兩點(diǎn)原則:(1)全面性:(2)模塊化。全面性保證了硬件接口層能夠較好地兼容各個(gè)硬件平臺(tái)之間的移植,模塊化則使硬件接口層有更好的可閱讀性及可維護(hù)性。
為此,針對(duì)Ⅰ型集中器、Ⅱ型集中器、Ⅲ型專變進(jìn)行全面梳理,共同存在的硬件有:ADC、停抄電池、RTC、串口、ESAM、EEPROM、FLASH、USB、GPIO、遙信門節(jié)點(diǎn)、以太網(wǎng)及看門狗:差異項(xiàng)如下:I型集中器有載波、按鍵、LCD,Ⅱ型集中器有485-3,Ⅲ型專變存在控制模塊、按鍵、LCD等等。
梳理硬件接口層的模塊劃分如圖1所示。
1.2硬件接口層設(shè)計(jì)約定
為了能夠保證硬件接口層存在較為良好的版本管控功能及可閱讀性,需梳理硬件接口層必須對(duì)外提供的版本信息,包括:軟件編譯日期(內(nèi)部開(kāi)發(fā)人員版本管控)、軟件版本及發(fā)布日期(對(duì)外發(fā)布正式軟件的版本日期)、硬件版本(上層所需進(jìn)行判斷的硬件版本由硬件接口層統(tǒng)一發(fā)布)及硬件版本日期。同時(shí),為了保證硬件接口層軟件設(shè)計(jì)具有相同的編碼風(fēng)格,對(duì)硬件接口層的接口編寫做如下約定:
(1)接口頭部應(yīng)進(jìn)行注釋,列出接口的概要、輸入?yún)?shù)、輸出參數(shù)、返回值、實(shí)現(xiàn)細(xì)節(jié)等。
(2)接口頭部注釋應(yīng)放在源碼文件中的接口上部,在聲明文件中可以不注釋或簡(jiǎn)單注釋,譬如以下注釋風(fēng)格:
1.3硬件接口層具體模塊設(shè)計(jì)
針對(duì)上述模塊,設(shè)計(jì)的關(guān)鍵在于梳理各模塊所需提供的功能,要求如下:
(1)電源管理模塊需涵蓋備用電池充放電、法拉電容充放電及時(shí)鐘芯片電池電壓檢測(cè)功能。
(2)遙信、脈沖、門節(jié)點(diǎn)、遙控模塊需支持脈沖門節(jié)點(diǎn)輸入檢測(cè)以及與控制模塊通信功能。
(3)EEPROM、nandflaSh模塊需提供初始化、擦、寫、讀、檢驗(yàn)數(shù)據(jù)接口。
(4)ESAM模塊需提供與安全模塊收、發(fā)以及異步的讀寫接口。
(5)GPIO模塊需提供更為底層的直接操作硬件IO讀寫的接口,以及支持IO檢測(cè)中斷觸發(fā)的鉤子函數(shù)。
(6)按鍵模塊需提供按下、釋放的檢測(cè)接口以及實(shí)時(shí)讀取鍵值的功能。
(7)液晶模塊需支持液晶初始化、刷屏、畫點(diǎn)、設(shè)置背光、調(diào)整占空比、清理緩存及更新部分區(qū)域的操作方法。
(8)LED模塊需提供任務(wù)式的持續(xù)點(diǎn)亮LED接口,包含閃爍、占空比輸出及正常開(kāi)關(guān)功能。
(9)MISC模塊為輔助工作模塊,其需要提供主工作電源檢測(cè)、設(shè)備電源控制、設(shè)備復(fù)位控制及SIM卡加熱接口。
(10)PHY模塊需提供寄存器檢測(cè)、link燈控制、網(wǎng)線接入檢測(cè)以及MAC、IP、GateWay等參數(shù)的設(shè)置接口。
(11)時(shí)鐘芯片模塊需提供硬件時(shí)間判斷的正確性、RTC芯片初始化、設(shè)置讀取硬件時(shí)鐘、秒脈沖輸出及RTC溫度獲取接口。
(12)SPI模塊需提供初始化、更改片選、更改速率、收發(fā)以及保護(hù)總線的上鎖/解鎖接口。
(13)串口模塊需提供串口收發(fā)、驅(qū)動(dòng)打開(kāi)、參數(shù)更新以及波特率自適應(yīng)接口。
(14)USS模塊需提供設(shè)置USS工作模式、開(kāi)關(guān)USS工作電源、USS總線重啟功能以及獲取正在連接的USS設(shè)備類型。
(15)BWD模塊需提供軟狗初始化、硬狗初始化、設(shè)置看門狗超時(shí)時(shí)間以及軟硬狗的喂狗操作。
(16)同時(shí),為了保證硬件功能可靠,需提供各模塊的硬件接口測(cè)試功能。
1.4硬件接口層動(dòng)態(tài)庫(kù)封裝
為了保證硬件接口層的可共享性,將硬件接口層封裝為動(dòng)態(tài)庫(kù),提供給多個(gè)進(jìn)程調(diào)用,以降低代碼冗余,提高代碼的維護(hù)性,減少代碼空間。
2硬件接口層更改成果
發(fā)布硬件接口層以后,即保證了多個(gè)硬件平臺(tái)的軟件通用性,也能夠減少2600+行冗余代碼,提高系統(tǒng)的穩(wěn)定性。同時(shí),動(dòng)態(tài)庫(kù)的設(shè)計(jì)保證了硬件接口層由專人即可維護(hù),提高了可迭代性。并且,全面的白盒測(cè)試以及現(xiàn)場(chǎng)多臺(tái)區(qū)的掛網(wǎng)運(yùn)行測(cè)試驗(yàn)證了硬件接口層穩(wěn)定性遠(yuǎn)超未歸納硬件接口層的軟件版本,效果顯著。
3結(jié)語(yǔ)
總之,電力采集終端的產(chǎn)品迭代十分頻繁,且硬件平臺(tái)眾多,這就意味著抽象出中間層非常重要,能起到分離上位軟件和下層硬件的作用:并且將硬件接口層封裝成動(dòng)態(tài)庫(kù)進(jìn)行共享,提高了資源的利用率,減少了空間的浪費(fèi)。需要注意的是,更改后必須經(jīng)過(guò)全面的白盒、黑盒測(cè)試以及多臺(tái)區(qū)的掛網(wǎng)運(yùn)行測(cè)試,驗(yàn)證其穩(wěn)定性后才能上線。