任華鋒 高傳發(fā) 孫振華
(許繼電氣股份有限公司,河南 許昌 461000)
近年來(lái),隨著微電子技術(shù),計(jì)算機(jī)技術(shù)的飛速發(fā)展,微機(jī)繼電保護(hù)裝置在硬件和軟件兩大方面仍在不斷的創(chuàng)新和發(fā)展。在硬件方面,從8位單CPU結(jié)構(gòu)的微機(jī)保護(hù)到16位/32位多CPU結(jié)構(gòu)的應(yīng)用,只用了不到5年時(shí)間。目前,已經(jīng)有繼電保護(hù)生產(chǎn)廠家在智能電網(wǎng)的集中式保護(hù)中成功應(yīng)用了多核CPU的繼電保護(hù)裝置。由于智能電網(wǎng)的發(fā)展迅速,要求繼電保護(hù)裝置能夠快速響應(yīng)智能電網(wǎng)發(fā)展過(guò)程中產(chǎn)生的各種技術(shù)需求。為了縮短響應(yīng)時(shí)間,現(xiàn)有的繼電保護(hù)裝置研發(fā)大都采用軟硬件平臺(tái)并行,協(xié)同設(shè)計(jì)的方式,在設(shè)計(jì)開(kāi)發(fā)過(guò)程中,兩者互相支持,互相提供開(kāi)發(fā)的平臺(tái)。為了保證軟件運(yùn)行的最優(yōu)性能和可靠性,必須對(duì)CPU硬件平臺(tái)的各種組成模塊如:嵌入式處理器,外圍接口模塊(AD采樣/開(kāi)入開(kāi)出回路等),輸入輸出回路(人機(jī)接口),通信中間件等進(jìn)行詳盡的獨(dú)立測(cè)試和綜合測(cè)試。
本文針對(duì)繼電保護(hù)裝置研發(fā)中軟件平臺(tái)和硬件平臺(tái)的設(shè)計(jì)特點(diǎn),提出了一種在和軟件設(shè)計(jì)公用的嵌入式操作系統(tǒng)和集成開(kāi)發(fā)環(huán)境下,對(duì)正在研制過(guò)程中的繼保裝置 CPU硬件進(jìn)行模塊自檢測(cè)試和系統(tǒng)綜合測(cè)試的實(shí)現(xiàn)方法。
從硬件方面來(lái)說(shuō),平臺(tái)化的開(kāi)發(fā)方式要求CPU的硬件電路盡量做到“模塊化”和“拼圖化”。針對(duì)采用同一款處理器的 CPU硬件平臺(tái)模塊電路和外圍擴(kuò)展電路的典型性和通用性,我們可以使用軟件平臺(tái)的集成開(kāi)發(fā)環(huán)境來(lái)編制一系列工作在嵌入式操作系統(tǒng)上面向CPU硬件的測(cè)試程序。通過(guò)硬件測(cè)試程序?qū)?CPU硬件平臺(tái)下多個(gè)功能模塊進(jìn)行檢測(cè)來(lái)發(fā)現(xiàn)和驗(yàn)證硬件的設(shè)計(jì)缺陷。 該程序的主要設(shè)計(jì)思路是利用嵌入式操作系統(tǒng)的實(shí)時(shí)性和多任務(wù)方式,將硬件平臺(tái)下的各模塊的測(cè)試代碼封裝到不同的任務(wù)中,通過(guò)串口或以太網(wǎng)接收測(cè)試指令并輸出測(cè)試信息到定制的測(cè)試界面上。本文是在筆者從事許繼集團(tuán)基于 PowerPC 系列處理器的繼電保護(hù)裝置硬件研發(fā)工作中使用該測(cè)試方法的介紹和總結(jié)。
圖1 PowerPc系列處理器產(chǎn)品的CPU硬件結(jié)構(gòu)示意圖
考慮到繼電保護(hù)裝置的特殊性和測(cè)控實(shí)時(shí)性的要求,在CPU硬件測(cè)試過(guò)程中,用嵌入式實(shí)時(shí)操作系統(tǒng)上運(yùn)行的測(cè)試代碼對(duì)硬件進(jìn)行仿真測(cè)試,來(lái)驗(yàn)證硬件的設(shè)計(jì)參數(shù)和性能是否能滿足繼電保護(hù)裝置應(yīng)用軟件的運(yùn)行。本文的硬件測(cè)試程序設(shè)計(jì)方案是在嵌入式實(shí)時(shí)系統(tǒng)NucleusPLUS和PowerPC系列處理器基礎(chǔ)上開(kāi)展的。
NucleusPLUS是為實(shí)時(shí)嵌入式應(yīng)用而設(shè)計(jì)的一個(gè)搶先式多任務(wù)操作系統(tǒng)內(nèi)核,其95%的代碼是用ANSIC寫成的,并且使用了軟件組件的方法, 采用了先進(jìn)的微內(nèi)核(Micro-kernel)技術(shù),因而在優(yōu)先級(jí)安排,任務(wù)調(diào)度,任務(wù)切換等各個(gè)方面都有相當(dāng)大的優(yōu)勢(shì),在繼電保護(hù)裝置的應(yīng)用軟件上得到到了廣泛的使用。在NucleusPLUS上可以非常方便的用代碼實(shí)現(xiàn)CPU硬件各模塊的自檢和集成測(cè)試。我們把 CPU硬件所屬的各個(gè)模塊測(cè)試代碼根據(jù)硬件測(cè)試的需要封裝到NucleusPLUS不同的任務(wù)中,利用測(cè)試界面程序通過(guò)串口或網(wǎng)口發(fā)送指令,由測(cè)試代碼執(zhí)行對(duì)相關(guān)硬件模塊的測(cè)試,并將測(cè)試結(jié)果返回到測(cè)試界面上。
圖2 NucleusPLUS下CPU硬件測(cè)試程序結(jié)構(gòu)流程圖
1)存儲(chǔ)空間FLASH的測(cè)試
對(duì)于繼電保護(hù)裝置來(lái)說(shuō),用作存儲(chǔ)的 Flash中主要存放操作系統(tǒng)和用戶應(yīng)用程序的鏡像文件、引導(dǎo)配置文件、整定值、各類動(dòng)作報(bào)告等,具有掉電數(shù)據(jù)不丟失的特性。Flash讀寫數(shù)據(jù)的正確性和效率,直接影響繼電保護(hù)裝置的可靠性和穩(wěn)定性。
Flash的測(cè)試方法有兩種,一種是非破壞性的基本測(cè)試,主要是checksum測(cè)試;另一種是破壞性的擴(kuò)展測(cè)試,包括讀寫測(cè)試和地址/數(shù)據(jù)總線測(cè)試。在NucleusPLUS下,利用已經(jīng)寫好的Flash驅(qū)動(dòng)封裝一個(gè)Flash測(cè)試程序,先擦除Flash一段指定容量空間,寫入指定容量大小的數(shù)據(jù),再讀取指定容量大小的數(shù)據(jù)進(jìn)行比較。重復(fù)多次完成后,將測(cè)試結(jié)果輸出到測(cè)試界面上。
2)DDR內(nèi)存模塊的測(cè)試
內(nèi)存的作用是存放繼電保護(hù)裝置運(yùn)行時(shí)的程序和重要數(shù)據(jù)。DDR內(nèi)存的硬件電路設(shè)計(jì)正確與否,將決定CPU是否能正常工作。由于內(nèi)存和處理器之間的連線過(guò)多,在整個(gè)CPU硬件設(shè)計(jì)中也是出錯(cuò)率比較高的地方。因此,內(nèi)存測(cè)試代碼編寫要考慮的盡量全面,代碼主要完成以下3類測(cè)試:
(1)數(shù)據(jù)總線測(cè)試: 將 0001循環(huán)左移并寫入內(nèi)存,然后讀出并比較測(cè)試。
(2)內(nèi)存區(qū)測(cè)試: 對(duì)內(nèi)存所有存儲(chǔ)單元進(jìn)行讀寫測(cè)試(讀寫5555H和AAAAH測(cè)試)。
(3)地址總線測(cè)試:對(duì)內(nèi)存所有存儲(chǔ)單元進(jìn)行地址累加測(cè)試。從 RAM 的基地址起,在每一個(gè)存儲(chǔ)單元(按照總線寬度)中寫入不同的值(遞增值),地址遞增,直至所有的存儲(chǔ)單元都保存不同的內(nèi)容,然后讀出并進(jìn)行檢驗(yàn)。
內(nèi)存測(cè)試也要進(jìn)行多次重復(fù)測(cè)試,測(cè)試時(shí)間跟CPU使用內(nèi)存的大小有關(guān),在驗(yàn)證硬件設(shè)計(jì)時(shí)可隨機(jī)選擇內(nèi)存頁(yè)面進(jìn)行測(cè)試。
3)處理器模塊的測(cè)試
處理器測(cè)試主要是對(duì)處理器進(jìn)行定時(shí)器測(cè)試、寄存器測(cè)試、中斷測(cè)試和片內(nèi)設(shè)備的測(cè)試。PowerPC處理器是一款運(yùn)算處理功能強(qiáng)大且片內(nèi)設(shè)備集成度高的 RISC架構(gòu)的處理器,其常規(guī)測(cè)試過(guò)程非常繁瑣。由于使用的 NucleusPLUS嵌入式操作系統(tǒng)對(duì)PowerPC系列處理器兼容性非常好,特別是FreeScale公司提供集成開(kāi)發(fā)環(huán)境codeworrior,使處理器的硬件測(cè)試基本都是在可視化的環(huán)境下進(jìn)行。處理器部分的測(cè)試代碼只需對(duì)集成在片內(nèi)的串口,網(wǎng)口,IIC,GPIO等使用到的設(shè)備進(jìn)行測(cè)試。
(1)串口RS232/485由于傳輸速率慢,距離短,抗干擾性差,在智能電網(wǎng)繼電保護(hù)裝置中已經(jīng)不再作為主要的數(shù)據(jù)通信接口使用,僅作為裝置的調(diào)試口或打印機(jī)接口保留。其測(cè)試相對(duì)簡(jiǎn)單,在NucleusPLUS創(chuàng)建串口中斷服務(wù)子程序,驗(yàn)證串口收發(fā)數(shù)據(jù)的正確。
(2)以太網(wǎng)技術(shù)在智能電網(wǎng)的繼電保護(hù)中充當(dāng)了一個(gè)重要的角色,推動(dòng)了繼電保護(hù)裝置的保護(hù)網(wǎng)絡(luò)化發(fā)展。以太網(wǎng)數(shù)據(jù)通信已經(jīng)成為繼電保護(hù)裝置內(nèi)部和外部的主要通信連接方式。為了驗(yàn)證處理器內(nèi)部網(wǎng)口的硬件設(shè)計(jì),我們的網(wǎng)口測(cè)試代碼主要在鏈路層通過(guò)中斷方式完成的。在測(cè)試程序中調(diào)用網(wǎng)口驅(qū)動(dòng)中的原始發(fā)送函數(shù),在定時(shí)器中定時(shí)發(fā)送固定幀長(zhǎng)和報(bào)文數(shù)的原始鏈路報(bào)文,在接收方統(tǒng)計(jì)報(bào)文的吞吐量,延遲包,丟幀率。輸出到測(cè)試界面。
圖3 NucleusPLUS以太網(wǎng)測(cè)試中斷服務(wù)程序流程圖
(3)IIC總線是一種高效、實(shí)用、可靠的雙向二線制串行數(shù)據(jù)傳輸結(jié)構(gòu)總線,該總線使各電路分割成各種功能的模塊,并進(jìn)行軟件化設(shè)計(jì),各個(gè)功能模塊電路內(nèi)都有集成一個(gè) IIC總線接口電路,因此都可以掛接在總線上,很好的解決了眾多功能IC與CPU之間的輸入輸出接口,使其連接方式變得十分簡(jiǎn)潔。IIC硬件測(cè)試只需按標(biāo)準(zhǔn)的IIC協(xié)議去操讀取或?qū)懭胂鄳?yīng) IIC器件的數(shù)據(jù),如 CPU的溫度和RTC時(shí)鐘。
(4)GPIO模塊是處理器常見(jiàn)的功能模塊,主要通過(guò)寄存器設(shè)置其 I/O管腳的功能定義,通過(guò)寄存器賦值來(lái)決定輸出的開(kāi)關(guān)狀態(tài)。在繼電保護(hù)裝置中主要用于驅(qū)動(dòng)運(yùn)行燈和告警燈,可監(jiān)視其他硬件模塊比較重要的信號(hào)并產(chǎn)生中斷。測(cè)試比較簡(jiǎn)單,可與其相關(guān)聯(lián)的硬件模塊配合測(cè)試。
4)大容量SD卡的測(cè)試
由于繼電保護(hù)裝置集成的功能越來(lái)越多,數(shù)據(jù)流量越來(lái)越大,大容量的數(shù)據(jù)存儲(chǔ)器件應(yīng)用成為必然趨勢(shì)。SD卡有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性,目前在繼電保護(hù)裝置中主要用來(lái)保存電網(wǎng)故障時(shí)的波形數(shù)據(jù),供繼保人員分析故障原因。其測(cè)試與FLASH的測(cè)試類似,對(duì)指定空間的存儲(chǔ)塊進(jìn)行讀寫操作,比較讀寫數(shù)據(jù)是否一致,驗(yàn)證SD卡接口硬件電路的設(shè)計(jì)。
5)FPGA擴(kuò)展部分硬件功能模塊的測(cè)試簡(jiǎn)介
FPGA作為可編程邏輯器件,通過(guò)編程的方式(如HDL)將通用芯片配置成用戶需要的硬件數(shù)字電路,F(xiàn)PGA和軟件系統(tǒng)具有相似的結(jié)構(gòu)和開(kāi)發(fā)方式,HDL與軟件都是人腦思維邏輯的產(chǎn)物,具有相似的語(yǔ)法和失效機(jī)理。介于本文關(guān)注的內(nèi)容,對(duì)FPGA內(nèi)部測(cè)試就不詳細(xì)介紹,主要針對(duì)FPGA配置完成后,由PowerPC處理器通過(guò)測(cè)試代碼對(duì)模擬量采集模塊,開(kāi)入開(kāi)出模塊等擴(kuò)展部分硬件的測(cè)試進(jìn)行闡述。
PowerPC與FPGA采用 將FPGA作為PowerPC局部總線(Local Bus)上的外部存儲(chǔ),掛接在某個(gè)BANK上,用地址總線,數(shù)據(jù)總線和控制總線的方式通信。實(shí)際的測(cè)試過(guò)程中,我們只需根據(jù) FPGA程序設(shè)計(jì)者提供的FPGA地址序列,使用不同的地址訪問(wèn)和操作多個(gè)不同功能的擴(kuò)展模塊,對(duì)PowerPC來(lái)說(shuō)完全感覺(jué)不到 FPGA的存在。通過(guò)FPGA的硬件拓展,可以將更多的硬件模塊通過(guò)總線方式接入處理器,只需要考慮總線的負(fù)載能力。
編制這些通過(guò)FPGA的拓展的硬件模塊測(cè)試代碼時(shí),可以原樣利用芯片廠商提供的驅(qū)動(dòng)代碼庫(kù),在操作芯片寄存器時(shí),對(duì)寄存器的地址進(jìn)行物理偏移即可。由NucleusPLUS封裝好的測(cè)試任務(wù)通過(guò)總線對(duì)相應(yīng)的擴(kuò)展芯片如以太網(wǎng)PHY、LCD控制器、AD模塊,繼電器動(dòng)作回路等進(jìn)行測(cè)試并獲得測(cè)試結(jié)果。
圖4 FPGA測(cè)試數(shù)據(jù)流程圖
測(cè)試界面是整個(gè) CPU硬件測(cè)試環(huán)境中的關(guān)鍵環(huán)節(jié),它通過(guò)串口或網(wǎng)絡(luò)和目標(biāo) CPU進(jìn)行信息交互,控制目標(biāo)CPU上的硬件測(cè)試程序向各個(gè)硬件模塊發(fā)送測(cè)試指令,接收CPU上送的各種硬件模塊測(cè)試信息,根據(jù)測(cè)試信息完成硬件模塊的測(cè)試結(jié)果判斷并輸出測(cè)試報(bào)告。
測(cè)試界面主要運(yùn)行在 Windows操作系統(tǒng)的 PC上,可以利用Windows上的豐富的可視化資源編輯工具如delphi,VC++等開(kāi)發(fā)環(huán)境進(jìn)行代碼實(shí)現(xiàn)。 在測(cè)試界面設(shè)計(jì)中,主要實(shí)現(xiàn)如下一些功能:測(cè)試系統(tǒng)的主界面、硬件測(cè)試模塊的選擇、硬件測(cè)試模塊的測(cè)試指令下傳、測(cè)試界面及測(cè)試結(jié)果的顯示等。
測(cè)試界面采用面向?qū)ο蟮脑O(shè)計(jì)思想,按照分布式的設(shè)計(jì)特點(diǎn),將界面分為主控界面,通信處理模塊,硬件模塊測(cè)試界面,測(cè)試信息解析模塊。
1)主控界面主要是完成測(cè)試參數(shù)配置及各個(gè)硬件模塊測(cè)試界面的調(diào)用。利用 VC開(kāi)發(fā)環(huán)境中的控件和菜單關(guān)聯(lián)功能,可以非??旖莸脑O(shè)計(jì)出界面友好,使用方便的主控界面。
2)通信處理模塊主要在后臺(tái)運(yùn)行,初始化 PC機(jī)的串口或網(wǎng)口后和目標(biāo) CPU按照設(shè)置好的通信參數(shù)進(jìn)行通信,提供相應(yīng)的數(shù)據(jù)收發(fā)函數(shù),供硬件模塊測(cè)試界面使用。
3)硬件測(cè)試模塊界面根據(jù)硬件模塊的區(qū)別設(shè)計(jì)成不同的分界面,通過(guò)向目標(biāo)CPU發(fā)送指令,啟動(dòng)CPU板NucleusPLUS嵌入式操作系統(tǒng)上的相應(yīng)模塊測(cè)試任務(wù),測(cè)試完成后將測(cè)試信息發(fā)送到測(cè)試界面。
4)測(cè)試信息解析模塊根據(jù)目標(biāo) CPU上送的測(cè)試信息進(jìn)行分類和解析處理后,顯示在主控界面上。由于 CPU上的硬件測(cè)試程序上送的都是反饋測(cè)試結(jié)果的字符串信息,我們利用 VC自帶的豐富的字符串處理函數(shù)對(duì)測(cè)試信息進(jìn)行解析和轉(zhuǎn)換,翻譯成直觀的中文信息和測(cè)試結(jié)果,同時(shí)還可以用第三方控件將測(cè)試信息保存成 Word文檔供測(cè)試人員瀏覽和編寫測(cè)試文檔。
繼電保護(hù)裝置硬件開(kāi)發(fā)過(guò)程中,確保硬件產(chǎn)品的開(kāi)發(fā)質(zhì)量是保證繼電保護(hù)裝置運(yùn)行可靠性和動(dòng)作正確性的關(guān)鍵。而在以往的研發(fā)中,硬件設(shè)計(jì)可能只考慮到了單個(gè)硬件模塊的工作特性,實(shí)際上將各種硬件模塊集成在一起之后仍有可能不正常工作。主要原因是,模塊相互調(diào)用時(shí)接口會(huì)引入許多新問(wèn)題。例如,數(shù)據(jù)經(jīng)過(guò)接口可能丟失;一個(gè)模塊對(duì)另一模塊可能造成不應(yīng)有的影響;模塊之間的硬件連接不正確也可能造成通信不暢;誤差不斷積累達(dá)到不可接受的程度等等。所以需要通過(guò)綜合測(cè)試來(lái)發(fā)現(xiàn)各種錯(cuò)誤。本文介紹的基于嵌入式操作系統(tǒng)的硬件測(cè)試程序和友好的測(cè)試界面,通過(guò)測(cè)試軟件一段一段地?cái)U(kuò)展,測(cè)試的范圍一步一步地增大,來(lái)逐步查找定位硬件設(shè)計(jì)缺陷的增量式集成測(cè)試方法,為繼電保護(hù)裝置硬件綜合測(cè)試提供了很好的解決方案。
[1]王齊.Linux PowerPC詳解:核心篇[M].北京:機(jī)械工業(yè)出版社,2007.
[2]劉淼.嵌入式系統(tǒng)接口設(shè)計(jì)與 Linux驅(qū)動(dòng)程序開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2006:328-349.
[3]徐宇柘.Nucleus實(shí)時(shí)操作系統(tǒng)在繼電保護(hù)系統(tǒng)中的實(shí)時(shí)性研究[J].電腦知識(shí)與技術(shù),2007(13).
[4]黃艷敏.淺談電子產(chǎn)品的硬件測(cè)試技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2010(2).