摘要:首先介绍了FCT自动测试设备, 突出介绍了这种设备的快速、可靠、准确等优点。随后阐述了这种低成本的嵌入式FCT设备的市场需求和设计思路, 重点说明了这种紧凑型测试设备的硬件设计以及软件架构。这种小型低成本的嵌入式FCT设备具有跨平台、跨产品、标准化、易维护、可记录等诸多优点, 克服了低成本嵌入式设备的单一性、定制化缺点。该设计在产品自动测试领域有很高的实践价值, 在硬件和软件设计方面也有较高的理论和实践价值。
关键词:FCT设备; 嵌入式系统; 低成本; 通用性;
FCT (Functional Circuit Test) , 即功能电路测试, 是指对被测产品单元 (UUT:Unit Under Test) 提供激励及负载, 使产品工作在它的设计状态下, 测量产品在各种状态下的参数值, 最终实现验证产品功能是否良好的自动测试设备。如今的生产线上, FCT设备具有比传统的人工测试方式更快速、操作更简单、测试更准确的优点, 已经被生产企业越来越多地采用。由于FCT设备的激励点和测量点位于PCBA (带元件印制板) 的测试点以及接口上, 因此每种产品只能配备唯一的FCT设备, 一家大型生产制造企业往往需要大量的FCT设备在生产线上工作。
目前市面上常见的FCT设备大多使用National Instruments公司的PXI平台, 每套需要几十万甚至上百万的费用。因此, 对于产品的生产制造企业, 低成本的FCT设备具有重要的意义。笔者所在部门的职责是, 配合本公司生产的诸多种类的产品, 研发需要的测试设备。如能开发出一套基于嵌入式系统的FCT设备, 就能为大规模电子产品的生产节约大量成本。但同时也要考虑到, 嵌入式FCT设备虽然具有诸多优点, 但普遍存在定制化和功能较为单一的缺点。因此, 如何使基于嵌入式系统的FCT设备能做到标准化和通用, 成为亟待研究的问题。
1、系统设计
1.1、硬件设计
1.1.1、总线与模块化
硬件设计遵循总线和模块化的思路, 便于自由地增加和裁剪, 笔者最终选用了RS-485总线这一方式来实现一主多从的硬件整体结构, 当同一个功能模块需要使用多片时, 利用8位拨码开关可以将其扩展到同时使用256个。
1.1.2、硬件组成
硬件架构如图1所示。
图1 硬件架构
通用嵌入式FCT测试系统的硬件主要由以下几部分组成。
1.1.2.1、主控单元
主控单元作为整个系统的核心, 由微处理器、扩展存储器、I/O、以太网MAC、PHY等部分组成。在本系统中, 先后成功使用了基于ARM9EJ-S内核的AT91SAM9G25, 以及市面上流行的卡片电脑Raspberry-Pi作为主处理器, 并且实现了全部的测试功能。
1.1.2.2、功能测试模块
各功能测试板卡, 根据其功能划分, 称为继电器板、电压测试板、音频测试板、IO测试板、网络测试板等, 分别用于测量电压、电流、脉冲信号、I/O信号、以太网、USB等各种数字接口信号、音频信号、射频信号, 同时也可为相关电路的测试提供合适的信号源和激励, 满足多种产品测试需求。
1.1.2.3、电源系统
为被测板、控制单元、测试模块提供电源, 主控单元和测试模块采用统一电源接口。
1.1.2.4、针板、电缆、和其他附件
提供测试设备与被测板之间的连接, 电源线与总线采用统一的电缆进行连接。
1.2、软件设计
1.2.1、处理器及开发环境
ARM, 高级精简指令集机器 (Advanced RISC Machine) , 是一种精简指令集 (RISC) 处理器架构, 广泛地使用在许多嵌入式系统设计中。在ARM上使用德国Segger公司的实时操作系统emb OS以及em USB-Host、em USB-Device、emb OS/IP等软件组件, 可以搭建出一套功能强大的测试平台。
1.2.2、软件分层
本软件的分层如图2所示。
图2 软件分层
本软件分为硬件抽象层、操作系统、板驱动层、测试库和应用层共5层, 进一步细化, 得到表1。
表1 软件详细分层
1.2.3、主要软件模块描述
1.2.3. 1、硬件抽象层
本层位于系统的最底层, 作为底层硬件与操作系统间之间的抽象。本层封装了多种CPU的寄存器访问。
1.2.3. 2、操作系统
Emb OS是有优先级控制的实时操作系统, 适用于嵌入式实时应用, 尤其是ARM芯片的软件开发。它可以优化尺寸以占用最小的存储空间, 也可进行速度和功能性的优化。
1.2.3. 3、板驱动层
包括本测试系统使用到的所有外设和板卡的驱动, 微处理器与各功能测试子板的通信均基于一个自定义的RS-485总线协议。
1.2.3. 4、测试库
测试库是一套庞大的常用测试案例的集合, 规定了目前所有常用的测试项, 如电压测试、电流测试、网络接口测试等等。
1.2.3. 5、应用层
1.2.3. 5. 1、测试序列文件
各种产品有着各自不同的测试流, 包括标识号、名称、控制命令、所用到的测试函数和其他辅助信息等。填写表格文件比编写文本脚本文件更容易, 而且易于被程序解释, 格式也不会被开发者编辑出错。
1.2.3. 5. 2、测试记录
测试记录文件用于记录各被测产品的参数和测试结果, 便于追踪产品质量和问题。
2、实现通用性的方法
2.1、“搭积木式”的硬件方法
将接口、供电方式、结构尺寸完全相同的各硬件模块用RS-485总线的方式连接, 使本系统易于扩展和裁剪, 灵活的硬件搭配和简单的地址区分, 构成了一个类似于“搭积木”的硬件结构。由于被测品是多样的, 测试台的测试项目、测试方法和参数都不同。当我们使测试台应用于某一种产品的测试时, 只需选择要用的测试模块就可以了。
2.2、执行表格文件的软件方法
软件上同样实现了在具体的测试台上只做少量修改。选用表格脚本代替文本脚本对于测试台最为合适, 但由于emb OS不能直接识别Excel表格, 笔者选用了一种易于解析、易于编辑的CSV表格文件格式。CSV文件选用逗号分隔文本的格式, 后续研发人员可以先填好Excel表格, 再另存为CSV文件。
2.3、CSV文件
表2是某设备测试表格的一部分节选, 文件另存后的CSV文件就是测试台的脚本文件。解析这个文件需要循环调用一个strtok函数, 程序将每个测试项以及参数按逗号或换行符取出, 并将各参数传到一个定义的结构体。
表2 CSV文件
2.4、测试项的执行
程序逐条解析, 首先根据测试项名称TESTID, 在测试库中找到相应的测试函数, typedef void (*TFUNCTION) (P_TEST p_test) ;再在具体的测试函数中使用其他参数信息。
函数*TFUNCTION的参数P_TEST p_test结构体定义为:
结构体的其他各成员分别代表测试名称、与被测板交互的命令、所使用的硬件资源编号、参数阈值以及一个可灵活配置的辅助参数等。
利用这一系列软件、硬件的方法, 此测试系统最终实现了通用性。
3、结语
本系统在研发成功后, 实现了笔者之前的预期, 在后期很多不同的产品测试中, 使用了同类型的硬件架构和完全相同的软件, 而仅仅在测试脚本文件做了区别, 体现了通用性的特点。
新的系统使我们可以使用类似“搭积木”的方式快速构建硬件和软件, 把研发并建造一个测试台的周期, 由以前3~5个月的时间缩短到2个月左右, 并且使设备的标准化程度、可维护性大幅提高。
但是必须承认, 系统还存在一些不足之处:目前的系统只实现了近端的维护, 而不能通过网络做远程的调试和程序升级, 我们将争取在下一个阶段实现。此外, 硬件板卡、测试函数库和驱动中也只涵盖了目前产品所涉及的测试项, 但笔者相信, 随着以后产品的不断出现, 这些软硬件资源也会继续扩充下去。
参考文献
[1]刘思久, 张礼勇.自动测试系统与虚拟仪器原理、开发、应用[M].北京:电子工业出版社, 2009.
[2]SLOSS A N, SYMES D, WRIGHT C.ARM嵌入式系统开发——软件设计与优化[M].沈建华, 译.北京:北京航空航天大学出版社, 2005.
[3]LABROSSE J J.嵌入式实时操作系统μC/OS-Ⅱ[M].2版.邵贝贝, 译.北京:北京航空航天大学出版社, 2003.
[4]BARR M.C/C++嵌入式系统编程[M].于志宏, 译.北京:中国电力出版社, 2001.
[5]MCCONNELL S.代码大全[M].2版.北京:电子工业出版社, 2016.
[6]CORBET J, RUBINI A, KROAH-HARTMAN G.LINUX设备驱动程序[M].3版.魏永明, 耿岳, 钟书毅, 译.北京:中国电力出版社, 2010.
[7]FOWLER M.重构:改善既有代码的设计[M].熊节, 译.北京:人民邮电出版社, 2015.
[8]HANSON D R.C语言接口与实现:创建可重用软件的技术[M].郭旭, 译.北京:人民邮电出版社, 2016.