本发明涉及通信类电子产品的生产制造领域,具体涉及一种基于反编译开发的高通方案无线校准测试系统和方法。
背景技术:
行业内高通qdart方案的校准测试程序一直依赖于设备商提供的产测程序,以供工厂生产使用。这样带来的问题是可维护性差、可扩展性也较差,而且设备商提供的测试程序非常冗余,测试效率也不高,重测率也较高。因此非常有必要开发自研高效的校准测试程序。
技术实现要素:
本发明的目的在于提供一种基于反编译开发的高通方案无线校准测试系统和方法,解决了现有的测试方法在测试高通qdart方案时,测试过程复杂冗余,测试效率不高,重测率高的问题。
为解决上述的技术问题,本发明采用以下技术方案:
一种基于反编译开发的高通方案无线校准测试系统,包括安装有自动化产测平台ate_release、反编译reflector解析环境的测试电脑;包括iqxel或wt208仪表;包括功分器;所述测试电脑、所述iqxel或wt208仪表、所述功分器依次连接后,由功分器分别连接至dut上。
进一步的技术方案是,所述iqxel或wt208仪表所配的射频线和扣线均还有两根以上,所述功分器的的数量也在两个以上,iqxel或wt208仪表通过两根以上的射频线分别连接至两个以上的功分器。
进一步的技术方案是,所述功分器通过扣线连接至dut的ap模块。
一种基于反编译开发的高通方案无线校准测试方法,其特征在于包括以下步骤:
s1.通过反编译器,编译解析代码,并通过转换开发语言,嵌入到自动化测试平台中;
s2.借助于reflector解析出高通官方测试工具qspr中的qmsl模块中的关于校准和测试部分(就是包含了一些列的校准测试步骤,比如频偏校准、tx、rx测试、功率校准等等)的函数的调用,参数传递、数据控制过程,并且将其c#语言转换为c++语言;
s3.将上述针对每一个校准和测试过程所解析出来的c++代码进行备份,通过c逻辑开发成为相应的函数调用模块,供平台层计算调用;
s4.加载测试,进行loss检查,统计对象生成,算法生成等操作;
s5.插入dut,加载与dut通信的dll文件,同时dut开启的qcmbr服务的ip和端口,格式ip:port,从变量池获取对应的值替换成使用%ip%变量的表示ip;
s6.初始化,加载boarddata文件;
s7.频偏校准;
s8.rx校准,提供仪器控制的回调函数,以烧录的方式控制rx校准过程;
s9.功率校准,提供仪器控制的回调函数,以烧录的方式控制tx校准过程;
s10.功率验证;
s11.rx验证;
s12.写值。
根据权利要求4所述的一种基于反编译开发的高通方案无线校准测试方法,其特征在于:所述平台层有主函数层和js校准层;
所述主函数层包括:
dut控制模块:实现dut模块的icommoninteraction接口;
swfs测试项目模块:将dut模块的icommoninteraction接口映射到js脚本中(function),构造ccommoninteractioninterfacemanage类,用于管理dut模块的操作指针的产生和释放。这里的操作指针主要是实现与上述解析出来的函数进行数据通信,通过调用函数(比如tx校准和tx测试),然后得到返回值数据,从而根据需要获取相应的数据。
js脚本:dut控制模块的调用都是通过cnicfunctionforscript类提供的js对象进行操作的,从而实现dut控制过程,控制流程部分在js中有以下目的:可以通过不修改源代码实现流程的变更,对dut控制模块的代码进行最小程度的修改。这样就可以通过js对不同需求进行整合添加,比较方便,不需要经常修改主体函数框架。
进一步的技术方案是,所述与dut通信的dll文件是msl_wlan_transport.dll文件。
进一步的技术方案是,所述boarddata文件包括devdllname、refdesign、e2pfilename、invmemoption和ssid。
进一步的技术方案是,还包括步骤十,卸载dut(removedut)。
高通芯片自研校准程序,主要是调用高通qspr提供的api库进行校准测试,api库里面的调用过程都是动态链接库之间的相互嵌套调用的过程,所以需要分析明确qspr动态链接库之间的具体实现过程。本发明采用reflector工具来实现反编译,洞悉校准测试的内部逻辑,并结合自身的测试平台机制来设计和开发自研校准程序。reflector是由微软员工lutzroeder编写的免费程序。reflector的出现使.net程序员眼前豁然开朗,因为这个免费工具可以将.net程序集中的中间语言反编译成c#或者vb代码。除了能将中间语言转换为c#或vb以外,reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中中间语言的能力以及提供对第三方插件的支持。
与现有技术相比,本发明的有益效果是:本发明基于一台iqxel或者wt208仪表和一台电脑(内置测试平台),基于高通最新的qspr的api库,结合反编译解析工具,开发自研的高通校准测试程序,即可实现众多无线终端产品功率校准和测试。降低了程序冗余,增强了程序的可扩展性,可编辑性,极大地提高了测试效率,降低了测试重测率。
附图说明
图1为本发明系统连接图。
图2为本发明流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示出了本发明一种基于反编译开发的高通方案无线校准测试系统的一个实施例:一种基于反编译开发的高通方案无线校准测试系统,包括安装有自动化产测平台ate_release、反编译reflector解析环境的测试电脑;包括iqxel或wt208仪表;包括功分器;所述测试电脑、所述iqxel或wt208仪表、所述功分器依次连接后,由功分器分别连接至dut上。
根据本发明一种基于反编译开发的高通方案无线校准测试系统的一个实施例,所述iqxel或wt208仪表所配的射频线和扣线均还有两根以上,所述功分器的的数量也在两个以上,iqxel或wt208仪表通过两根以上的射频线分别连接至两个以上的功分器。
以4个射频端口,以被测物为2t2r为例,2t:2根天线发送信号,2r:2根天线接受信号,该射频线需加上扣线或者顶针直接接在被测物ap模块的两个扣子上面即可,测试电脑网口拉一根网线连接仪表总网口,然后将仪表的射频端口引出射频线,射频线再接上一个功分器,功分器再接上两个射频线(该射频线需加上扣线或者顶针直接接在被测物ap模块的两个扣子上面即可)总共用线情况为:3根射频线+1个功分器+2根扣线或者顶针。
根据本发明一种基于反编译开发的高通方案无线校准测试系统的另一个实施例,所述功分器通过扣线连接至dut的ap模块。
图2示出了本发明一种基于反编译开发的高通方案无线校准测试方法的一个实施例:一种基于反编译开发的高通方案无线校准测试方法,包括以下步骤:
s1.通过反编译器,编译解析代码,并通过转换开发语言,嵌入到自动化测试平台中;
s2.借助于reflector解析出高通官方测试工具qspr中的qmsl模块中的关于校准和测试部分(就是包含了一些列的校准测试步骤,比如频偏校准、tx、rx测试、功率校准等等)的函数的调用,参数传递、数据控制过程,并且将其c#语言转换为c++语言;
s3.将上述针对每一个校准和测试过程所解析出来的c++代码进行备份,通过c逻辑开发成为相应的函数调用模块,供平台层计算调用;
s4.加载测试,进行loss检查,统计对象生成,算法生成等操作;
s5.插入dut,加载与dut通信的dll文件,同时dut开启的qcmbr服务的ip和端口,格式ip:port,从变量池获取对应的值替换成使用%ip%变量的表示ip;
加载封装的qlib库加载与dut通信的dll文件(就是usertransportdll),连接dut;
usertransportdll:与dut通信的dll文件,这个文件一般我们都使用qspr自带的msl_wlan_transport.dll文件;
ip_port:dut端开启的qcmbr服务的ip和端口,格式ip:port;
一般ip与dutip相同,所以我们这里使用%ip%变量的表示ip,程序会自动到变量池获取对应的值替换,端口则根据实际情况填写,一般为2390,2391,2392等;
targettype:此为qlib库与server的通信协议类型.qc99xx使用apq类型;
qdartdllfilepath:此为我们自己对qlib库进行的二次封装,此文件需满足一下要求:
1、文件名必须以qdartwlan_开始的dll文件;
2、文件可以放在配置档目录,也可以放在与qdartinsertdut.dll相同的目录;
s6.初始化,加载boarddata文件;
加载boarddata文件:
devdllname:芯片对应的类别,用于区别各种芯片的标记,目前只支持qc99xx;
refdesign:芯片对应的类别,一般与devdllname相同,用于art2测试芯片,对应qca芯片此参数不使用;
e2pfilename:需要加载的boarddata文件名,文件必须放在配置档目录中;
invmemoption:boarddata文件写入的位置;
ssid:servicesetidentifier服务集标识,最大为0xffff。可以输入0x开始的16进制数,也可以是10进制数;
s7.频偏校准;
天线:校准频偏时使用的天线,只能选择1根天线;
信道:校准频偏时使用的信道;
dxtaltargetppm:目标频偏值,即频偏校准时向此频偏值靠拢;
dxtaltoleranceppm:距离目标频偏值的容差,为正整数,例如2,表示范围为targetppm+/-2;
dxtalcapdelta:每次调整xcap值时调整的最大步长;
dxtalcaloptsaveopt:是否把校准的xcap值写入otp中0=不写入,1=写入;
注意:大多数otp只能写一次,如果已经写过了再写入一次则会测试失败;
gainindex:发射功率时使用的gain值;
dacgain:dacgain值,一般为0;
paconfig:pa配置索引,一般为0;
averagetimes:平均次数,即测量时取几次测量的平均值;
s8.rx校准(rxcal),提供仪器控制的回调函数,以烧录的方式控制rx校准过程;
fwcontrolled表示rx校准过程由烧录软件控制,我们提供仪器控制的回调函数即可,其他步骤(包括校准方法,校准的信道,写校准值等)由烧录软件完成;
天线:需要校准的天线,一般来说所有的天线都要校准,所以这里采用了chain表示法进行设置;
ac1:表示校准1个天线,ac3表示校准2个天线,ac7表示校准3个天线,ac15表示校准4个天线;
信道列表:由于校准过程和信道都是由烧录软件控制的,所以这里的信道列表仅为了量测线损时使用。可以填写信道或频率(mhz)或混合,使用逗号分开,保存的时候会自动转换为信道保存;
radioid:参考xtt文件填写(iqfact没有此参数,估计为固定值);
s9.功率校准(powercal),提供仪器控制的回调函数,以烧录的方式控制tx校准过程;
fwcontrolled表示tx校准过程由烧录软件控制,我们提供仪器控制的回调函数即可,其他步骤(包括校准方法,校准的信道,写校准值等)由烧录软件完成;
天线:由于校准的天线是由烧录软件控制的,所以这里的天线仅为了量测线损使用。采用了chain表示法进行设置;
ac1:表示校准1个天线,ac3表示校准2个天线,ac7表示校准3个天线,ac15表示校准4个天线;
信道列表:由于校准过程和信道都是由烧录软件控制的,所以这里的信道列表仅为了量测线损时使用,可以填写信道或频率(mhz)或混合,使用逗号分开,保存的时候会自动转换为信道保存;
allchainon:是否校准所有的天线,一般都选择true;
imaxiteration:目前qc99xx没有使用此值,保持与xtt文件一致即可;
averagetimes:平均次数,即测量时取几次测量的平均值;
s10.功率验证(txverify),
模式,速率,天线,信道:与其他芯片的板测配置一样;
powerlimit,evmlimit,freqoffset,mask:与其他芯片的板测配置一样;
verifypower/evm/freqoffset/mask:是否验证对应的项目;
averagetimes:平均次数,即测量时取几次测量的平均值;
11ac支持2g频率测试;
s11.rx验证(rxverify),
rxpin(dbm):期望的dut收到数据包的功率大小;
receivedcount:收到包的最小数量;
sendpacketcount:发送数据包的数量;
verifyrssi:是否检查rssi值是否在范围内;
rssilimit:rssi上下限;
s12.写值(writeeeprom)
templatenum:写入的数据格式的模板,请保持与xtt一致;
writeoption:写入的位置,常用的有:dataflash:写入到flash分区中;
dataotp:写入到otp中.datafile,写入到文件中;
memsize:存放校准数据的存储器空间大小(一般为mem_auto);
icompress:是否需要压缩数据,写入otp时此项目必须为true,其他为false;
ioverwrite:是否覆盖已经存在的数据。
作为优选实施例,所述平台层有主函数层和js校准层。
所述主函数层包括:
dut控制模块:实现dut模块的icommoninteraction接口;
swfs测试项目模块:将dut模块的icommoninteraction接口映射到js脚本中(function),构造ccommoninteractioninterfacemanage类,用于管理dut模块的操作指针的产生和释放。这里的操作指针主要是实现与上述解析出来的函数进行数据通信,通过调用函数(比如tx校准和tx测试),然后得到返回值数据,从而根据需要获取相应的数据。
js脚本:dut控制模块的调用都是通过cnicfunctionforscript类提供的js对象进行操作的,从而实现dut控制过程,控制流程部分在js中有以下目的:可以通过不修改源代码实现流程的变更,对dut控制模块的代码进行最小程度的修改。这样就可以通过js对不同需求进行整合添加,比较方便,不需要经常修改主体函数框架。
作为本发明的优选实施例,所述与dut通信的dll文件是msl_wlan_transport.dll文件。
作为本发明的优选实施例,所述boarddata文件包括devdllname、refdesign、e2pfilename、invmemoption和ssid。
作为本发明的优选实施例,还包括步骤十,卸载dut(removedut)。
作为上述实施例的详细操作:
反编译环境
(1)下载reflector,双击reflector.exe,如果有选择默认版本的.net。
framework,根据需要选择即可,选择的版本不同则出现的默认程序集也不同,我选择的是.net3.5。
(2)点击file-open选择要反编译的dll,打开后程序集的命名空间会出现在列表中;
(3)点击树形列表中的类,右边就会出现相应的反编译代码,反编译的就是qspr了里面的api链接库,反编译后的代码和原代码基本没有什么区别。
qspr环境
安装你需要的版本的qdart安装包。
将安装后的qdart路径中的bin文件夹路径加入到环境path变量中。
打开qspr,看是否能正常运行。
尽管这里参照本发明的多个解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。更具体地说,在本申请公开、附图和权利要求的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变形和改进外,对于本领域技术人员来说,其他的用途也将是明显的。