2. STM32MP硬件架构与测试接口梳理
STM32MP1系列是ST推出的异构多核微处理器,典型型号如STM32MP157A/D、STM32MP153、STM32MP151,内部集成双核Cortex-A7(最高650MHz或800MHz)与单核Cortex-M4(209MHz),并配有3D GPU、DDR控制器、显示控制器以及丰富的外设子系统。做产测平台开发,第一步不是写测试脚本,而是把"被测对象到底有哪些物理接口、它们挂在哪个电源域、由哪个核控制、能否被自动化访问"梳理清楚。因为产测的本质是:用测试主机通过某种通道向被测板施加激励或读取响应,再与预期值比较判定合格与否。接口梳理不清,后续测试项设计、夹具设计、治具走线都会返工。
一、核心板与底板的资源划分
市面上常见的STM32MP1开发形态是"核心板+底板"两层结构。核心板(SoM)通常集成了MPU主芯片、DDR3/DDR3L内存(常见512MB或1GB)、eMMC(4GB/8GB)、电源管理芯片(STPMIC1)、晶振以及必要的去耦网络,对外只引出邮票孔或板对板连接器。底板(Carrier Board)则承载以太网PHY、USB Hub、Type-C接口、TF卡座、调试串口、按键、LED、ADC分压网络、传感器等。理解这一划分对产测至关重要:核心板上的DDR、eMMC、PMIC属于"上电即需验证"的关键资源,而底板接口则是"功能验证"的主要对象。产测工位通常只对底板接口做快速通断与功能抽检,核心板则通过启动日志和内存测试做整体确认。
二、可用于产测的物理接口清单
STM32MP157的外设资源非常丰富,从产测角度可归纳为以下几类:
- UART:UART4常用于Cortex-A7的Linux控制台(ST-Link虚拟串口),UART7可分配给Cortex-M4做日志输出。产测中UART是最重要的"观测通道",通过串口抓取启动日志、uboot版本、内核版本、外设初始化结果。
- USB:USB2.0 OTG(带PHY)可用于DFU烧录、USB串口、USB网卡;USB Host可接U盘、键盘。产测中常用OTG口做固件下载与USB通信回环测试。
- Ethernet:GMAC支持10/100/1000M,外接KSZ9031或RTL8211 PHY。产测中通过网口做吞吐测试、MAC地址读取、PHY寄存器自检。
- GPIO:分布在GPIOA~GPIOK共11组,可做按键输入、LED输出、继电器控制、夹具信号握手。
- ADC:ADC1/ADC2共16通道,12位精度,可用于电压检测、电池电压、分压电阻网络测试。
- I2C:I2C1/I2C2/I2C4/I2C5,常用于EEPROM、PMIC、传感器、IO扩展芯片。
- SPI:SPI1~SPI6,可接Flash、显示屏、ADC外设。
下表给出一个典型STM32MP157核心板+底板的接口分配示例,供产测项设计参考:
| 接口 | 典型引脚/控制器 | 产测用途 | 判定方式 |
|---|---|---|---|
| UART4 | PD6/PD8 | 启动日志、控制台 | 日志关键字匹配 |
| USB OTG | PA11/PA12 | DFU烧录、通信回环 | 枚举成功+回环数据比对 |
| Ethernet | GMAC+PHY | MAC读取、吞吐 | PHY ID、iperf结果 |
| GPIO | PA0~PK7 | 按键/LED/夹具握手 | 电平翻转检测 |
| ADC1_IN0 | PA0 | VBAT分压检测 | 电压范围判定 |
| I2C1 | PB6/PB7 | EEPROM读写 | 读写一致性 |
| SPI1 | PA5/PA6/PA7 | SPI Flash ID | JEDEC ID匹配 |
三、接口与测试通道的对应关系
产测平台需要为每个接口建立"激励—响应—判定"的闭环。以UART为例,测试主机通过USB转串口连接被测板UART4,上电后抓取uboot和kernel日志,若出现"Starting kernel..."且无panic,则判定启动正常。以Ethernet为例,测试主机通过网线连接被测板,被测板启动后运行iperf服务端,主机运行iperf客户端,若吞吐大于阈值(如800Mbps)且无丢包,则判定网口合格。以ADC为例,测试主机通过夹具给PA0施加已知电压(如1.65V),被测板读取ADC值,若在12位精度下读数在2048±50范围内,则判定ADC通道正常。
下图给出STM32MP1核心板与底板资源及产测接口的拓扑关系,帮助建立整体视图:
四、接口梳理的工程要点
在实际产测平台开发中,接口梳理需要落到具体引脚、电压域和复用配置上。例如STM32MP157的UART4默认引脚为PD6(RX)和PD8(TX),但这两个引脚同时可复用为其他功能,必须在设备树中确认pinctrl配置为uart4模式。再如ADC1_IN0对应PA0,该引脚在复位后默认为模拟输入,但若被其他外设占用则需重新规划。产测夹具设计时,要确保测试点与这些引脚一一对应,且夹具探针的接触电阻不会影响ADC精度(建议接触电阻小于1Ω)。
- 每个接口的控制器编号、引脚号、复用功能是否已确认?
- 接口的电压域(3.3V/1.8V)是否与测试主机电平匹配?
- 接口是否可被Linux用户空间直接访问(如/dev/ttySTM4、/sys/class/gpio)?
- 接口在产测夹具上是否有独立测试点,是否与功能电路隔离?
- 接口的预期响应是否有明确的量化判定阈值?
完成接口梳理后,下一步就是根据这些接口设计具体的测试项和测试流程。例如UART用于启动日志抓取,USB用于固件烧录,Ethernet用于吞吐测试,GPIO用于夹具握手,ADC用于电压检测,I2C用于EEPROM读写,SPI用于Flash ID读取。每个测试项都需要明确:测试主机发送什么、被测板返回什么、判定标准是什么、失败时如何记录。这样产测平台才能从"能测"走向"测得准、测得快、可追溯"。