朱健民
(霍尼韋爾綜合科技(中國)有限公司,上海201203)
FCT(Functional Circuit Test),即功能電路測試,是指對被測產品單元(UUT:Unit Under Test)提供激勵及負載,使產品工作在它的設計狀態下,測量產品在各種狀態下的參數值,最終實現驗證產品功能是否良好的自動測試設備。如今的生產線上,FCT設備具有比傳統的人工測試方式更快速、操作更簡單、測試更準確的優點,已經被生產企業越來越多地采用。由于FCT設備的激勵點和測量點位于PCBA(帶元件印制板)的測試點以及接口上,因此每種產品只能配備唯一的FCT設備,一家大型生產制造企業往往需要大量的FCT設備在生產線上工作。
目前市面上常見的FCT設備大多使用National Instruments公司的PXI平臺,每套需要幾十萬甚至上百萬的費用。因此,對于產品的生產制造企業,低成本的FCT設備具有重要的意義。筆者所在部門的職責是,配合本公司生產的諸多種類的產品,研發需要的測試設備。如能開發出一套基于嵌入式系統的FCT設備,就能為大規模電子產品的生產節約大量成本。但同時也要考慮到,嵌入式FCT設備雖然具有諸多優點,但普遍存在定制化和功能較為單一的缺點。因此,如何使基于嵌入式系統的FCT設備能做到標準化和通用,成為亟待研究的問題。
1.1.1 總線與模塊化
硬件設計遵循總線和模塊化的思路,便于自由地增加和裁剪,筆者最終選用了RS-485總線這一方式來實現一主多從的硬件整體結構,當同一個功能模塊需要使用多片時,利用8位撥碼開關可以將其擴展到同時使用256個。
1.1.2 硬件組成
硬件架構如圖1所示。

圖1 硬件架構
通用嵌入式FCT測試系統的硬件主要由以下幾部分組成。
1.1.2.1 主控單元
主控單元作為整個系統的核心,由微處理器、擴展存儲器、I/O、以太網MAC、PHY等部分組成。在本系統中,先后成功使用了基于ARM9EJ-S內核的AT91SAM9G25,以及市面上流行的卡片電腦Raspberry-Pi作為主處理器,并且實現了全部的測試功能。
1.1.2.2 功能測試模塊
各功能測試板卡,根據其功能劃分,稱為繼電器板、電壓測試板、音頻測試板、IO測試板、網絡測試板等,分別用于測量電壓、電流、脈沖信號、I/O信號、以太網、USB等各種數字接口信號、音頻信號、射頻信號,同時也可為相關電路的測試提供合適的信號源和激勵,滿足多種產品測試需求。
1.1.2.3 電源系統
為被測板、控制單元、測試模塊提供電源,主控單元和測試模塊采用統一電源接口。
1.1.2.4 針板、電纜、和其他附件
提供測試設備與被測板之間的連接,電源線與總線采用統一的電纜進行連接。
1.2.1 處理器及開發環境
ARM,高級精簡指令集機器(Advanced RISC Machine),是一種精簡指令集(RISC)處理器架構,廣泛地使用在許多嵌入式系統設計中。在ARM上使用德國Segger公司的實時操作系統embOS以及emUSB-Host、emUSB-Device、embOS/IP等軟件組件,可以搭建出一套功能強大的測試平臺。
1.2.2 軟件分層
本軟件的分層如圖2所示。

圖2 軟件分層
本軟件分為硬件抽象層、操作系統、板驅動層、測試庫和應用層共5層,進一步細化,得到表1。

