引言
电信时代尚未达到顶峰。预计到 2016年用户数据传输速率将达到每月 6 EB。新通信技术的发展旨在确保满足日益增加的数据传输速率要求。3GPP 标准逐步发展,以确保满足这些要求。与此同时,运营商为提供良好的用户覆盖体验而引入了小型蜂窝需求,蜂窝拓扑也发生了改变。
在这种有利的情况下,半导体公司提供了广泛的产品组合,以应对不同的业务情况。基本来讲,物理层(L1)的产品包括片上系统(SoC)、基于 FPGA(现场可编程门阵列)的解决方案、多核数字信号处理器(DSP)、基带加速器、ASIC(特定应用集成电路)、网络处理器或这些元件的组合。从硬件方面来看,这些都是非常复杂的平台,具有大容量和丰富的功能集。 这是将为此类平台编写的软件分割成更小的功能部件、通常来自于不同来源和供应商的主要原因: 例如,物理层(L1)、数据链路和网络层(L2-L3)、操作系统(OS)、板级支持包(BSP)等。每个功能部件都有其自身的挑战和性能要求。 因此每个部件都需要独立进行测试,确保完全符合产品要求。
在此类混合系统中,测试通常分两个阶段进行:
- 单独测试每个软件模块
· 这个阶段确保每个组件或模块独立工作正常,由测试仪或控制台激励。
- 系统集成测试 (SIT)
· 这一阶段确保所有组件以正确的方式协同工作。
· 所有模块的输入测试空间通常过大,在本阶段无法覆盖;因此本阶段不注重覆盖范围。
测试和释放流程需要考虑这两个测试阶段。尽管L1在SIT验证过程中进行了检验,但如果验证目的是特定的物理层功能,那么本阶段不一定需要提供所需的控制力。 这是因为强加特定L1流的决策源自高层逻辑。此外,在 SIT 验证过程中,测试结论只能基于特定流程(如成功的UE附着或获得给定的吞吐量)的输出,在这种情况下,L1 的行为对测试结果有很大影响。可以说,SIT 验证阶段间接测试了L1 的功能。为了充分控制和验证 L1 独立工作时的功能,必须定义一个独特的控制层,从而应对上述规定的限制。
图 1 – 协议实体与 L1交互简图
将验证功能只集中于L1,会剥夺高层实体的功能,使其只能提供最小功能,甚至还可能将一些层一起丢弃。例如,为了保持一致统一的L1行为,需要定义一个调度逻辑,来取代MAC,无需考虑实际部署中有效的限制。 但不再需要与 PDCP和 IP协议栈进行交互,因为从L1的角度来看,用户平面数据最终被作为一系列传输块馈送。RRC逻辑被剥夺了其非接入层特权,只能管理来往于物理层的控制消息流。 在典型的小型蜂窝环境下,用来与L1进行交互的一组消息通常遵从FAPI 规范或其衍生规范。
本文的结构安排如下。第 2 节介绍了黑匣子测试环境、功能实体及其整合。第3节专注于这种环境的自动化功能。第 4 节研究了飞思卡尔案例,并说明如何应用 L1 黑匣子原理。 第 5 节概述了本文的结论。
环境设置
飞思卡尔黑匣子的目的是提供面向自动化测试环境的解决方案,取代全协议测试,使用模拟高层(L2-3)软件包,以验证飞思卡尔的物理层软件解决方案。它拥有测试解决方案的基本功能,如捕捉和上报测试结果,还显示来自软件架构不同点的大量日志,这些点包括: L1、模拟高层(L2)和测试脚本。黑匣子所用的环境包含以下各项:
·DUT– 被测设备 3G/4G 基站
·CCE– 中央控制节点
·L2STUB– 功能剥离的高层
·轮询代理– 定期查询数据库获得可执行的任务(包含要运行的测试及其输入参数)的代理
·TM– 测试终端设备,第三方 UE(用户设备)模拟器
·VSA– 矢量信号分析仪
·VSG– 矢量信号发生器
· Web服务器
测试可从开发人员计算机上的终端上运行,也可以使用Web服务器间接地运行,这个服务器提供一个运行各种套件或测试用例的接口。测试套件可直接由用户排队,并动态执行,也可以安排为定期运行。轮询代理定期查询任务队列,可按优先级对任务排序,如果有任务可执行,则开始执行包含在套件中的测试用例。 所有信息被传送到中央控制节点,中央控制节点负责运行测试脚本,并与 L2STUB 和 TM 进行通信,以发送测试中指定的命令,并收集信息和调试消息进行记录。此外,它还可以作为决策点,根据测试用例定义所用的脚本内容做出“通过/未通过/错误”等测试结果判定。
图 2. 飞思卡尔黑匣子设置
数据库用于存储任务队列、测试结果、任务历史和日志。Web 服务器使用数据库中的信息来生成报告,渲染网页。
L2STUB 的主要目的是生成话务和 FAPI 配置消息。 它拥有最小的高层逻辑,提供多种选项,用于处理上下行链路的调度请求、混合自动重传请求重新传输、逻辑信道复用,此外,还提供有关L1状态的统计数据,如循环冗余校验、误码率等。测试脚本能够控制 L2STUB 和 TM,如下图所示:
图 3. 飞思卡尔黑匣子设置
测试终端设备和 VSA/VSG 模拟具有特定功能的移动台/用户设备 (UE) 的行为。 测试终端设备可有两种操作模式:
- 完整的协议栈模式
· 在这种模式下,实施OSI 协议栈的L1-L3,TM 如同普通 UE一样运行。
· 通过TM 进行的测试必须在基站侧通过完整的协议栈来执行。
· L1 的信令通过标准的信令信道进行
- L1 独立模式(黑匣子模式)
· 在这种模式下,在TM内只实施L1.
· 通过TM 进行的测试可在基站侧通过L2 存根 + L1来执行。
· TM 只处理物理信道
· 任何 L1 信令都通过借助脚本发送的专用命令执行
VSA 和 VSG 仅仅是 L1 设备,只能解码或生成物理信道。它们用来更精细地控制 L1,通常用于一致性测试。该术语表示根据所有设备必须遵从的标准给出的某些预定义测试用例。
VSA 是一个信号分析仪,具有频谱分析功能。它拥有多个功能,如:
- 显示信号质量指标(误差矢量幅度、峰值因子、峰均功率比)
- 检测特定物理信道的存在
- 检测编码传输块的内容。
VSG 是矢量信号发生器。 它拥有多个功能,如:
- 应用无线信道模式
- 应用噪声
- 生成物理信道
- 引起误码
- 创建预定义的一致性测试配置
这两种设备都可以通过脚本进行指挥,可用于一致性测试套件。
自动化
黑匣子支持全自动化:用户只需触发测试,然后查看结果。“通过/未通过”测试结果由脚本结果决定,被聚集在一起,并呈现为一个网页。
所描述的解决方案可实现参数覆盖,支持非回归测试,以及逆向测试的受控环境。如果用户请求运行非回归测试套件,则需要提供带有测试状态报告的电子邮件。中央控制节点在数据库中查询只关于非回归过程中运行的测试的信息,并生成一个表格,其中包含:测试状态、输入参数、测试时长及Web服务器的链接,用户可在Web服务器上找到运行测试的过程中所生成的所有日志。我们可以将所有这些汇总成一个黑匣子所需要的有限状态机。
图 4. 自动化中使用的黑匣子有限状态机
设置非回归测试套件定期运行(例如在夜间),但只有当CVS(并发版本系统)中的开发人员查看了二进制文件的时间戳并执行后,成功编写了运行在DSP 和 L2STUB 上的软件时,才能触发非回归测试。
用户可将场景定义为一个脚本,并创建一个套件(可从Web服务器图形界面触发该套件),表示实际脚本前后运行的规定流程中要运行一批脚本和输入参数。
此外,发生硬件故障或不可恢复的软件错误时,或新测试用例开始时,如果要求设置不变,则还可支持从脚本重新启动设备。获得授权后,用户可重新启动基站和测试终端。
案例研究
上述解决方案已经在飞思卡尔 BSC913x 平台上实施并验证,在飞思卡尔 PowerPC 处理器 e500 上部署L2STUB,物理层(DUT)在 StarCore® SC3850 上运行。 BSC9131的框图如图 5 所示。BSC9131 还充分利用了名为 MAPLE-B2F 的基带加速器。
L2STUB 通过专有的处理器间通信机制管理 FAPI 消息流。描述既定验证情境的命令由最终用户在中央控制节点通过解析语言预定义。指定了多个不同的 API,以独立地分别控制TM、VSA 和 VSG。
图 5. BSC9131框图
(图字)StarCore® SC3850 ;DSP内核;32KB L1 I 缓存;32KB L1 D缓存;基于Power Architecture的e500 内核;32位DDR3/3L 内存控制器;MAPLE-B2F基带加速器 LTE/MTS/CDMA2K;射频接口(JESD207/ADI)和MaxPHY;
多核结构;
时钟/重置;DMA;安全引擎V4.4;USB 2.0;以太网
上述设置是完全自动化的,可充分利用这个特点;现在已经设想了对 L1 验证的主要范围进行多个扩展。例如,黑匣子设置支持持续集成,作为一个开发实践,确保已公布的代码不会在特定的开发分支导致回归。这与非回归测试不同,区别在于防止错误代码序列进入开发分支,而不是在公布后才发现。
全自动化还为建立地域上分散的测试环境创造了一个条件,这个测试环境将许多验证节点集群在一起。
飞思卡尔解决方案是一个 3GPP 协议栈,可适应 3G 解决方案(UMTS – 通用陆地移动系统)或4G 解决方案(E-UTRA – 演进的通用陆地无线接入)。黑匣子方法对于这种情况有所裨益,它分离测试L1,不受上层的影响。 可确定的潜在问题包括:
- SC3850 内核、MAPLE-B2F的硬件问题或相关的附件硬件支持。
- SC3850的L1软件代码
- MAPLE-B2F的L1微代码
结束语
本文介绍的解决方案用于在更加复杂的SoC中只测试L1软件和硬件解决方案。结果表明,与完整的协议测试解决方案相比,该解决方案能够最佳地覆盖L1参数,而且参数空间更宽。
L1黑匣子测试需要剥离 L2实现,使其只能提供最小的功能。此外,它还需要来自第三方、普遍被接受的测试设备。此类测试环境的成本比系统集成测试方法低很多,并支持更精确的问题跟踪,避免软件的独立部件发生软件Bug交互。
此外,测试环境的一个重要方面是自动化,用于连接测试方案、测试执行和测试报告,以运行多个测试套件。