基于MCF 5272的边界扫描测试平台开发
扫描二维码
随时随地手机看文章
摘要:利用MCF 5272的GPIO接口形成JTAG总线来对被测目标进行操控、用MCF 5272网络接口实现对上位机PC的通信,形成由PC生成测试向量并通过网络下传到MCF 5272测试主控器,再由主控器完成测试向量的施加和响应结果的取回与比对,实现了简单电路的PCB互联测试处理。边界扫描测试设备市场需求少、价格高,因此开发简单边界扫描测试平台可以满足临时的测试需求并可节约不少资金。
关键词:MCF 5272;测试;边界扫描;主控器;
1 引言
当前的PCB板大量使用各种高密度的表贴元件和BGA (Ball Grid Array)封装元件,元器件的管脚数和管脚密度极高。不仅不可能用手工完成测试,即使用昂贵的针床测试仪器等传统方法也不能满足要求。联合测试行动组(Joint Test Action Group,JTAG)起草了边界扫描测试(Boundary-Scan Testing,BST)规范,即IEEE标准1149. 1 1990规定[1],即JTAG标准。但是相对昂贵的边界扫描测试设备阻碍边界扫描技术的推广使用,特别是非批量产品的研制过程,往往只是需要对器件的引脚间焊接情况作出保证就能排除绝大多数故障,因此开发一个简易的JTAG测试工具对于临时测试任务的完成和节约资金都是很有作用的。下面将分析一个基于MCF 5272(Motorola Coldfire 5272)的简易边界扫描测试平台的设计。
2 JTAG测试系统构成
边界扫描测试过程与普通测试类似,但所有操作都是在只有5根信号的JTAG总线上完成,包括测试向量生成、施加和响应的获取与比对。对于临时性的PCB板的通断测试,向量生成比较简单,既可以是人工生成也可以使用软件自动生成。而测试主控器(本文使用MCF5272来实现)则是需要将这些测试向量按照JTAG总线信号的规则施加到被测PCB板上,这需要用软件弥补两者语义差别。在施加测试向量的同时需要接收被测PCB板的响应信号,并将响应信号与标准响应之间作比对以判断电路板连线的状况。系统构成如图 1。
图 1 测试平台的架构
不管是手工还是用软件来实现测试向量的生成,都必须获得PCB的电路网表信息以及所用器件的BSDL文件描述,然后才能进行。标准的测试响应也是如此。下面着重于如何用MCF5272设计测试主控器。
3 基于MCF 5272的测试主控器硬件设计
MCF5272 微处理器是摩托罗拉公司推出的集成度极高的ColdFire嵌入式微处理器,参照摩托罗拉推荐的样例电路M5272 C3板[2]的原理图,去掉不需要的外围接口电路,保留BDM接口用于调试和下载启动代码、存储操作系统和根文件系统的闪存Flash存储模块以及运行时的主存SDRAM模块、以太网RTL8019模块以及网络接口匹配电路、用作系统终端的串口COM1等。
这些外设或模块对MCF5272来说是处于不同地址空间的,因此通过配置片选输出信号/CS0~/CS7的相关寄存器(即片选的基地址寄存器Chip Select Base Register CSBR0~7和片选的选项寄存器Chip Select Option Register CSOR0~7),可以在访问到对应的地址空间时产生出合适的片选信号。当访问的不同的地址空间的片选分配情况如下:CS0和 CS1用于两片闪存 Flash模块1和2(需要分别设置位于MBAR+0x040/0x044的CSBR0和CSOR0以及位于MBAR+0x048/0x04C的CSBR1和CSOR1)、CS4用于网络接口芯片 RTL8019(对应的需要设置MBAR+0x060/0x064的CSBR4和CSOR4)、CS7用于主存SDRAM模块1和2(对应的需要设置MBAR+0x078/0x07C的CSBR7和CSOR7)。增加GPIO的数据缓冲驱动接口电路,可以很快的画出自己所需的原理图并进行布线完成硬件设计与制作。
JTAG总线信号的访问通过MCF5272的GPIO(General purpose I/O) [3]来实现,MCF5272有48位可编程的GPIO(General purpose I/O)引脚,分成各自16位的三组:Port A、B、C。选用Port A的PA[4:0]分别作为JTAG总线的TRST、TCK、TMS、TDI和TDO信号,并需要设置的Port A的控制寄存器PACNT(Port A Control Register,在MBAR+0x0080地址)的低10位为0,即设置Port A口的低5位PA[4:0]为通用IO引脚,而不是复用成USB接口信号。然后对该端口的方向寄存器PADDR(Port A Data Direction Register,在MBAR+0x0084地址上的高16位)设置为低位为:……11110,即只有连接TDO信号的引脚为输入方向,而其他的JTAG信号对MCF5272来说都是输出引脚。这是与JTAG信号交互的硬件基础,后面还需要用软件实现JTAG测试行为与该GPIO端口行为的语义差异的填补。
4测试主控器软件设计
4.1 系统软件环境
由于MCF5272没有存储管理单元MMU,无法实现虚存管理,从而不能在上面直接运行完整的Linux操作系统。我们选择没有需存管理的uClinux(Micro- Control-Linux)作为该平台的操作系统,与大多数嵌入式开发过程一样,需要一台用于开发的运行Linux操作系统的PC主机,所有的软件开发都在该主机上进行,同时作为MCF5272上运行的uClinux串口终端。
首先下载uClinux对MCF5272的Porting开发工具链[4],包括交叉编译器和其他相关工具: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等等。我们所写的代码与系统内核(Linux Kernel)和文件系统(File-system)一起先在开发主机PC上用交叉编译器编译生成系统影像文件,这是一个二进制格式文件image.bin存放于uClinux/images 目录下,它是由两部分组成的:内核(linux.bin)+文件系统(romfs.img),而romfs.img 是由uClinux/romfs/目录打包生成的,它里面的文件目录结构就是最终用户在板子运行后的终端下ls命令所看到的文件和目录,我们开发的应用软件和驱动程序也需要放在该目录树中。
在生成系统影像之前一定要先对uClinux的内核进行配置,即进入到uClinux目录并且执行make menuconfig命令,选择需要的功能,不要忘记选择对RTL8019的支持。
系统影像可以通过BDM接口写入到板子上,也可以先下载一个辅助程序到板子上然后由这个辅助程序用TFTP协议从主机PC上下载系统影像来加快速度。下载完系统影像后可以在宿主PC上用串口终端控制或者观测MCF5272板子的输出响应。
4.2 GPIO驱动程序
在运行uClinux的MCF5272上使用硬件设备并不是一定需要通过驱动程序的形式,因为没有MMU因此对硬件地址上的读写也不存在特权保护,所以可以在用户的应用程序中对硬件端口直接进行读写操作。但是做为规范化编程开发,还是为给端口的硬件操作编写了相应的驱动程序。
由于JTAG没有规定的测试时钟下限,且波形的生成和读取完全在我们的控制之下,所以不需要实时的完成序列移位,从而也就不需要用到中断功能。MCF5272平台上uClinux的设备驱动程序要比PC平台上Linux设备驱动程序要相对简单[4]。需要在宿主机上用“mknod gpio2jtag c 127 0”命令创建对应MCF5272文件系统的dev目录建立设备节点。准备好设备文件操作表:
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 };
并编写相应的函数功能,其读写操作对应的单元是GPIO的Port A[4:0],需要通过PAD(Port A data Register,在MBAR+0x0086地址上的低16位)寄存器来完成,因为MCF5272采用统一编址方式,因此只需要定义内存指针并将地址设置为MBAR+0x0086就可以对Port A进行读写引用。
设备驱动程序的代码中还需提供初始化函数JTAG_GPIO_Init(),设备的注册将在这个函数中通过调用register_chrdev()来完成。
最后,在uClinux源代码的合适的地方调用JTAG_GPIO_Init(),这样经过交叉编译后的系统影像就包括了我们的驱动程序。
4.3 JTAG总线行为的形成
由于GPIO的行为就是简单的数据IO,与IEEE1149.1标准中关于JTAG总线行为之间的语义差距是很大的,因此需要用软件来弥合这个差别。在MCF5272上的应用程序将根据具有16个稳态的FSM(有限状态机)——即符合JTAG标准的测试对象芯片上的TAP状态转移关系,把BS测试的几个标准动作:测试复位、TMS序列信号的产生、TDI序列信号的产生以及TDO序列输出信号的接收,转换成具体的波形数据,然后通过驱动程序控制GPIO形成JTAG总线信号。此时的软件结构功能框图如图 2:
图 2 MCF5272主控器软件架构
MCF5272上的应用软件编写成守护进程的网络服务器形式,不断监听指定端口上的数据,将Host PC传下来的命令与数据插入待处理队列中,命令解释模块逐条读出命令与数据,根据命令类型调用执行模块中的对应代码形成输出波形,最终由驱动程序利用GPIO的Port A低5位数据形成JTAG测试信号。
4.4 PC主机端软件
主机端的软件使用VC++ 6.0开发,完成将测试向量和标准响应数据转换成同步与TCK上升沿的TMS序列和TDI/TDO命令序列的过程,并且使用以太网将命令数据传送到MCF5272测试主控器上。因此PC端的应用软件相对于MCF5272测试主控器而言是一个网络客户端,通过socket编程形成到MCF5272制定端口上的TCP网络连接,然后借助这个网络连接向对方发出命令控制信息已完成测试操作,测试响应向量也可利用网络取回。
5结言
本文作者创新点:基于MCF 5272的边界扫描测试平台是一种简易廉价的测试系统,虽然难以与昂贵专业的测试设备相比,但是相对于其他简易系统,上述开发研究工作的创新与价值在于:相对于使用PC并口形式的主控器,它具有价格和体积上的优势;相对于使用PC机上PCI插卡的实现方式,由于使用网络接口与上位机通讯,因此可以适应不同系统结构的上位机同时又用足够的处理能力。使用GPIO加上软件控制的方式,因此灵活性很高,也非常易于增强性能,以极低的价格完成临时的PCB板测试任务。
参考文献
[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操作系统的设备驱动程序开发,微计算机信息,2004年 09期,pp:53-55.