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