ARM Cortex-M3微处理器测试方法研究与实现
摘要:作为32 位RISC 微处理器主流芯片,ARM 芯片得到长足发展和广泛应用。因而,ARM 芯片的测试需求更加强劲的同时,测试工作量在加大,测试复杂度也在增加。本文给出了基于ARM Cortex-M3 的微处理器测试方法,该方法也可用于类似结构的微处理器测试。
0 引言
随着半导体技术的发展,集成电路制程工艺从深亚微米发展到纳米级,晶体管集成度的大幅提高使得芯片复杂度增加,单个芯片的功能越来越强。二十世纪90 年代ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。采用ARM 技术知识产权( IP 核)的微处理器,即ARM 微处理器,已遍及工业控制。消费类电子产品。通信系统。网络系统。无线系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32 位RISC 微处理器七成以上的市场份额.ARM 芯片的广泛应用和发展也给测试带来了挑战,集成电路测试一般采用实际速度下的功能测试,但半导体技术的发展使得测试开发工程资源按几何规律增长,自动测试设备(ATE)的性能赶不上日益增加的器件I/O 速度的发展,同时也越来难以满足ARM 等微处理器测试所用的时序信号高分辨率要求,因而必须不断提高自动测试设备的性能,导致测试成本不断攀升。此外,因为ARM 芯片的复杂度越来越高,为对其进行功能测试,人工编写测试向量的工作量是极其巨大的,实际上一个ARM 芯片测试向量的手工编写工作量可能达到数十人年甚至更多。本文针对ARM Cortex 内核的工作原理,提出了一种高效的测试向量产生方法,并在BC3192 测试系统上实现了对ARMCortex-M3 内核微处理器的测试。
1 微处理器测试方法
集成电路测试主要包括功能测试和直流参数的测试,微处理器的测试也包括功能和直流参数测试两项内容。微处理器包含丰富的指令集,而且微处理器种类繁多,不同微处理器之间很难有统一的测试规范。为了使测试具有通用性,我们有必要对微处理器的测试建立一个统一的模型,如图1 所示。芯片测试系统为被测微处理器提供电源和时钟,并能够模拟微处理器的仿真通信接口来控制微处理器工作,同时配合仿真时序施加激励向量,从而达到测试目的。
按微处理器仿真通信接口大致分两类,一类是具有仿真接口(如JTAG)的微处理器,一类是没有仿真接口的微处理器,对于配备类似JTAG 接口的微处理器,测试仪通过仿真一个JTAG 接口对被测芯片进行功能或参数测试。没有配备仿真调试接口的芯片,可以根据芯片的外部接口和引导方式选择测试模型。
1.1 跟踪调试模式
大多数的微处理器都提供了跟踪调试接口,例如最常用的JTAG 接口,Cortex-M3 内核除了支持JTAG 调试外,还提供了专门的指令追踪单元(ITM).JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1 兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM.DSP.FPGA 器件等。标准的JTAG 接口是4 线:
TMS.TCK.TDI.TDO,分别为模式选择。时钟。数据输入和数据输出线.JTAG 最初是用来对芯片进行测试的,因此使用JTAG 接口测试微处理器具有很多优点。
用JTAG 接口对微处理器进行仿真测试,是通过测试系统用测试矢量模拟一个JTAG 接口实现对微处理器的仿真控制,其核心是状态机的模拟,图2 所示为测试系统使用的JTAG TAP 控制器的状态转换图。
通过测试仪来模拟状态转换就可以实现JTAG 通信控制。
JTAG 在物理层和数据链路层具有统一的规范,但针对不同的芯片仿真测试协议可能略有差异。为了使测试模型具有通用性,我们对测试模型的JTAG 接口做了一个抽象层,如图3 所示。图中抽象层将类型多样的控制函数转化成芯片能识别的数据流来控制被测芯片的工作状态。
1.2 引导模式/FLASH 编程模式
针对没有配备仿真调试接口的微处理器,可以利用引导功能实现对微处理器的测试。因没有配备仿真调试功能,不能实现仿真测试。因此针对这一类的微处理器测试中,需要在芯片中加载测试代码。大多数的微处理器芯片都具有上电引导功能,可以利用引导功能将测试代码加载到微处理器中,进而实现功能和直流参数测试。而对于内部配备FLASH 的微处理器可以先将测试代码下载到片内FLASH 中,以实现对微处理器的功能和参数测试。
为了实现对微处理器的测试控制,通常,测试系统利用微处理器的片上通信接口与片上测试程序通信,互相配合完成功能和参数测试。
2 ARM Cortex-M3 的测试
2.1 ARM Cortex-M3 内核简介
ARM Cortex-M 系列微处理器主要用于低成本和低功耗领域,如智能
- 采用Cortex-M3单片机设计的WiFi物联网小车(10-27)
- 你不得不知的Cortex-M3和M4微控制器使用秘诀(07-01)
- Cortex M3的SRAM单元故障软件的自检测研究(06-29)
- 低成本ARM 32位MCU,开发人员面临的两种选择(04-28)
- 自己动手用Cortex-M3与ADXL345做个重力感应遥控器(02-22)
- ARM Cortex M3/M4微控制器最大效率设计三秘诀(04-12)