表1 軟件詳細分層
1.2.3 主要軟件模塊描述
1.2.3.1 硬件抽象層
本層位于系統的最底層,作為底層硬件與操作系統間之間的抽象。本層封裝了多種CPU的寄存器訪問。
1.2.3.2 操作系統
EmbOS是有優先級控制的實時操作系統,適用于嵌入式實時應用,尤其是ARM芯片的軟件開發。它可以優化尺寸以占用最小的存儲空間,也可進行速度和功能性的優化。
1.2.3.3 板驅動層
包括本測試系統使用到的所有外設和板卡的驅動,微處理器與各功能測試子板的通信均基于一個自定義的RS-485總線協議。
1.2.3.4 測試庫
測試庫是一套龐大的常用測試案例的集合,規定了目前所有常用的測試項,如電壓測試、電流測試、網絡接口測試等等。
1.2.3.5 應用層
1.2.3.5.1 測試序列文件
各種產品有著各自不同的測試流,包括標識號、名稱、控制命令、所用到的測試函數和其他輔助信息等。填寫表格文件比編寫文本腳本文件更容易,而且易于被程序解釋,格式也不會被開發者編輯出錯。
1.2.3.5.2 測試記錄
測試記錄文件用于記錄各被測產品的參數和測試結果,便于追蹤產品質量和問題。
將接口、供電方式、結構尺寸完全相同的各硬件模塊用RS-485總線的方式連接,使本系統易于擴展和裁剪,靈活的硬件搭配和簡單的地址區分,構成了一個類似于“搭積木”的硬件結構。由于被測品是多樣的,測試臺的測試項目、測試方法和參數都不同。當我們使測試臺應用于某一種產品的測試時,只需選擇要用的測試模塊就可以了。
軟件上同樣實現了在具體的測試臺上只做少量修改。選用表格腳本代替文本腳本對于測試臺最為合適,但由于embOS不能直接識別Excel表格,筆者選用了一種易于解析、易于編輯的CSV表格文件格式。CSV文件選用逗號分隔文本的格式,后續研發人員可以先填好Excel表格,再另存為CSV文件。
表2是某設備測試表格的一部分節選,文件另存后的CSV文件就是測試臺的腳本文件。解析這個文件需要循環調用一個strtok函數,程序將每個測試項以及參數按逗號或換行符取出,并將各參數傳到一個定義的結構體。

表2 CSV文件
程序逐條解析,首先根據測試項名稱TESTID,在測試庫中找到相應的測試函數,typedef void(*TFUNCTION)(P_TEST p_test);再在具體的測試函數中使用其他參數信息。
函數*TFUNCTION的參數P_TEST p_test結構體定義為:
typedef struct
{
INT8U test_name[TEST_MSG_SIZE];
INT8U send_command[COMMAND_MSG_SIZE];
INT8U cmd_true[TRUE_MSG_SIZE];
INT8U cmd_false[FALSE_MSG_SIZE];
INT32U limit_low;
INT32U limit_upp;
INT8U test_idx[IDX_MSG_SIZE];
INT16U ch_number;
INT16U parameter;
INT8U test_res;
}TEST_NAME_T,*P_TEST_NAME_T;
結構體的其他各成員分別代表測試名稱、與被測板交互的命令、所使用的硬件資源編號、參數閾值以及一個可靈活配置的輔助參數等。
利用這一系列軟件、硬件的方法,此測試系統最終實現了通用性。
本系統在研發成功后,實現了筆者之前的預期,在后期很多不同的產品測試中,使用了同類型的硬件架構和完全相同的軟件,而僅僅在測試腳本文件做了區別,體現了通用性的特點。
新的系統使我們可以使用類似“搭積木”的方式快速構建硬件和軟件,把研發并建造一個測試臺的周期,由以前3~5個月的時間縮短到2個月左右,并且使設備的標準化程度、可維護性大幅提高。
但是必須承認,系統還存在一些不足之處:目前的系統只實現了近端的維護,而不能通過網絡做遠程的調試和程序升級,我們將爭取在下一個階段實現。此外,硬件板卡、測試函數庫和驅動中也只涵蓋了目前產品所涉及的測試項,但筆者相信,隨著以后產品的不斷出現,這些軟硬件資源也會繼續擴充下去。
[1]劉思久,張禮勇.自動測試系統與虛擬儀器原理、開發、應用[M].北京:電子工業出版社,2009.
[2]SLOSS A N,SYMES D,WRIGHT C.ARM嵌入式系統開發——軟件設計與優化[M].沈建華,譯.北京:北京航空航天大學出版社,2005.
[3]LABROSSE J J.嵌入式實時操作系統μC/OS-Ⅱ[M].2版.邵貝貝,譯.北京:北京航空航天大學出版社,2003.
[4]BARR M.C/C++嵌入式系統編程[M].于志宏,譯.北京:中國電力出版社,2001.
[5]MCCONNELL S.代碼大全[M].2版.北京:電子工業出版社,2016.
[6]CORBET J,RUBINI A,KROAH-HARTMAN G.LINUX設備驅動程序[M].3版.魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2010.
[7]FOWLER M.重構:改善既有代碼的設計[M].熊節,譯.北京:人民郵電出版社,2015.
[8]HANSON D R.C語言接口與實現:創建可重用軟件的技術[M].郭旭,譯.北京:人民郵電出版社,2016.