一种UART&SPI接口验证工具的设计与实现
摘要:随着WLAN(无线局域网)的普及,各种接口的WLAN网卡层出不穷,像UART,SPI,USB等。为了验证接口的功能、性能和兼容性是否符合需求,在此提出了一种支持UARTSPI接口的验证工具。传统的接口验证采用手动验证的方法,即手动修改UART接口的波特率或SPI接口的大小端等来达到遍历所有用例的目的,传统方法存在效率低,容易漏测测试用例等缺陷。而该工具通过命令通道完成上位机和下位机的协商,保持接口参数同步;数据通道验证在该接口参数下的功能和性能,实现了接口的功能和性能验证的自动化,大大提高了测试效率,保证测试用例的覆盖率。该工具适用于多种平台下的UART和SPI接口验证。
0 引言
随着WLAN的广泛应用,越来越多的芯片厂商投入到WLAN芯片开发上。因此各种接口的WLAN芯片成为了各大厂商发展的主要方向。目前主流的接口有:USB,SDIO,UART,SPI等。
本公司设计了一款支持多接口、多协议的无线局域网802.11n(1T1R)的SoC芯片。该SoC芯片集成了SDIO,SPI,UART等接口。为了验证各个接口是否能够达到设计需求,需要对各个接口进行功能、性能和兼容性的测试。所谓接口验证,是指以接口为测试对象,详细测试接口功能和性能。本文中是指UART接口和SPI接口。对于UART接口,需要对接口的波特率、数据长度、奇偶校验位、停止位、流控、异常错误等进行验证。对于SPI接口,需要对接口的大小端、工作模式、工作速率等进行验证。
1 接口单元验证的必要性
1.1 接口单元验证简介
如图1所示,是接口单元验证的示意图。测试板有两个UART接口和一个SPI接口。下位机完成固件部分,也就是直接操作硬件;而上位机完成测试用例管理和接口驱动两部分。
![](../img/eep/emb/emb-51890st5hxfcnvzi.jpg)
1.2 对接口进行单元验证的原因
(1)验证接口的功能是否实现。保证设备能够正确枚举,各种配置下数据收发通路畅通。
(2)对各个接口的性能有一个准确的把握。有了接口性能数据后,可以帮助在系统测试阶段定位问题。在系统测试阶段,性能瓶颈一方面来自于接口,一方面来自于WiFi。在接口验证阶段获得这个数据后可以帮助分析和定位问题。
(3)在平台兼容性测试中,由于平台的兼容性主要与接口有关,与WiFi无关,如果把兼容性放到系统测试阶段去做,无形中增加了定位问题的难度。
1.3 传统接口验证的方法及缺陷
传统的验证方法是将上位机与下位机分离开来。首先上位机修改参数,之后下位机修改参数,编译固件、运行,上位机与下位机进行通信。上位机与下位机之间没有协商,直接进行通信。以UART接口的功能验证为例来说明一下接口验证方法的缺陷。
UART的功能验证主要是各种配置下(波特率、数据长度、奇偶校验位、停止位的组合)是否能够准确无误地传输数据。如果按照这种测试方法的话,测试效率很低。另外一个方面,由于主观因素的影响,采用手动的方法容易漏测测试用例。
综上,传统接口单元验证方法的缺陷为:测试效率低;容易漏测测试用例。
2 接口验证工具的设计
2.1 硬件架构
2.1.1 PC下的硬件结构
如图2所示,描述的是PC环境下的UART接口的验证硬件结构图。
![](../img/eep/emb/emb-518910uai3q4mm1y.jpg)
其中PCI通过JTAG接口控制测试板,完成固件的下载。PC2与测试板通过UART接口连接,UART0接口是命令接口,主要传输PC2对测试板的命令及测试板的响应;UART1是数据接口,主要传输PC2和测试板之间的数据。
2.1.2 嵌入式平台下的硬件结构
如图3所示,描述的是嵌入式平台下UART接口和SPI接口的验证硬件结构图。
![](../img/eep/emb/emb-51892qj1ooq0e0nf.jpg)
其中PCI通过JTAG接口控制测试板,完成固件的下载。PC2通过串口控制嵌入式平台。在验证UART接口时,连接测试板与嵌入式平台的两个UART口,UART0接口是命令接口,主要传输嵌入式平台对测试板的命令及测试板的响应;UART1是数据接口,主要传输嵌入式平台与测试板之间的数据。
在验证SPI接口时,连接测试板与嵌入式平台的UART0口及SPI接口。同样地,UART0是命令接口,主要传输嵌入式平台与测试板的命令传输;SPI是数据接口,传输嵌入式平台与测试板之间的数据。
2.2 软件结构
验证软件结构见图4,其中DUT设备为验证的对象。
![](../img/eep/emb/emb-51893qmpokud5tgq.jpg)
(1)用例管理层
主要生成各种测试用例。对于UART接口来说,包括UART波特率、数据长度、停止位、奇偶校验位等属性组合的设置及高级设置项等。
对于SPI接口来说,主要包括SPI的各种模式、各种时钟、大小端及上下行数据的测试用例的生成。
(2)配置接口层
依据配置程序与驱动程序命令/事件接口定义完成各种命令的发送,并做相应的事件处理。
(3)驱动接口层
依据配置程序与驱动程序命令/事件接口定义对配置程序发送的命令进行解析,同时对硬件的状态信息进行响应。
(4)硬件接口层
主要负责驱动与固
- WinCE串口驱动分析(04-11)
- 基于单片机通用引脚的软件UART设计(10-16)
- 基于DSP Builder的FIR滤波器的设计与实现(08-04)
- 利用低成本的MCU的UART驱动智能卡(05-04)
- TMS320C54X DSP实现UART的技术(03-02)
- DSP芯片基于SCl6C750B的RS232接口设计(03-18)