基于MCF 5272的邊界掃描測試平臺開發(fā)
摘要:利用MCF5272的GPIO接口形成JTAG總線來對被測目標進行操控、用MCF5272網(wǎng)絡(luò)接口實現(xiàn)對上位機PC的通信,形成由PC生成測試向量并通過網(wǎng)絡(luò)下傳到MCF5272測試主控器,再由主控器完成測試向量的施加和響應(yīng)結(jié)果的取回與比對,實現(xiàn)了簡單電路的PCB互聯(lián)測試處理。邊界掃描測試設(shè)備市場需求少、價格高,因此開發(fā)簡單邊界掃描測試平臺可以滿足臨時的測試需求并可節(jié)約不少資金。
關(guān)鍵詞:MCF5272;測試;邊界掃描;主控器;
1 引言
當前的PCB板大量使用各種高密度的表貼元件和BGA (Ball Grid Array)封裝元件,元器件的管腳數(shù)和管腳密度極高。不僅不可能用手工完成測試,即使用昂貴的針床測試儀器等傳統(tǒng)方法也不能滿足要求。聯(lián)合測試行動組(Joint Test Action Group,JTAG)起草了邊界掃描測試(Boundary-Scan Testing,BST)規(guī)范,即IEEE標準1149. 1 1990規(guī)定[1],即JTAG標準。但是相對昂貴的邊界掃描測試設(shè)備阻礙邊界掃描技術(shù)的推廣使用,特別是非批量產(chǎn)品的研制過程,往往只是需要對器件的引腳間焊接情況作出保證就能排除絕大多數(shù)故障,因此開發(fā)一個簡易的JTAG測試工具對于臨時測試任務(wù)的完成和節(jié)約資金都是很有作用的。下面將分析一個基于MCF 5272(Motorola Coldfire 5272)的簡易邊界掃描測試平臺的設(shè)計。
2 JTAG測試系統(tǒng)構(gòu)成
邊界掃描測試過程與普通測試類似,但所有操作都是在只有5根信號的JTAG總線上完成,包括測試向量生成、施加和響應(yīng)的獲取與比對。對于臨時性的PCB板的通斷測試,向量生成比較簡單,既可以是人工生成也可以使用軟件自動生成。而測試主控器(本文使用MCF5272來實現(xiàn))則是需要將這些測試向量按照JTAG總線信號的規(guī)則施加到被測PCB板上,這需要用軟件彌補兩者語義差別。在施加測試向量的同時需要接收被測PCB板的響應(yīng)信號,并將響應(yīng)信號與標準響應(yīng)之間作比對以判斷電路板連線的狀況。系統(tǒng)構(gòu)成如圖 1。
圖 1 測試平臺的架構(gòu)
不管是手工還是用軟件來實現(xiàn)測試向量的生成,都必須獲得PCB的電路網(wǎng)表信息以及所用器件的BSDL文件描述,然后才能進行。標準的測試響應(yīng)也是如此。下面著重于如何用MCF5272設(shè)計測試主控器。
3 基于MCF 5272的測試主控器硬件設(shè)計
MCF5272 微處理器是摩托羅拉公司推出的集成度極高的ColdFire嵌入式微處理器,參照摩托羅拉推薦的樣例電路M5272 C3板[2]的原理圖,去掉不需要的外圍接口電路,保留BDM接口用于調(diào)試和下載啟動代碼、存儲操作系統(tǒng)和根文件系統(tǒng)的閃存Flash存儲模塊以及運行時的主存SDRAM模塊、以太網(wǎng)RTL8019模塊以及網(wǎng)絡(luò)接口匹配電路、用作系統(tǒng)終端的串口COM1等。
這些外設(shè)或模塊對MCF5272來說是處于不同地址空間的,因此通過配置片選輸出信號/CS0~/CS7的相關(guān)寄存器(即片選的基地址寄存器Chip Select Base Register CSBR0~7和片選的選項寄存器Chip Select Option Register CSOR0~7),可以在訪問到對應(yīng)的地址空間時產(chǎn)生出合適的片選信號。當訪問的不同的地址空間的片選分配情況如下:CS0和 CS1用于兩片閃存 Flash模塊1和2(需要分別設(shè)置位于MBAR+0x040/0x044的CSBR0和CSOR0以及位于MBAR+0x048/0x04C的CSBR1和CSOR1)、CS4用于網(wǎng)絡(luò)接口芯片 RTL8019(對應(yīng)的需要設(shè)置MBAR+0x060/0x064的CSBR4和CSOR4)、CS7用于主存SDRAM模塊1和2(對應(yīng)的需要設(shè)置MBAR+0x078/0x07C的CSBR7和CSOR7)。增加GPIO的數(shù)據(jù)緩沖驅(qū)動接口電路,可以很快的畫出自己所需的原理圖并進行布線完成硬件設(shè)計與制作。
JTAG總線信號的訪問通過MCF5272的GPIO(General purpose I/O) [3]來實現(xiàn),MCF5272有48位可編程的GPIO(General purpose I/O)引腳,分成各自16位的三組:Port A、B、C。選用Port A的PA[4:0]分別作為JTAG總線的TRST、TCK、TMS、TDI和TDO信號,并需要設(shè)置的Port A的控制寄存器PACNT(Port A Control Register,在MBAR+0x0080地址)的低10位為0,即設(shè)置Port A口的低5位PA[4:0]為通用IO引腳,而不是復(fù)用成USB接口信號。然后對該端口的方向寄存器PADDR(Port A Data Direction Register,在MBAR+0x0084地址上的高16位)設(shè)置為低位為:……11110,即只有連接TDO信號的引腳為輸入方向,而其他的JTAG信號對MCF5272來說都是輸出引腳。這是與JTAG信號交互的硬件基礎(chǔ),后面還需要用軟件實現(xiàn)JTAG測試行為與該GPIO端口行為的語義差異的填補。
4測試主控器軟件設(shè)計
4.1 系統(tǒng)軟件環(huán)境
由于MCF5272沒有存儲管理單元MMU,無法實現(xiàn)虛存管理,從而不能在上面直接運行完整的Linux操作系統(tǒng)。我們選擇沒有需存管理的uClinux(Micro- Control-Linux)作為該平臺的操作系統(tǒng),與大多數(shù)嵌入式開發(fā)過程一樣,需要一臺用于開發(fā)的運行Linux操作系統(tǒng)的PC主機,所有的軟件開發(fā)都在該主機上進行,同時作為MCF5272上運行的uClinux串口終端。
首先下載uClinux對MCF5272的Porting開發(fā)工具鏈[4],包括交叉編譯器和其他相關(guān)工具:m68k-elf-gcc、m68k-elf-as、m68k-elf-ld、m68k-elf-g++、m68k-elf-cpp、m68k-elf-objdump、m68k-elf-size、genromfs、m68k-elf-gdb、elf2flt等等。我們所寫的代碼與系統(tǒng)內(nèi)核(Linux Kernel)和文件系統(tǒng)(File-system)一起先在開發(fā)主機PC上用交叉編譯器編譯生成系統(tǒng)影像文件,這是一個二進制格式文件image.bin存放于uClinux/images 目錄下,它是由兩部分組成的:內(nèi)核(linux.bin)+文件系統(tǒng)(romfs.img),而romfs.img 是由uClinux/romfs/目錄打包生成的,它里面的文件目錄結(jié)構(gòu)就是最終用戶在板子運行后的終端下ls命令所看到的文件和目錄,我們開發(fā)的應(yīng)用軟件和驅(qū)動程序也需要放在該目錄樹中。
在生成系統(tǒng)影像之前一定要先對uClinux的內(nèi)核進行配置,即進入到uClinux目錄并且執(zhí)行make menuconfig命令,選擇需要的功能,不要忘記選擇對RTL8019的支持。
系統(tǒng)影像可以通過BDM接口寫入到板子上,也可以先下載一個輔助程序到板子上然后由這個輔助程序用TFTP協(xié)議從主機PC上下載系統(tǒng)影像來加快速度。下載完系統(tǒng)影像后可以在宿主PC上用串口終端控制或者觀測MCF5272板子的輸出響應(yīng)。
4.2 GPIO驅(qū)動程序
在運行uClinux的MCF5272上使用硬件設(shè)備并不是一定需要通過驅(qū)動程序的形式,因為沒有MMU因此對硬件地址上的讀寫也不存在特權(quán)保護,所以可以在用戶的應(yīng)用程序中對硬件端口直接進行讀寫操作。但是做為規(guī)范化編程開發(fā),還是為給端口的硬件操作編寫了相應(yīng)的驅(qū)動程序。
由于JTAG沒有規(guī)定的測試時鐘下限,且波形的生成和讀取完全在我們的控制之下,所以不需要實時的完成序列移位,從而也就不需要用到中斷功能。MCF5272平臺上uClinux的設(shè)備驅(qū)動程序要比PC平臺上Linux設(shè)備驅(qū)動程序要相對簡單[4]。需要在宿主機上用“mknod gpio2jtag c 127 0”命令創(chuàng)建對應(yīng)MCF5272文件系統(tǒng)的dev目錄建立設(shè)備節(jié)點。準備好設(shè)備文件操作表:
static struct file_operations mpg4cap_fops=
{ NULL,
NULL, /* seek */
GPIO_Read, /* read */
GPIO_Write /* write */
NULL, /* readdir*/
NULL, /* poll */
GPIO__Ioctl, /* ioctl */
NULL, /* mmap */
GPIO__Open, /* open */
NULL, /* flush */
GPIO__Release,
NULL };
并編寫相應(yīng)的函數(shù)功能,其讀寫操作對應(yīng)的單元是GPIO的Port A[4:0],需要通過PAD(Port A data Register,在MBAR+0x0086地址上的低16位)寄存器來完成,因為MCF5272采用統(tǒng)一編址方式,因此只需要定義內(nèi)存指針并將地址設(shè)置為MBAR+0x0086就可以對Port A進行讀寫引用。
設(shè)備驅(qū)動程序的代碼中還需提供初始化函數(shù)JTAG_GPIO_Init(),設(shè)備的注冊將在這個函數(shù)中通過調(diào)用register_chrdev()來完成。
最后,在uClinux源代碼的合適的地方調(diào)用JTAG_GPIO_Init(),這樣經(jīng)過交叉編譯后的系統(tǒng)影像就包括了我們的驅(qū)動程序。
4.3 JTAG總線行為的形成
由于GPIO的行為就是簡單的數(shù)據(jù)IO,與IEEE1149.1標準中關(guān)于JTAG總線行為之間的語義差距是很大的,因此需要用軟件來彌合這個差別。在MCF5272上的應(yīng)用程序?qū)⒏鶕?jù)具有16個穩(wěn)態(tài)的FSM(有限狀態(tài)機)――即符合JTAG標準的測試對象芯片上的TAP狀態(tài)轉(zhuǎn)移關(guān)系,把BS測試的幾個標準動作:測試復(fù)位、TMS序列信號的產(chǎn)生、TDI序列信號的產(chǎn)生以及TDO序列輸出信號的接收,轉(zhuǎn)換成具體的波形數(shù)據(jù),然后通過驅(qū)動程序控制GPIO形成JTAG總線信號。此時的軟件結(jié)構(gòu)功能框圖如圖 2:
圖 2 MCF5272主控器軟件架構(gòu)
MCF5272上的應(yīng)用軟件編寫成守護進程的網(wǎng)絡(luò)服務(wù)器形式,不斷監(jiān)聽指定端口上的數(shù)據(jù),將Host PC傳下來的命令與數(shù)據(jù)插入待處理隊列中,命令解釋模塊逐條讀出命令與數(shù)據(jù),根據(jù)命令類型調(diào)用執(zhí)行模塊中的對應(yīng)代碼形成輸出波形,最終由驅(qū)動程序利用GPIO的Port A低5位數(shù)據(jù)形成JTAG測試信號。
4.4 PC主機端軟件
主機端的軟件使用VC++ 6.0開發(fā),完成將測試向量和標準響應(yīng)數(shù)據(jù)轉(zhuǎn)換成同步與TCK上升沿的TMS序列和TDI/TDO命令序列的過程,并且使用以太網(wǎng)將命令數(shù)據(jù)傳送到MCF5272測試主控器上。因此PC端的應(yīng)用軟件相對于MCF5272測試主控器而言是一個網(wǎng)絡(luò)客戶端,通過socket編程形成到MCF5272制定端口上的TCP網(wǎng)絡(luò)連接,然后借助這個網(wǎng)絡(luò)連接向?qū)Ψ桨l(fā)出命令控制信息已完成測試操作,測試響應(yīng)向量也可利用網(wǎng)絡(luò)取回。
5結(jié)言
本文作者創(chuàng)新點:基于MCF 5272的邊界掃描測試平臺是一種簡易廉價的測試系統(tǒng),雖然難以與昂貴專業(yè)的測試設(shè)備相比,但是相對于其他簡易系統(tǒng),上述開發(fā)研究工作的創(chuàng)新與價值在于:相對于使用PC并口形式的主控器,它具有價格和體積上的優(yōu)勢;相對于使用PC機上PCI插卡的實現(xiàn)方式,由于使用網(wǎng)絡(luò)接口與上位機通訊,因此可以適應(yīng)不同系統(tǒng)結(jié)構(gòu)的上位機同時又用足夠的處理能力。使用GPIO加上軟件控制的方式,因此靈活性很高,也非常易于增強性能,以極低的價格完成臨時的PCB板測試任務(wù)。
參考文獻
[1] Test technology technical committee of the IEEE computer society. IEEE Standard Test Access Port and Boundary Scan Architecture. IEEE Std 1149. 12 1990
[2] Freescale Semiconductor, M5272C3 User Manual, [EB/OL] /upload/eWebUpload/2006082310202882.pdf, 2006
[3] Freescale Semiconductor, MCF5272 ColdFire® Integrated Microprocessor User’s Manual, [EB/OL]/upload/eWebUpload/20060823102035292.pdf, 2006
[4] uCLinux Embedded Linux/Microcontroller Project, [EB/OL] http://www. uclinux.org/ports/ coldfire/source. html, 2006.
[5] 錢晨; 徐榮華; 王欽若;基于Linux操作系統(tǒng)的設(shè)備驅(qū)動程序開發(fā),微計算機信息,2004年 09期,pp:53-55.
評論