智能电表嵌入式应用的模拟存储器测试板系统及测试方法
技术领域
本发明涉及智能电表嵌入式软件测试技术领域,具体涉及一种智能电表嵌入式应用的模拟存储器测试板系统及测试方法。
背景技术
智能电表已不仅仅作为一个简单的电能计量器具,还是一个多功能的数据采集终端,得到了广泛应用。目前智能电表是以MCU为控制单元,外围电路由存储芯片和计量芯片等组成,有较好的线性度和稳定度,具有功耗小,电压和频率响应速度快,测量精度高等诸多优点。电能表的大多功能都是通过嵌入式软件来完成的,作为电能计量的主要工具,对计量准确性、稳定性、功能性有着重要的影响。本发明提出一种针对智能电表嵌入式软件的测试方法。本发明中的智能电表嵌入式软件测试方法与以往的电能表测试软件不同,不只关注电能表嵌入式软件的调试工作,而是采用黑盒法,按智能电表功能模块化的测试,在智能电表嵌入式软件可靠性测试中是一种新的、可控的、针对应用的测试方法。本发明涉及的智能电表测试平台包括下位机模拟板系统,上位机测试软件以及数据交互的通信协议。下位机中存储器测试板主要由存储器监控板ARM与存储器模拟板FPGA组成。存储器测试板需满足以下基本要求:能够模拟当前主流厂家的存储芯片和计量芯片等核心芯片的功能,包括接口电平及时序、存储功能、存储容量、写入及读出的延时、掉电状态等;可通过上位机选择芯片类型、初始化芯片状态及存储内容(格式化)、读取任何一个单元或者全部影像、修改任何一个单元等;可设置失效模式,模拟现实中存储器失效过程,或者模拟存储器不稳定状态。
发明内容
针对智能电表软件测试的特点,本发明提出了一种ARM和FPGA相结合的模拟存储器测试板系统和一种对存储芯片单元和计量芯片单元测试的方法,该测试板主要包括ARM芯片,FPGA芯片及SRAM芯片;测试过程中首先要对被测的智能电表嵌入式系统进行配置,不同的电表厂家、同厂家不同的电表型号都有不同的测试需求,就需要有不同的测试策略来配合,完成配置后,按照设计好的测试用例进行测试;与模拟板采用多线程通信,主线程中建立消息管理队列实现线程管理,与数据库相连接实现数据的存取,和数据显示中的分页。
本发明的目的是采用下述技术方案实现的:
本发明提供一种智能电表嵌入式应用的模拟存储器测试板系统,其改进之处在于,所述模拟存储器测试板系统包括检测计算机(1)、模拟存储器测试板(2)、被测单元(3)、接口A(4)和接口C(6);所述检测计算机(1)通过接口A(4)与模拟存储器测试板(2)进行信息交互;所述被测单元(3)通过接口C(6)与模拟存储器测试板(2)进行信息交互;
所述智能电表的MCU控制所述模拟存储器测试板系统。
进一步地,所述模拟存储器测试板(2)包括通过接口B(5)进行信息交互的存储器模拟监控板ARM(7)和存储器模拟板FPGA(8);
所述存储器模拟板FPGA(8)包括i2c总线内核(9)、仲裁选择模块(10)、三总线模块(11)、SRAM存储控制模块(12)、SRAM芯片(13)、修改存储器内容模块(14)、读取操作指令模块(15)和寄存器模块(16);所述仲裁选择模块(10)与i2c总线内核(9)进行信息交互;所述I2C总线内核(9)、三总线模块(11)、SRAM存储控制模块(12)和SRAM芯片(13)依次进行信息交互;所述修改存储器内容模块(14)分别与SRAM存储控制模块(12)和寄存器模块(16)连接;所述读取操作指令模块(15)分别与SRAM芯片(13)和寄存器模块(16)连接;所述SRAM存储控制模块(12)和寄存器模块(16)进行信息交互。
进一步地,在测试进行过程中,存储器模拟监控板ARM(7)通过接口A(4)接收检测计算机(1)发送的指令,同时通过接口B(5)与存储器模拟板FPGA(8)进行信息交互,完成检测计算机(1)要求的操作;被测单元3通过接口C(6)与存储器模拟板FPGA(8)进行信息交互,模拟电表对EEPROM的读写操作;所述存储器模拟监控板ARM(7)为ARM芯片;
所述i2c总线内核(9)满足EEPROM通信协议。
进一步地,所述接口A(4)是检测计算机(1)和模拟存储器测试板(2)之间的接口,采用以太网接口,模拟存储器测试板(2)作为服务端;所述接口C(6)是模拟存储器测试板(2)与被测单元(3)之间的接口,满足i2c总线协议。
进一步地,模拟存储器测试板利用存储器模拟板FPGA(8)硬件逻辑及SRAM芯片(13)模拟被测单元(3)对智能电能表的存储芯片的读写操作,通过ARM芯片与存储器模拟板FPGA(8)的信息交互,进行特殊操作:根据测试中使用的不同智能电表,对存储器模拟板FPGA(8)的模拟存储芯片信息进行配置,配置信息包括设备地址、存储器数量、存储器容量、是否分页和页大小;读取存储芯片模块的操作指令和记录操作状态;模拟智能电能表存储芯片的故障写入操作,满足智能电表软件可靠性测试平台检测存储器失效的需求。
进一步地,所述特殊操作包括:ARM芯片通过以太网接收上位机发送的指令,以读写时序与存储器模拟板FPGA(8)进行信息交互,将指令发送到存储器模拟板FPGA(8)模拟的寄存器中,再按照存储器模拟板FPGA(8)内部逻辑解析寄存器内容,实现存储器芯片的信息配置、读取操作指令及故障写入操作。
本发明还提供一种智能电表嵌入式应用的模拟存储器测试板系统的测试方法,其改进之处在于,所述方法包括下述步骤:
步骤1:分析存储器模拟板FPGA的模拟存储芯片读写操作以及ARM芯片与存储器模拟板FPGA间的通信协议;
步骤2:根据存储器模拟板FPGA读写数据以及ARM芯片与智能电能表存储芯片间的通信协议,设计符合协议的时序逻辑;
步骤3:根据设计的时序逻辑,基于Quartusii软件,利用VHDL语言实现存储芯片内核及智能电能表的存储芯片与ARM芯片进行交互的硬件逻辑;
步骤4:根据智能电表软件可靠性测试平台的需求,设计智能电能表存储芯片内核外围的硬件逻辑,分配管脚,并对VHDL语言编写的程序进行综合;
步骤5:在模拟存储器测试板上运行综合后的程序,对智能电表中的嵌入式应用进行测试,包括对智能电表的存储芯片测试和计量芯片测试。
进一步地,所述步骤5中,存储芯片测试包括:测试存储芯片对数据的分块存储,EEPROM不能写时的存储策略;测试智能电表费率、电价、剩余金额和购电次数重要数据是否有备份;测试存储芯片重要数据被破坏是否自恢复;测试存储数据是否有溢出错误。
进一步地,所述测试存储芯片对数据的分块存储,EEPROM不能写时的存储策略包括:存储芯片记录运行过程中电表MCU对存储芯片的每个操作指令,在存储芯片存满之前将操作指令转到存储器模拟监控板ARM中,上位机将小于存储器存满的时间为固定周期,取存储器模拟监控板ARM中的操作指令,查看记录的指令对存储芯片的操作是否根据统计的不同类数据存放到相应的目的地址,把操作次数不同的地址按设定阈值标记为不同颜色,分析数据是否分块;显示统计的地址操作次数,生成一张表观察智能电表MCU对存储器模拟板FPGA中模拟存储芯片的操作规律。
进一步地,所述测试智能电表费率、电价、剩余金额和购电次数重要数据是否有备份,包括:1)针对性测试:统计所有智能电表厂家在智能电表软件中的数据备份方案的地址与重要数据存放的地址是否一致;2)遍历性测试,统计智能电表MCU对存储芯片的操作指令,按照操作次数相同和连续数据长度相同比对存储器模拟板FPGA所有地址的数据有无备份。
进一步地,所述测试存储芯片重要数据被破坏是否自恢复包括:主动破坏有备份的数据,以整数倍与智能电表MCU操作存储芯片的周期为时间,查看并记录数据是否能够恢复正常,是否能够以备份的数据恢复原有数据,同时统计恢复所需要的时间。
进一步地,所述存储数据是否有溢出错误包括:①统计记录的智能电表MCU对存储芯片的操作指令中是否有在定义物理地址外的操作;②涉及EEPROM的页边界问题:统计智能电表MCU对存储芯片的操作指令中每一页最后的地址与下一页页首的地址是否连续;并将每一页的最后存放的超出本页剩余地址长度的数据存放到下一页,不能卷到本页的页首冲掉已有的数据。
进一步地,所述步骤5中,计量芯片测试包括:测试智能电表上电时是否能正常设置计量参数;测试智能电表正常工作时对计量芯片是否有监视;测试输入异常计量数据对智能电表的影响。
进一步地,所述测试智能电表上电时是否能正常设置计量参数包括:统计智能电表MCU对计量芯片的操作指令,查看智能电表上电时MCU对计量芯片的参数寄存器是否有写操作,读取计量参数(计量参数包括电能表、费率、电价、剩余金额和购电次数参数)寄存器的值,比对是否为复位之后的值;手动修改计量参数寄存器的值,查看计量参数是否恢复,并记录计量参数恢复所需的时间。
进一步地,所述测试智能电表正常工作时对计量芯片是否有监视包括:统计智能电表MCU对计量芯片的操作指令,参看智能电表MCU对计量参数寄存器是否有定时的读操作,记录读操作的时间间隔。
进一步地,所述测试输入异常计量数据对智能电表系统的影响包括:手动输入超量的有效功率,查看计量芯片是否能正常工作,并记录计量芯片正常工作的时间。
与最接近的现有技术相比,本发明具有的优异效果是:
(1)本发明提出的智能电表嵌入式应用的模拟存储器测试板系统及测试方法首次解决了智能电能表软件可靠性验证问题,提高了智能电能表软件成熟度和可靠性,减少了智能电能表运行故障。
(2)本发明提出的智能电表嵌入式应用的模拟存储器测试板系统及测试方法可以为电表企业进行电能表软件研发和可靠性验证提供技术指导,提高了电表厂商生产和研发的效率。
(3)本发明设计的智能电表嵌入式应用的模拟存储器测试板系统及测试方法可以有效仿真外部设备攻击场景,软硬件性能测试更加全面。
(4)本发明可解决ARM对上位机测试软件和被测的电表存储芯片同时进行交互操作时,软件运行速度较慢,可能导致测试错误的问题;
(5)本发明可针对不同的电表类型,对存储芯片类型、存储芯片数量、存储容量等信息进行配置;
(6)本发明可针对智能电表软件可靠性测试平台的测试需求,执行读取操作指令、存储器故障写入等操作。
(7)现有的软件黑盒测试方法没有针对智能电能表软件故障进行分析形成有针对性的测试用例,本发明设计了智能电能表软件测试用例的高效生成方法,提高了智能电能表软件故障的触发率。
(8)目前的软件测试只是对系统的功能和通信规约进行测试,没有对数据存储的可靠性进行测试,本发明的提出有效控制了电能表软件的质量,消除了电能表软件可能存在的安全隐患,解决了其功能实现不统一等问题。
附图说明
图1是本发明提供的模拟存储器测试板的系统结构;其中:1-检测计算机,2-模拟存储器测试板,3-被测单元,4-接口A,5-接口B,6-接口C,7-存储器模拟监控板ARM,8-存储器模拟板FPGA,9-满足EEPROM通信协议的i2c总线内核,10-仲裁选择模块,11-三总线模块,12-SRAM存储控制模块,13-SRAM芯片,14-修改存储器内容模块,15-读取操作指令模块,16-寄存器模块;
图2是本发明提供的上位机软件设计框图;
图3是本发明提供的测试方法的流程图;
图4是本发明提供的测试方法的架构图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的详细说明。
本发明提供一种智能电表嵌入式应用的模拟存储器测试板系统,其结构图如图1所示,包括1-检测计算机,2-模拟存储器测试板,3-被测单元,4-接口A,5-接口B,6-接口C。模拟存储器测试板包括7-存储器模拟监控板ARM及8-存储器模拟板FPGA。接口A4是检测计算机和存贮器模拟板之间的接口,采用以太网接口,存储器模拟板作为服务端;接口B5是存贮器模拟板内部控制MCU与外设FPGA之间的接口;接口C6是存储器模拟板与被测单元之间的接口,满足i2c总线协议。测试进行过程中,存储器模拟监控板ARM3通过接口A4接收检测计算机发送的指令,同时通过接口B5与存储器模拟板FPGA8进行信息交互,完成检测计算机要求的操作。被测单元3通过接口C6对存储器模拟板FPGA8进行信息交互,模拟电表对EEPROM的读写操作。
模拟存储器测试板2内部包括9-满足EEPROM通信协议的i2c总线内核,10-仲裁选择模块,11-三总线模块,12-SRAM存储控制模块,13-SRAM,14-修改存储器内容模块,15-读取操作指令模块,16-寄存器模块及7-ARM即存储器模拟监控板ARM。其工作原理如下:
模拟电表对EEPROM的读写操作:通过i2c总线内核9(最多可模拟8片)接收电表MCU发送的串行时钟信号、串行数据信号及写保护信号,i2c总线内核9根据i2c总线协议将接收的数据信号解析为地址、数据及读写控制信号;仲裁选择模块10接收i2c总线内核9发送的请求信号,进行片选,使能对应的i2c总线内核9;使能的i2c总线内核9将数据、地址、读写控制等信息发送至三总线模块11;三总线模块11将接收到的数据、地址、读写控制等信息通过SRAM存储控制模块12实现对SRAM13的读写操作。
读取操作指令:读取操作指令模块15由操作指令控制子模块和操作指令FIFO子模块两部分组成,操作指令控制子模块读取SRMA存储器控制模块12内的数据、地址。读写控制等信息,并按照一定的协议组合成一条完整的操作指令,发送至操作指令FIFO子模块。由于FIFO满足先入先出的排序方式,因此操作指令可按执行操作的先后顺序存入操作指令FIFO子模块。当寄存器模块16接收到ARM7发送的读取操作指令的信号时,即可读取操作指令FIFO子模块内的操作指令,再发送至ARM7,实现读取操作指令的功能。
存储器故障写入:ARM7发送修改存储器内容指令至寄存器模块16,寄存器模块16按协议解析接收的指令,将数据、地址、写控制等信息经过修改存储器内容模块14发送至三总线模块11,再通过SRAM存储控制模块12将修改的数据写入SRAM13对应的地址。在执行存储器故障写入的过程中,需屏蔽由i2c内核写入该地址的功能,以免ARM7修改的数据被电表MCU写入的数据覆盖。同时,ARM7可通过寄存器模块16将数据、地址、读控制信息发送至三总线模块11,经过SRAM存储控制模块12读取SRAM13对应地址的数据,以检验故障是否成功写入。
存储芯片信息配置:寄存器模块16按协议对ARM7发送的配置存储芯片信息指令进行解析,再发送至i2c内核9中,具体实现方式如下:使能不同数量的i2c内核9,可配置存储芯片数量;修改页首地址,可配置不同的页大小及是否分页;修改存储器地址位数,可配置不同的存储容量;设备地址由寄存器模块16解析后直接写入i2c内核9,可配置不同存储芯片的设备地址。
模拟存储器测试板除可以利用FPGA硬件逻辑及SRAM芯片模拟被测单元对存储芯片模块的读写操作,还可以通过存储器模拟监控板ARM与存储器模拟板FPGA的信息交互,进行某些特殊操作:根据测试中使用的不同电表,对模拟存储器芯片信息进行配置,配置信息主要包括设备地址、存储器数量、存储器容量、是否分页、页大小等;可读取存储芯片模块的操作指令,记录操作状态;模拟存储器芯片故障写入的操作,满足测试平台检测存储器失效的需求。
某些特殊操作指的是:存储器模拟监控板ARM通过以太网接收上位机发送的指令,以一定的读写时序与存储器模拟板FPGA进行信息交互,将指令发送到存储器模拟板FPGA模拟的寄存器中,再按照存储器模拟板FPGA内部逻辑解析寄存器内容,实现存储器芯片的信息配置、读取操作指令及故障写入操作。
如图2所示,本实施例的智能电表嵌入式软件的可靠性测试软件在设计时尽量保持各个模块的独立性,在设计模式上采用MVC框架,将用户界面与数据层分离,使用控制层连接界面和数据层,这样使得开发过程更加高效,后期功能扩展维护更加容易。其中软件设计主要包括如下几个部分:数据库:存储各模拟单元信息、测试方案、测试日志/报告、配置信息;功能设置/配置:配置各种信息,如芯片的选择、测试方案的选择与配置、各通信接口的选择等;显示:提供实时刷新有变化的模块数据显示功能等人机交互接口;测试日志/报告:记录测试过程与生成测试报告;各单元模块:具体对应各单元的测试需求。
如图3所示,本发明提出的智能电表嵌入式应用的模拟存储器测试板系统的测试方法,包括对存储芯片单元和计量芯片单元的相关测试。
存储芯片单元的测试包括:存储芯片对不同数据的分块存储,EEPROM不能写时的存储策略;智能电表重要数据是否有备份;存储器重要数据被破坏可否自恢复;存储数据是否有溢出错误。
测试所述存储芯片对不同数据的分块存储,EEPROM不能写时的存储策略,包括:存储芯片记录软件运行过程中MCU对存储芯片的每一个操作指令,在存储芯片存满之前将指令转到ARM芯片的存储器中,上位机软件设计一个单独的线程,已小于存储器存满的时间为固定周期,取ARM存储器中的指令,查看记录的指令对存储芯片的操作根据统计不同数据存放的目的地址,把操作次数不同的地址按一定阈值标记为不同颜色,分析数据是否分块,弹出测试结论提示。显示统计的地址操作次数,生成一张表可以直观观察电表MCU对存储芯片的操作规律。
测试所述智能电表重要数据是否有备份,包括:1)针对性测试,统计所有智能电表厂家在智能电表软件中的数据备份方案:备份的方式,备份数据的地址,重要数据存放的地址。读取备份地址的数据,与重要数据作比对,验证是否一致。2)遍历性测试,统计智能电表MCU对存储芯片的操作指令,按照操作次数相同、连续数据长度相同比对存储器中所有地址的数据有无备份。
所述存储器重要数据被破坏可否自恢复,包括:主动破坏有备份的数据,以整数倍与智能电表MCU操作存储芯片的周期为时间,查看并记录该数据是否可以恢复正常,是否可以以备份的数据恢复原有数据,同时统计恢复所需要的时间。
所述存储数据是否有溢出错误,包括:①统计记录的智能电表MCU对存储芯片的操作指令中有没有在定义的物理地址外的操作。②考虑EEPROM的页边界问题:统计智能电表MCU对存储芯片的操作指令中每一最后的地址与下一页页首的地址是否连续,每一页的最后,要存放的数据超出本页剩余的地址长度,应该将多出的数据存放到下一页,不能卷到本页的页首冲掉已有的数据。
计量芯片单元测试包括:电表上电时是否能正常设置计量参数;智能电表正常工作时对计量芯片是否有监视;输入异常计量数据对电表系统的影响。
所述电表上电时是否能正常设置计量参数,包括:统计电表MCU对计量芯片的操作指令,查看电表上电时MCU对计量芯片的参数寄存器有没有写操作,然后读取参数寄存器的值,比对是否为复位之后的值。手动修改计量参数寄存器的值,查看参数是否可以恢复,并记录参数恢复所需的时间。
所述智能电表正常工作时对计量芯片是否有监视,包括:统计电表MCU对计量芯片的操作指令,参看电表MCU对计量参数寄存器是否有定时的读操作,记录这些读操作的时间间隔。
所述输入异常计量数据对电表系统的影响,包括:手动输入一个超量的有效功率,查看计量芯片是否还能正常工作,并记录芯片正常工作的时间。
由于不同的电表厂家、同厂家不同的电表型号都有不同的测试需求,需要有不同的测试策略来配合智能电能表软件测试,本实施例的智能电表软件测试需首先对被测的智能电表嵌入式系统进行配置,然后由上位机作为服务端通过以太网通信将配置信息下发到作为客户端测试平台的功能模拟模块,配置成功的信息返回上位机之后开始测试,具体测试流程如下:
(1)用户登陆电表软件测试系统,进入通信页向下位机服务器发出连接请求。
(2)连接成功后进入系统配置页,确定电表型号,在数据库中配置厂商信息。
(3)配置成功后进入各模块测试页用编写好的测试用例进行电表软件测试。
(4)测试完成后生成测试报告存入数据库,测试结束。
如图4所示,在本实施例的测试方法架构中,界面操作是主线程,通过一些按钮操作触发数据管理线程,数据管理线程判断与哪个端口进行通信,收发的是哪种类型的数据。建立收/发两个线程,与各个测试版建立连接(循环),将建立连接的通信套接字的服务器端ip端口保存到一个列表里,之后所有向服务器端发送Socket都由这个列表中取出对应的对像发送。
多线程通信,主线程中建立消息管理队列实现线程管理,与数据库相连接实现数据的存取,和数据显示中的分页。界面设计运用C#中的winforms控件完成,界面主题采用页签(tabpage)的形式来展示不同的测试模块,分别为:总体配置页、计量芯片单元、存储芯片单元、时钟芯片单元、安全芯片单元、红外/485单元、负载开关单元、电流电压检测单元、通信连接页。
本发明中的智能电表嵌入式软件测试方法与以往的电能表测试软件不同,不只关注电能表嵌入式软件的调试工作,而是采用黑盒法,按智能电表功能模块化的测试,在智能电表嵌入式软件可靠性测试中是一种新的、可控的、针对应用的测试方法。本发明涉及的智能电表测试平台包括下位机模拟板系统,上位机测试软件以及数据交互的通信协议。下位机中存储器测试板主要由存储器监控板ARM与存储器模拟板FPGA组成。存储器测试板需满足以下基本要求:能够模拟当前主流厂家的存储芯片和计量芯片等核心芯片的功能,包括接口电平及时序、存储功能、存储容量、写入及读出的延时、掉电状态等;可通过上位机选择芯片类型、初始化芯片状态及存储内容(格式化)、读取任何一个单元或者全部影像、修改任何一个单元等;可设置失效模式,模拟现实中存储器失效过程,或者模拟存储器不稳定状态。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员依然可以对本发明的具体实施方式进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。