在MCU的应用和二次筛选测试中,MCU的程序配置与烧录工作通常依赖于外部仿真器来完成。MCU的程序加载与测试,常采用“PC-仿真器-MCU”架构。其核心步骤是将PC端编译好的二进制映象,通过仿真器作为传输媒介,烧录到芯片内部闪存。接着通过编写程序来配置MCU不同模块的功能,从而进行相应的功能测试。由于MCU包含多个外设和接口,为了提升测试的覆盖率,就需要多次进行相应的功能测试。由于MCU包含多个外设和接口,为了提升测试的覆盖范围,就需要多次进行程序配置,这使得传统的测试方法在执行过程中显得既繁琐又费时。使得MCU测试验证的效率变得低下。
为解决上述问题,我们发现可以利用自动测试系统通过JTAG对MCU进行烧写可以解决其问题,因为JTAG运用广泛,功能强大,几乎所有主流嵌入式芯片(ARM,MCU,FPGA,DSP等)都原生支持JTAG接口。
在这里,我们针对ARM Cortex-M内核的MCU进行探索介绍。核心五大组成部分可总结为核心运算单元、中断与系统计时模块、调试与跟踪子系统、总线与存储交互架构、内存保护与外设桥接模块,各部分的具体功能和核心组件如下:
1、CM3Core(核心运算单元)是Cortex-M3的核心处理模块,通过指令总线和数据总线完成指令执行、数据运算等核心操作,是整个内核的运算和控制中心,直接与其他模块进行数据和指令交互。
2、NVIC + SYSTICK(中断与系统计时模块)包含嵌套向量中断控制器(NVIC)和系统滴答定时器(SYSTICK),负责处理外部中断、NMI(不可屏蔽中断)请求,以及提供系统级的定时功能,是内核响应外部事件和实现系统调度的关键。
3、调试与跟踪子系统由调试接口(SWJ-DP/SW-DP)、AHB-AP、ETM、DWT、ITM、TPU、FPB等组件构成,通过JTAG/SWD调试接口实现内核的在线调试、断点控制,同时完成程序运行的跟踪、数据采集与输出,是嵌入式调试的核心支撑。
4、AHB互连(总线矩阵)与总线接口作为内核的总线中枢,通过AHB主机/从机接口连接I-Code指令总线、D-Code数据总线、系统总线和APB私有外设总线,实现内核与存储、外设之间的地址和数据传输,是数据交互的通道核心。
5、MPU + AHB-to-APB Bridge(内存保护与外设桥接模块)内存保护单元(MPU)负责对内存访问进行权限和地址保护,保障系统运行安全;AHB-to-APB桥接器实现AHB高速总线与APB低速外设总线的协议转换,让内核能访问各类APB外设,同时结合ROM Table完成外设地址映射管理。
另外Cortex-M采用统一寻址,这意味着所有采用Cortex-M的单片机的内核寄存器及中断控制器都是一模一样的,唯一不同的是Cortex-M开放了一段外设存储器空间用于半导体生产厂家分配自己的外设,从而设计制造出拥有各自特点和不同应用场景的单片机。因为这一点可以极大地提高此方案的兼容性,只要它采用的是Cortex-M内核,就可以利用自动测试系统通过JTAG对MCU进行程序烧录(下图为存储器映射图)。
JTAG端口与功能
JTAG调试接口包含5个引脚分别是TRST,TCK,TMS,TDI和TDO。TCK是数据时钟引脚,TDO是数据输出引脚,TDI是数据输入引脚,TMS是状态切换控制引脚。TMS切换TAP控制器的不同状态,数据口的数据代表的含义和功能就会发生改变。JTAG协议在调试仿真上的应用目前被全球电子行业人员认同并广泛使用(下图为JTAG端口协议的寄存器模块框图)。
JTAG(Joint Test Action Group)基于IEEE 1149.1标准,为MCU测试提供了统一的测试访问端口(TAP),使不同厂商的MCU能够在ATE系统中实现兼容性测试。在MCU生产测试中,JTAG作为DFT(可测试性设计) 的关键组成部分,能够:
1.提高测试覆盖率:通过边界扫描技术检测引脚间连接性,使覆盖率大大提升;
2.降低测试成本:减少对物理探针的依赖,特别适合高密度封装MCU;
3.加速测试流程:通过菊花链拓扑实现多芯片并行测试,大幅缩短测试时间。
在MCU的ATE测试环境中,JTAG主要通过以下三种方式实现测试功能:
1.边界扫描测试(BoundaryScanTest):检测MCU引脚与PCB之间的连接状态,识别短路、开路等制造缺陷;
2.内部逻辑测试(InTest):直接访问MCU内部寄存器、存储器和CPU内核,验证逻辑功能正确性;
3.内置自测试(BIST):触发MCU内部的自测试逻辑(如MemoryBIST),快速验证关键模块功能。
深测芯具备的测试方案
对MCU进行板级故障检测:面向硬件逻辑验证,控制BSC(边界扫描单元)注入激励,捕获相应,不运行用户程序。
1、完成性测试:确认板上的边界扫描芯片是否正确连接,检测JTAG(TCK/TMS/TDI/TDO/TRST/GND/VCC)硬件连接是否正常;
2、器件标识码测试:读取器件标志寄存器中的IDCODE,验证器件是否错装,器件的型号,版本号和生产厂商是否正确;
3、互连测试:主要测试电路板上的器件之间的开短路及固定故障;
4、簇测试:主要是针对MCU外部器件(不带有边界扫描功能)测试器件之间的开短路及固定故障;
5、内部存储器测试:针对存储器的读出,写入和保存信息的能力进行测试内部存储器测试:针对存储器的读出,写入和保存信息的能力进行测试;
6、程序注入测试:向Flash/SRAM写入运行程序,测试其寄存器功能。
针对MCU,我们可根据客户需求,定制特色的测试方案如:ATE通过JTAG直接烧写程序进入MCU,具体操作流程如下:
(图为调试过程)
(图为调试波形)
(基于V93000的板级调试配置效果动图)

来源:深测芯检测认证
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。