掌桥专利:专业的专利平台
掌桥专利
首页

存储器模拟方法及装置、存储介质及电子装置

文献发布时间:2023-06-19 18:37:28


存储器模拟方法及装置、存储介质及电子装置

技术领域

本申请实施例涉及计算机领域,具体而言,涉及一种存储器模拟方法及装置、存储介质及电子装置。

背景技术

在交换机产品中,有多种不同的交换机网络业务端口进行数据的发送和接收,交换机产品在出厂前需要对业务端口的功能指标进行测试,例如,上述功能指标包括监控业务端口的高速链路信号、低速链路信号、功耗状态、温度状态、电压状态等。

在测试交换机的功能指标的时候,如果直接用光缆测试,成本巨大,且不易操作。因此,往往是通过模拟测试工具(例如,ELOAD测试工具),模拟与交换机的业务端口通信的对端端口,从而对交换机的业务端口的各类信号及状态等等指标进行测试。相关技术中,在上述测试的过程中,需要对存储器(例如,EEPROM,带电可擦可编程只读存储器)进行访问,例如,对存储器进行数据读写操作,然而,上述模拟测试工具所在的板卡的空间有限,上述存储器可能无法部署在板卡上,或,挤占板卡上的其他器件的空间,造成空间上的浪费。

针对相关技术中造成空间上的浪费的技术问题,尚未提出有效的解决方案。

发明内容

本申请实施例提供了一种存储器模拟方法及装置、存储介质及电子装置,以至少解决相关技术中造成空间上的浪费的问题。

根据本申请的一个实施例,提供了一种存储器模拟方法,包括:确定待模拟的目标存储器的一组存储页面的页面信息,其中,所述一组存储页面是目标测试任务所需使用的页面;根据所述一组存储页面的页面信息,在目标固件中的空闲存储空间中为所述一组存储页面中的各个存储页面分配对应的存储空间,得到分配给所述一组存储页面的一组存储空间;在所述目标固件的固件程序中设置一组参数,其中,所述一组参数用于在执行所述目标测试任务时对所述一组存储空间中的存储空间进行切换。

在一个示例性实施例中,所述确定待模拟的目标存储器的一组存储页面的页面信息,包括:确定所述一组存储页面中的各个存储页面的存储容量,得到一组存储容量,其中,所述一组存储空间中的各个存储空间的存储容量分别为所述一组存储页面中对应的存储页面的存储容量,所述一组存储页面的页面信息包括所述一组存储容量。

在一个示例性实施例中,所述确定待模拟的目标存储器的一组存储页面的页面信息,还包括:确定所述一组存储页面中允许进行切换的存储页面,其中,所述一组存储页面的页面信息还包括所述允许进行切换的存储页面的页面标识,所述一组参数用于在执行所述目标测试任务时对所述一组存储空间中与所述允许进行切换的存储页面对应的存储空间进行切换。

在一个示例性实施例中,所述确定所述一组存储页面中允许进行切换的存储页面,包括:在所述一组存储页面中确定目标存储页面和N个存储页面,其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,N为大于或等于2的正整数;将所述N个存储页面确定为所述允许进行切换的存储页面。

在一个示例性实施例中,所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量。

在一个示例性实施例中,所述在所述目标固件的固件程序中设置一组参数,包括:在所述固件程序中设置目标指针,其中,所述目标指针用于指向所述一组存储空间中的存储位置;在所述固件程序中设置第一变量,其中,所述第一变量用于表示在执行所述目标测试任务时接收到的目标命令所指示的页面的页面标识;在所述固件程序中设置第二变量,其中,所述第二变量用于表示在执行所述目标测试任务时接收到的所述目标命令所指示的偏移地址,所述第一变量和所述第二变量用于调整所述目标指针所指向的所述一组存储空间中的存储位置。

在一个示例性实施例中,所述第一变量和所述第二变量均为整型变量。

在一个示例性实施例中,所述在所述固件程序中设置目标指针,包括:在所述一组存储页面中包括目标存储页面和N个存储页面的情况下,在所述固件程序中将所述目标指针的初始值设置为所述目标存储页面对应的目标存储空间的起始地址,其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

在一个示例性实施例中,在所述目标固件的固件程序中设置一组参数之后,所述方法还包括:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取单个字节的第一读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第一读命令所指示的第一页面标识,所述第二变量的取值表示所述第一读命令所指示的第一偏移地址,所述第一页面标识用于标识所述一组存储页面中的第一存储页面,所述第一偏移地址用于确定所述单个字节在所述第一存储页面上的偏移地址;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第一存储空间中的第一存储位置,其中,所述第一存储空间是所述第一存储页面所对应的存储空间;读取所述目标指针所指向的所述第一存储位置中的所述单个字节。

在一个示例性实施例中,在所述目标固件的固件程序中设置一组参数之后,所述方法还包括:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取连续M个字节的第二读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第二读命令所指示的第二页面标识,所述第二变量的取值表示所述第二读命令所指示的第二偏移地址,所述第二页面标识用于标识所述一组存储页面中的第二存储页面,所述第二偏移地址用于确定所述连续M个字节中的首个字节在所述第二存储页面上的偏移地址,M为大于或等于2的正整数;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第二存储空间中的第二存储位置,其中,所述第二存储空间是所述第二存储页面所对应的存储空间;从所述第二存储位置开始,读取M次所述目标指针所指向的存储位置中的字节,其中,在每次读取所述目标指针所指向的存储位置中的字节之后,所述目标指针所指向的存储位置被调整为所述第二存储空间中的下一个存储位置。

在一个示例性实施例中,在所述目标固件的固件程序中设置一组参数之后,所述方法还包括:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于写入单个字节的第一写命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第一写命令所指示的第三页面标识,所述第二变量的取值表示所述第一写命令所指示的第三偏移地址,所述第三页面标识用于标识所述一组存储页面中的第三存储页面,所述第三偏移地址用于确定所述单个字节在所述第三存储页面上的偏移地址;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第三存储空间中的第三存储位置,其中,所述第三存储空间是所述第三存储页面所对应的存储空间;将所述单个字节写入所述目标指针所指向的所述第三存储位置中。

在一个示例性实施例中,在所述目标固件的固件程序中设置一组参数之后,所述方法还包括:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于写入连续M个字节的第二写命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第二写命令所指示的第四页面标识,所述第二变量的取值表示所述第二写命令所指示的第四偏移地址,所述第四页面标识用于标识所述一组存储页面中的第四存储页面,所述第四偏移地址用于确定所述连续M个字节中的首个字节在所述第四存储页面上的偏移地址,M为大于或等于2的正整数;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第四存储空间中的第四存储位置,其中,所述第四存储空间是所述第四存储页面所对应的存储空间;从所述第四存储位置开始,将所述M个字节依次写入所述目标指针所指向的存储位置中,其中,在每次将所述M个字节中的一个字节写入所述目标指针所指向的存储位置中之后,所述目标指针所指向的存储位置被调整为所述第四存储空间中的下一个存储位置。

在一个示例性实施例中,所述在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取单个字节的第一读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,包括:在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于读取单个字节的所述第一读命令、且所述第一读命令所指示的所述第一偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

在一个示例性实施例中,所述在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取连续M个字节的第二读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,包括:在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于读取连续M个字节的所述第二读命令、且所述第二读命令所指示的所述第二偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

在一个示例性实施例中,所述在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于写入单个字节的第一写命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,包括:在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于写入单个字节的所述第一写命令、且所述第一写命令所指示的所述第三偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

在一个示例性实施例中,所述根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第一存储空间中的第一存储位置,包括:在所述一组存储页面中包括目标存储页面和N个存储页面、且所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量的情况下,当所述第一偏移地址小于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第一存储空间中的所述第一存储位置确定为等于所述的目标存储页面对应的目标存储空间的起始地址与所述第一偏移地址之和;当所述第一偏移地址大于或等于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第一存储空间中的所述第一存储位置确定为等于(所述目标存储空间的起始地址+所述第一偏移地址-所述最大偏移地址);其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

在一个示例性实施例中,所述目标存储器包括以下之一:带电可擦可编程只读存储器EEPROM,闪存Flash。

在一个示例性实施例中,所述目标固件包括以下之一:微控制单元MCU、中央处理器CPU、片上系统SOC、微处理单元MPU。

在一个示例性实施例中,所述目标测试任务包括光模块测试任务。

在一个示例性实施例中,所述一组存储页面是基于目标协议定义的页面,所述目标测试任务是用于对基于所述目标协议实现的光模块进行测试的任务。

根据本申请的另一个实施例,提供了一种存储器模拟装置,包括:第一确定模块,用于确定待模拟的目标存储器的一组存储页面的页面信息,其中,所述一组存储页面是目标测试任务所需使用的页面;分配模块,用于根据所述一组存储页面的页面信息,在目标固件中的空闲存储空间中为所述一组存储页面中的各个存储页面分配对应的存储空间,得到分配给所述一组存储页面的一组存储空间;设置模块,用于在所述目标固件的固件程序中设置一组参数,其中,所述一组参数用于在执行所述目标测试任务时对所述一组存储空间中的存储空间进行切换。

根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本申请的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本申请实施例,由于可以在固件的空闲存储空间中,模拟出存储器,在模拟出的存储器中为测试任务所需的页面分配对应的存储空间。在进行测试的过程中,可以通过固件的固件程序中设置的参数,实现不同存储页面所对应的存储空间之间的切换。通过这样的方式,大大减少了所需模拟的存储页面的数量,进而极大地减少了上述模拟出的存储器在模拟测试工具所在的板卡上所占的空间,进而极大地减少了造成的空间上的浪费。因此,可以解决造成空间上的浪费的问题,达到减少造成的空间上的浪费的效果。

附图说明

图1是本申请实施例的一种存储器模拟方法的移动终端的硬件结构框图;

图2是根据本申请实施例的一种MCU的存储空间示意图;

图3是根据本申请实施例的一种基于DSFP协议规定的存储页面示意图;

图4是根据本申请实施例的存储器模拟方法的流程图;

图5是根据本申请实施例的一种分配存储页面所对应的存储空间的示意图;

图6是根据本申请实施例的一种在固件中定义存储页面的示意图;

图7是根据本申请实施例的一种设置一组参数的示意图;

图8是根据本申请实施例的一种调整目标指针的示意图一;

图9是根据本申请实施例的一种调整目标指针的示意图二;

图10是根据本申请实施例的一种确定下一个存储位置的示意图;

图11是根据本申请实施例的一种实现写操作的示意图;

图12是根据本申请实施例的一种实现写入单个字节的示意图;

图13是根据本申请实施例的一种实现写入连续多个字节的示意图;

图14是根据本申请实施例的一种确定是否执行目标命令的示意图;

图15是根据本申请实施例的一种确定目标指针所指向的存储空间中的存储位置的示意图;

图16是根据本申请实施例的存储器模拟装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本申请的实施例。

需要说明的是,本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种存储器模拟方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的存储器模拟方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。

可以但不限于以目标协议为DSFP(Dual Chanel Small Form-factor Pluggable)协议,目标测试任务为对交换机的功能指标进行测试为例,对本申请实施例中的存储器模拟方法的应用场景进行解释说明,可以但不限于适用于本申请实施例。

在对交换机的监控业务端口的高速链路信号、低速链路信号、功耗状态、温度状态、电压状态等等功能指标进行测试的过程中,可以但不限于在ELOAD(光口测试工具)中的MCU(Microcontroller Unit,微控制单元,即上述的目标固件)的空闲存储空间中模拟出存储器(即上述的目标存储器),图2是根据本申请实施例的一种MCU的存储空间示意图,如图2所示,MCU提供的存储空间中包括LCD Display RAM、External RAM(External RandomAccess Memory,空闲随机存取存储器)、Not used(未使用)和Extend(空闲) SFR(specialfunction register,特殊功能寄存器)。其中,LCD Display RAM的存储位置从0000H至001AH;External RAM的存储位置为从001BH至02FFH;Not used的存储位置从02FFH至1000H;Extend SFR的存储位置为从1000H至107FH,其大小为128Bytes(字节)。由此可见,MCU的芯片内存空间十分有限,仅有768字节的External RAM空间(即上述的空闲存储空间)可供用户数据使用。

DSFP协议规定每个页面为256字节,Page00h的00h-7Fh为基础页的前半部分,后半部分80h-FFh根据7Fh的Page Select指令在Page00h- PageFFh之间切换。通过本申请实施例的存储器模拟方法,可以在MCU的External RAM空间中精简地模拟出对交换机的功能指标进行测试的过程中所需使用的存储页面,而不用模拟出DSFP协议规定的所有页面。图3是根据本申请实施例的一种基于DSFP协议规定的存储页面示意图,如图3所示,可以但不限于在MCU的External RAM空间中模拟出一个EEPROM(Electrically Erasable Programmableread only memory,带电可擦可编程只读存储器,即上述的目标存储器),在EEPROM中模拟出对交换机的功能指标进行测试的过程中所需使用的存储页面Page 00L(即上述的目标存储页面),Page 00H(即上述的N个存储页面中的一个),Page 01(即上述的N个存储页面中的一个)和Page 80(即上述的N个存储页面中的一个),而不用在MCU的External RAM空间模拟出其他与测试交换机的功能指标无关的存储页面(比如:Page 02h、Page 03h等等)。通过这样的方式,避免了模拟出与测试交换机的功能指标无关的存储页面,极大地减少了所耗费的MCU的存储空间,进而极大地节省了板卡的空间,提升了板卡电子元器件布局的合理性和Eload工作的可靠性。

在本实施例中提供了一种运行于上述移动终端的存储器模拟方法,图4是根据本申请实施例的存储器模拟方法的流程图,如图4所示,该流程包括如下步骤:

步骤S402,确定待模拟的目标存储器的一组存储页面的页面信息,其中,所述一组存储页面是目标测试任务所需使用的页面;

步骤S404,根据所述一组存储页面的页面信息,在目标固件中的空闲存储空间中为所述一组存储页面中的各个存储页面分配对应的存储空间,得到分配给所述一组存储页面的一组存储空间;

步骤S406,在所述目标固件的固件程序中设置一组参数,其中,所述一组参数用于在执行所述目标测试任务时对所述一组存储空间中的存储空间进行切换。

通过上述步骤,由于可以在固件的空闲存储空间中,模拟出存储器,在模拟出的存储器中为测试任务所需的页面分配对应的存储空间。在进行测试的过程中,可以通过固件的固件程序中设置的参数,实现不同存储页面所对应的存储空间之间的切换。通过这样的方式,大大减少了所需模拟的存储页面的数量,进而极大地减少了上述模拟出的存储器在模拟测试工具所在的板卡上所占的空间,进而极大地减少了造成的空间上的浪费。因此,可以解决造成空间上的浪费的问题,达到减少造成的空间上的浪费的效果。

其中,上述步骤的执行主体可以为终端等,但不限于此。

步骤S402和步骤S404的执行顺序是可以互换的,即可以先执行步骤S404,然后再执行S402。

在上述步骤S402提供的技术方案中,目标测试任务可以但不限于为对交换机的功能指标进行测试的任务,交换机的功能指标可以但不限于包括业务端口的高速链路信号、低速链路信号、功耗状态、温度状态和电压状态等等。

可选的,在本实施例中,一组存储页面可以但不限于包括完成目标测试任务所必需的页面,一组存储页面中的各个存储页面可以但不限于用于存储完成目标测试任务的程序。比如:一组存储页面可以但不限于包括完成对交换机的功能指标进行测试所必需的页面。各个存储页面可以但不限于用于存储完成交换机的功能指标的测试的程序。

在一个示范性实施例中,可以但不限于通过以下方式确定待模拟的目标存储器的一组存储页面的页面信息:确定所述一组存储页面中的各个存储页面的存储容量,得到一组存储容量,其中,所述一组存储空间中的各个存储空间的存储容量分别为所述一组存储页面中对应的存储页面的存储容量,所述一组存储页面的页面信息包括所述一组存储容量。

可选的,在本实施例中,可以但不限于根据各个存储页面中待存储的完成目标测试任务的程序的数据量、运行内存等等,确定各个存储页面的存储容量。

在一个示范性实施例中,还可以但不限于通过以下方式确定待模拟的目标存储器的一组存储页面的页面信息:确定所述一组存储页面中允许进行切换的存储页面,其中,所述一组存储页面的页面信息还包括所述允许进行切换的存储页面的页面标识,所述一组参数用于在执行所述目标测试任务时对所述一组存储空间中与所述允许进行切换的存储页面对应的存储空间进行切换。

可选的,在本实施例中,一组存储页面中的部分存储页面是允许进行切换的,可以但不限于在执行目标测试任务的过程中,通过一组参数对允许进行切换的存储页面所对应的存储空间进行切换。

可选的,在本实施例中,存储页面的页面标识可以但不限于包括页面名称、页面标号和页面代码等等。

在一个示范性实施例中,可以但不限于通过以下方式确定一组存储页面中允许进行切换的存储页面:在所述一组存储页面中确定目标存储页面和N个存储页面,其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,N为大于或等于2的正整数;将所述N个存储页面确定为所述允许进行切换的存储页面。

可选的,在本实施例中,目标存储页面和N个存储页面可以但不限于为不允许进行切换的存储页面。可以但不限于以N=3为例并结合图3,对本申请实施例中的确定一组存储页面中允许进行切换的存储页面的过程进行解释和说明,可以但不限于适用于本申请实施例。比如:图3中的Page 00L即为上述的目标存储页面,Page 00H即为上述的3个存储页面中的一个,Page 01即为上述的3个存储页面中的一个,Page 80即为上述的3个存储页面中的一个。独立来说,Page 00L、Page 00H、Page 01和Page 80是不允许进行切换的,而将Page00L分别与Page 00H、Page 01和Page 80进行拼接得到的拼接存储页面1、拼接存储页面2和拼接存储页面3则是允许进行切换的。

在一个示范性实施例中,所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量。

可选的,在本实施例中,目标存储页面的存储容量和N个存储页面中的各个存储页面的存储容量均为相同,可以但不限于以N=3为例并结合图3,对本申请实施例中的存储页面的存储容量进行解释和说明,可以但不限于适用于本申请实施例。比如:图3中的Page(页面) 00L即为上述的目标存储页面,Page 00H即为上述的3个存储页面中的一个,Page 01即为上述的3个存储页面中的一个,Page 80即为上述的3个存储页面中的一个。Page 00L、Page 00H、Page 01和Page 80的存储容量可以但不限于均为128字节,Page 00L、Page 00H、Page 01和Page 80可以但不限于用于存储数据(data)。

在一个示范性实施例中,所述目标存储器包括以下之一:带电可擦可编程只读存储器EEPROM,闪存Flash。

在一个示范性实施例中,所述目标固件包括以下之一:微控制单元MCU、中央处理器CPU、片上系统SOC、微处理单元MPU。

可选的,在本实施例中,目标固件可以但不限于包括微控制单元MCU、中央处理器CPU(central processing unit)、片上系统SOC(System-on-a-chip)或者微处理单元MPU(Micro-Processing Unit)等等。

在一个示范性实施例中,所述目标测试任务包括光模块测试任务。

可选的,在本实施例中,光模块测试任务可以但不限于包括通过ELOAD对交换机的功能指标进行测试的任务。

可选的,在本实施例中,所述一组存储页面是基于目标协议定义的页面,所述目标测试任务是用于对基于所述目标协议实现的光模块进行测试的任务。

可选的,在本实施例中,目标协议可以但不限于包括MSA(Master ServiceAgreement,主服务协议),或者,MSA协议中的DSFP协议等等能够实现光模块进行测试的任务的协议。

在上述步骤S404提供的技术方案中,可以但不限于在目标固件的空闲存储空间中模拟出目标存储器,在目标存储器中为一组存储页面中的各个存储页面分配对应的存储空间。图5是根据本申请实施例的一种分配存储页面所对应的存储空间的示意图,如图5所示,可以但不限于在MCU(即上述的目标固件)的空闲存储空间中模拟出EEPROM(即上述的目标存储器),Page 00L即为上述的目标存储页面,Page 00H即为上述的3个存储页面中的一个,Page 01即为上述的3个存储页面中的一个,Page 80即为上述的3个存储页面中的一个。

可以但不限于通过在目标固件的固件程序中定义EEPROM中的各个存储页面的起始存储位置和大小。图6是根据本申请实施例的一种在固件中定义存储页面的示意图,结合图5和图6,可以但不限于根据Page 00L(或称为,A_ Page_00L)、Page 00H(或称为,A_PAGE_00_H)、Page 01(或称为,A_Page_01)以及Page 80(或称为,A_Page_80)的存储容量(可以但不限于为128字节),在EEPROM中为Page 00L分配的存储空间为001BH(即Page 00L的起始存储位置)至009BH,为Page 00H分配的存储空间为009BH(即Page 00H的起始存储位置)至011BH,为Page 01分配的存储空间为011BH(即Page 01的起始存储位置)至019BH,为Page80分配的存储空间为019BH(即Page 80的起始存储位置)至021BH。001BH以下的存储空间以及02FFH以上存储空间用于存储其他系统数据(Other System Data),021BH至02FFH用于存储其它用户数据(Other User Data),其中,H代表16进制。

在上述步骤S406提供的技术方案中,可以但不限于在目标固件的固件程序中设置一组参数,实现了在执行目标测试任务的过程中,对各个存储页面所对应的存储空间进行切换。通过这样的方式,极大地提升了在进行目标测试任务的过程中各个存储页面的利用效率。

在一个示范性实施例中,可以但不限于通过以下方式在目标固件的固件程序中设置一组参数:在所述固件程序中设置目标指针,其中,所述目标指针用于指向所述一组存储空间中的存储位置;在所述固件程序中设置第一变量,其中,所述第一变量用于表示在执行所述目标测试任务时接收到的目标命令所指示的页面的页面标识;在所述固件程序中设置第二变量,其中,所述第二变量用于表示在执行所述目标测试任务时接收到的所述目标命令所指示的偏移地址,所述第一变量和所述第二变量用于调整所述目标指针所指向的所述一组存储空间中的存储位置。

可选的,在本实施例中,目标指针的取值可以但不限于为curr_ptr,第一变量的取值可以但不限于为curr_page,第二变量的取值可以但不限于为curr_offset。图7是根据本申请实施例的一种设置一组参数的示意图,如图7所示,可以但不限于在目标固件的固件程序中设置curr_ptr、curr_page和curr_offset,其中,curr_ptr用于表示当前指针指向EEPROM(即上述的目标存储器)中为存储页面所分配的存储位置;curr_page用于表示当前所在页面的页面标识,范围为0至255。curr_offset可以但不限于用于表示当前编译的地址,范围为0至255。

可选的,在本实施例中,当第一变量和第二变量变化时,可以但不限于根据第一变量和第二变量动态调整目标指针所指向的位置。也就是说,完成了当前命令(即目标命令)的情况下,可以根据第一变量和第二变量的变化,将目标指针所指向的位置调整至下一个命令所对应的存储位置。图8是根据本申请实施例的一种调整目标指针的示意图一,如图8所示,在curr_offset调整为recv_value的情况下,可以但不限于更新curr_ptr。图9是根据本申请实施例的一种调整目标指针的示意图二,如图9所示,curr_page调整为A_PAGE_00_L的情况下,可以但不限于在curr_page有变化的情况下,更新curr_ptr。

在一个示范性实施例中,所述第一变量和所述第二变量均为整型变量。

在一个示范性实施例中,可以但不限于通过以下方式在固件程序中设置目标指针:在所述一组存储页面中包括目标存储页面和N个存储页面的情况下,在所述固件程序中将所述目标指针的初始值设置为所述目标存储页面对应的目标存储空间的起始地址,其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

可选的,在本实施例中,在一组存储页面中包括目标存储页面和N个存储页面的情况下,在固件程序中将目标指针的初始值设置为目标存储页面对应的目标存储空间的首地址,比如:将curr_ptr初始化为A_PAGE_00_L(即上述的目标存储页面)的首地址(即上述的目标存储页面对应的目标存储空间的起始地址)。

在一个示范性实施例中,可以但不限于通过以下方式读取单个字节:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取单个字节的第一读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第一读命令所指示的第一页面标识,所述第二变量的取值表示所述第一读命令所指示的第一偏移地址,所述第一页面标识用于标识所述一组存储页面中的第一存储页面,所述第一偏移地址用于确定所述单个字节在所述第一存储页面上的偏移地址;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第一存储空间中的第一存储位置,其中,所述第一存储空间是所述第一存储页面所对应的存储空间;读取所述目标指针所指向的所述第一存储位置中的所述单个字节。

可选的,在本实施例中,交换机主机可以但不限于通过IIC(Inter-IntegratedCircuit,集成电路总线)对ELOAD上的EEPROM(即上述的目标存储器)进行读写访问,交换机主机作为IIC MASTER(主机),ELOAD作为IIC SLAVE(从机),对EEPROM的读写对应于ELOADSLAVE发送数据和是接收数据,需要遵守IIC读写协议。对于只读一个字节的情况,ELOAD从EEPROM中读一次数据,主机就发送停止信号(即上述的目标命令)。

可选的,在本实施例中,第一存储页面可以但不限于为一组存储页面中的任意存储页面,详细来说,第一存储页面可以但不限于为目标存储页面和N个存储页面中的一个存储页面。

在一个示范性实施例中,可以但不限于通过以下方式读取连续的多个字节:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取连续M个字节的第二读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第二读命令所指示的第二页面标识,所述第二变量的取值表示所述第二读命令所指示的第二偏移地址,所述第二页面标识用于标识所述一组存储页面中的第二存储页面,所述第二偏移地址用于确定所述连续M个字节中的首个字节在所述第二存储页面上的偏移地址,M为大于或等于2的正整数;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第二存储空间中的第二存储位置,其中,所述第二存储空间是所述第二存储页面所对应的存储空间;从所述第二存储位置开始,读取M次所述目标指针所指向的存储位置中的字节,其中,在每次读取所述目标指针所指向的存储位置中的字节之后,所述目标指针所指向的存储位置被调整为所述第二存储空间中的下一个存储位置。

可选的,在本实施例中,在从EEPROM中读取连续的多个字节的情况下,在完成读取首个字节的时候,可以将目标指针所指向的存储位置调整为下一个存储位置。图10是根据本申请实施例的一种确定下一个存储位置的示意图,如图10所示,可以但不限于将curr_ptr所指向的第二存储位置的取值加1作为第二存储空间中的下一个存储位置。

可选的,在本实施例中,第二存储页面可以但不限于为一组存储页面中的任意存储页面,详细来说,第二存储页面可以但不限于为目标存储页面和N个存储页面中的一个存储页面,并且第一存储页面可以但不限于与第二存储页面相同或者不同。

在一个示范性实施例中,可以但不限于通过以下方式写入单个字节:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于写入单个字节的第一写命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第一写命令所指示的第三页面标识,所述第二变量的取值表示所述第一写命令所指示的第三偏移地址,所述第三页面标识用于标识所述一组存储页面中的第三存储页面,所述第三偏移地址用于确定所述单个字节在所述第三存储页面上的偏移地址;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第三存储空间中的第三存储位置,其中,所述第三存储空间是所述第三存储页面所对应的存储空间;将所述单个字节写入所述目标指针所指向的所述第三存储位置中。

可选的,在本实施例中,目标命令可以但不限于为将数据写入EEPROM(即上述的目标存储器)中,图11是根据本申请实施例的一种实现写操作的示意图,如图11所示,ELOAD可以但不限于将接收到的数据写入EEPROM中。

可选的,在本实施例中,对于只写入一个字节的情况,ELOAD将数据写入EEPROM中一次,主机就发送停止信号(即上述的目标命令)。图12是根据本申请实施例的一种实现写入单个字节的示意图,如图12所示,curr_offset为127,可以但不限于根据curr_page(即上述的第一变量的取值)和curr_offset(即上述的第二变量的取值),调整curr_ptr(即上述的目标指针的取值)所指向的存储位置,得到第三存储位置。ELOAD可以但不限于将接收到的数据写入到EEPROM中的A_Page_00_L(即上述的第三存储页面)所对应的存储空间(即上述的第三存储空间)中。

可选的,在本实施例中,第三存储页面可以但不限于为一组存储页面中的任意存储页面,详细来说,第二存储页面可以但不限于为目标存储页面和N个存储页面中的一个存储页面,并且第一存储页面、第三存储页面和第二存储页面可以但不限于为相同或者不同。

在一个示范性实施例中,可以但不限于通过以下方式写入连续的多个字节:在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于写入连续M个字节的第二写命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第二写命令所指示的第四页面标识,所述第二变量的取值表示所述第二写命令所指示的第四偏移地址,所述第四页面标识用于标识所述一组存储页面中的第四存储页面,所述第四偏移地址用于确定所述连续M个字节中的首个字节在所述第四存储页面上的偏移地址,M为大于或等于2的正整数;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第四存储空间中的第四存储位置,其中,所述第四存储空间是所述第四存储页面所对应的存储空间;从所述第四存储位置开始,将所述M个字节依次写入所述目标指针所指向的存储位置中,其中,在每次将所述M个字节中的一个字节写入所述目标指针所指向的存储位置中之后,所述目标指针所指向的存储位置被调整为所述第四存储空间中的下一个存储位置。

可选的,在本实施例中,对于写入连续的多个字节的情况,ELOAD需要在当次写完成后,继续将数据写下一个存储位置,直到主机发送停止信号(即上述的目标命令)结束。图13是根据本申请实施例的一种实现写入连续多个字节的示意图,如图13所示,在完成写入连续多个字节中的首个字节的情况下,可以但不限于根据curr_page(即上述的第一变量的取值)和curr_offset(即上述的第二变量的取值),调整curr_ptr(即上述的目标指针的取值)所指向的存储位置,得到第四存储位置。详细来说,可以但不限于将curr_ptr所指向的第四存储位置的取值加1作为下一个字节在第四存储空间中的存储位置(即上述的第四存储空间中的下一个存储位置)。

可选的,在本实施例中,第四存储页面可以但不限于为一组存储页面中的任意存储页面,详细来说,第四存储页面可以但不限于为目标存储页面和N个存储页面中的一个存储页面,并且第一存储页面、第二存储页面和第三存储页面以及第四存储页面可以但不限于为相同或者不同。

在一个示范性实施例中,可以但不限于通过以下方式获取一组参数中的第一变量的取值和第二变量的取值:在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于读取单个字节的所述第一读命令、且所述第一读命令所指示的所述第一偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

可选的,在本实施例中,在第一读命令所指示的第一偏移地址不是所述固件程序中已设置的偏移地址的情况下,忽略所述第一读命令,即,不触发执行以下步骤:获取所述一组参数中的第一变量的取值和第二变量的取值的步骤;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第一存储空间中的第一存储位置;读取所述目标指针所指向的所述第一存储位置中的所述单个字节。

在一个示范性实施例中,可以但不限于通过以下方式获取一组参数中的第一变量的取值和第二变量的取值:在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于读取连续M个字节的所述第二读命令、且所述第二读命令所指示的所述第二偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

可选的,在本实施例中,在第二读命令所指示的第二偏移地址不是所述固件程序中已设置的偏移地址的情况下,忽略所述第二读命令,即,不触发执行以下步骤:获取所述一组参数中的第一变量的取值和第二变量的取值;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第二存储空间中的第二存储位置;从所述第二存储位置开始,读取M次所述目标指针所指向的存储位置中的字节。

在一个示范性实施例中,可以但不限于通过以下方式获取一组参数中的第一变量的取值和第二变量的取值:在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于写入单个字节的所述第一写命令、且所述第一写命令所指示的所述第三偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

可选的,在本实施例中,在第一写命令所指示的第三偏移地址不是所述固件程序中已设置的偏移地址的情况下,忽略所述第一写命令,即,不触发执行以下步骤:获取所述一组参数中的第一变量的取值和第二变量的取值;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第三存储空间中的第三存储位置;将所述单个字节写入所述目标指针所指向的所述第三存储位置中。

可选的,在本实施例中,可以但不限于通过以下方式获取一组参数中的第一变量的取值和第二变量的取值:在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于写入连续M个字节的所述第二写命令、且所述第一写命令所指示的所述第四偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

可选的,在本实施例中,在第二写命令所指示的第四偏移地址不是所述固件程序中已设置的偏移地址的情况下,忽略所述第二写命令,即,不触发执行以下步骤:获取所述一组参数中的第一变量的取值和第二变量的取值;根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第四存储空间中的第四存储位置;从所述第四存储位置开始,将所述M个字节依次写入所述目标指针所指向的存储位置中。

为了更好的理解本申请实施例中是否执行目标命令的过程,下面结合可选的实施例,对本申请实施例中的设置读写权限的过程进行解释和说明。图14是根据本申请实施例的一种确定是否执行目标命令的示意图,如图14所示,在第一偏移地址、第二偏移地址、第三偏移地址和第四偏移地址可以但不限于为19,127,大于或者等于166并且小于或者等于189,或者200中的一个的情况下,执行目标命令。

在一个示范性实施例中,可以但不限于通过以下方式确定一组参数中的目标指针所指向的第一存储空间中的第一存储位置:在所述一组存储页面中包括目标存储页面和N个存储页面、且所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量的情况下,当所述第一偏移地址小于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第一存储空间中的所述第一存储位置确定为等于所述的目标存储页面对应的目标存储空间的起始地址与所述第一偏移地址之和;当所述第一偏移地址大于或等于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第一存储空间中的所述第一存储位置确定为等于(所述目标存储空间的起始地址+所述第一偏移地址-所述最大偏移地址);其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

可选的,在本实施例中,所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第二存储空间中的第二存储位置,包括:在所述一组存储页面中包括目标存储页面和N个存储页面、且所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量的情况下,当所述第二偏移地址小于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第二存储空间中的所述第二存储位置确定为等于所述的目标存储页面对应的目标存储空间的起始地址与所述第二偏移地址之和;当所述第二偏移地址大于或等于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第二存储空间中的所述第二存储位置确定为等于(所述目标存储空间的起始地址+所述第二偏移地址-所述最大偏移地址);其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

可选的,在本实施例中,根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第三存储空间中的第三存储位置,包括:在所述一组存储页面中包括目标存储页面和N个存储页面、且所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量的情况下,当所述第三偏移地址小于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第三存储空间中的所述第三存储位置确定为等于所述的目标存储页面对应的目标存储空间的起始地址与所述第三偏移地址之和;当所述第三偏移地址大于或等于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第三存储空间中的所述第三存储位置确定为等于(所述目标存储空间的起始地址+所述第三偏移地址-所述最大偏移地址);其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

可选的,在本实施例中,根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第四存储空间中的第四存储位置,包括:在所述一组存储页面中包括目标存储页面和N个存储页面、且所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量的情况下,当所述第四偏移地址小于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第四存储空间中的所述第四存储位置确定为等于所述的目标存储页面对应的目标存储空间的起始地址与所述第四偏移地址之和;当所述第四偏移地址大于或等于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第四存储空间中的所述第四存储位置确定为等于(所述目标存储空间的起始地址+所述第四偏移地址-所述最大偏移地址);其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

为了更好地理解本申请实施例中根据第一变量的取值和第二变量的取值,确定一组参数中的目标指针所指向的存储空间中的存储位置,下面结合可选的实施例,可以但不限于以确定一组参数中的目标指针所指向的第四存储空间中的第四存储位置为例进行解释说明,可以但不限于适用于本申请实施例。

图15是根据本申请实施例的一种确定目标指针所指向的存储空间中的存储位置的示意图,如图15所示,在curr_offset(即上述的第四偏移地址)小于128(即上述的最大偏移地址)的情况下,可以但不限于将curr_ptr(即上述的目标指针的取值)确定为等于A_Page_00_L的起始地址(即上述目标存储空间的起始地址)与curr_offset的和值。在curr_offset大于或者等于128,并且curr_page为Page_00_H的情况下,将curr_ptr确定为等于(Page_00_H的起始地址(即上述目标存储空间的起始地址)+curr_offset-128)。在curr_offset大于或者等于128,并且curr_page为Page_01的情况下,将curr_ptr确定为等于(Page_01的起始地址(即上述目标存储空间的起始地址)+curr_offset-128)。在curr_offset大于或者等于128,并且curr_page为Page_80的情况下,将curr_ptr确定为等于(Page_80的起始地址(即上述目标存储空间的起始地址)+curr_offset-128)。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

在本实施例中还提供了一种存储器模拟装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图16是根据本申请实施例的存储器模拟装置的结构框图,如图16所示,该装置包括:

第一确定模块1602,用于确定待模拟的目标存储器的一组存储页面的页面信息,其中,所述一组存储页面是目标测试任务所需使用的页面;

分配模块1604,用于根据所述一组存储页面的页面信息,在目标固件中的空闲存储空间中为所述一组存储页面中的各个存储页面分配对应的存储空间,得到分配给所述一组存储页面的一组存储空间;

设置模块1606,用于在所述目标固件的固件程序中设置一组参数,其中,所述一组参数用于在执行所述目标测试任务时对所述一组存储空间中的存储空间进行切换。

通过上述装置,由于可以在固件的空闲存储空间中,模拟出存储器,在模拟出的存储器中为测试任务所需的页面分配对应的存储空间。在进行测试的过程中,可以通过固件的固件程序中设置的参数,实现不同存储页面所对应的存储空间之间的切换。通过这样的方式,大大减少了所需模拟的存储页面的数量,进而极大地减少了上述模拟出的存储器在模拟测试工具所在的板卡上所占的空间,进而极大地减少了造成的空间上的浪费。因此,可以解决造成空间上的浪费的问题,达到减少造成的空间上的浪费的效果。

在一个示范性实施例中,所述第一确定模块,包括:

第一确定单元,用于确定所述一组存储页面中的各个存储页面的存储容量,得到一组存储容量,其中,所述一组存储空间中的各个存储空间的存储容量分别为所述一组存储页面中对应的存储页面的存储容量,所述一组存储页面的页面信息包括所述一组存储容量。

在一个示范性实施例中,所述第一确定模块,还包括:

第二确定单元,用于确定所述一组存储页面中允许进行切换的存储页面,其中,所述一组存储页面的页面信息还包括所述允许进行切换的存储页面的页面标识,所述一组参数用于在执行所述目标测试任务时对所述一组存储空间中与所述允许进行切换的存储页面对应的存储空间进行切换。

在一个示范性实施例中,所述第二确定单元,用于:

在所述一组存储页面中确定目标存储页面和N个存储页面,其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,N为大于或等于2的正整数;

将所述N个存储页面确定为所述允许进行切换的存储页面。

在一个示范性实施例中,所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量。

在一个示范性实施例中,所述设置模块,包括:

第一设置单元,用于在所述固件程序中设置目标指针,其中,所述目标指针用于指向所述一组存储空间中的存储位置;

第二设置单元,用于在所述固件程序中设置第一变量,其中,所述第一变量用于表示在执行所述目标测试任务时接收到的目标命令所指示的页面的页面标识;

第三设置单元,用于在所述固件程序中设置第二变量,其中,所述第二变量用于表示在执行所述目标测试任务时接收到的所述目标命令所指示的偏移地址,所述第一变量和所述第二变量用于调整所述目标指针所指向的所述一组存储空间中的存储位置。

在一个示范性实施例中,所述第一变量和所述第二变量均为整型变量。

在一个示范性实施例中,所述第一设置单元,用于:

在所述一组存储页面中包括目标存储页面和N个存储页面的情况下,在所述固件程序中将所述目标指针的初始值设置为所述目标存储页面对应的目标存储空间的起始地址,其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

在一个示范性实施例中,所述装置还包括:

第一获取模块,用于在所述目标固件的固件程序中设置一组参数之后,在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取单个字节的第一读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第一读命令所指示的第一页面标识,所述第二变量的取值表示所述第一读命令所指示的第一偏移地址,所述第一页面标识用于标识所述一组存储页面中的第一存储页面,所述第一偏移地址用于确定所述单个字节在所述第一存储页面上的偏移地址;

第二确定模块,用于根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第一存储空间中的第一存储位置,其中,所述第一存储空间是所述第一存储页面所对应的存储空间;

读取所述目标指针所指向的所述第一存储位置中的所述单个字节。

在一个示范性实施例中,所述装置还包括:

第二获取模块,用于在所述目标固件的固件程序中设置一组参数之后,在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于读取连续M个字节的第二读命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第二读命令所指示的第二页面标识,所述第二变量的取值表示所述第二读命令所指示的第二偏移地址,所述第二页面标识用于标识所述一组存储页面中的第二存储页面,所述第二偏移地址用于确定所述连续M个字节中的首个字节在所述第二存储页面上的偏移地址,M为大于或等于2的正整数;

第三确定模块,用于根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第二存储空间中的第二存储位置,其中,所述第二存储空间是所述第二存储页面所对应的存储空间;

读取模块,用于从所述第二存储位置开始,读取M次所述目标指针所指向的存储位置中的字节,其中,在每次读取所述目标指针所指向的存储位置中的字节之后,所述目标指针所指向的存储位置被调整为所述第二存储空间中的下一个存储位置。

在一个示范性实施例中,所述装置还包括:

第三获取模块,用于在所述目标固件的固件程序中设置一组参数之后,在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于写入单个字节的第一写命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第一写命令所指示的第三页面标识,所述第二变量的取值表示所述第一写命令所指示的第三偏移地址,所述第三页面标识用于标识所述一组存储页面中的第三存储页面,所述第三偏移地址用于确定所述单个字节在所述第三存储页面上的偏移地址;

第四确定模块,用于根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第三存储空间中的第三存储位置,其中,所述第三存储空间是所述第三存储页面所对应的存储空间;

第一写入模块,用于将所述单个字节写入所述目标指针所指向的所述第三存储位置中。

在一个示范性实施例中,所述装置还包括:

第四获取模块,用于在所述目标固件的固件程序中设置一组参数之后,在执行所述目标测试任务时接收到目标命令、且所述目标命令为用于写入连续M个字节的第二写命令的情况下,获取所述一组参数中的第一变量的取值和第二变量的取值,其中,所述第一变量的取值表示所述第二写命令所指示的第四页面标识,所述第二变量的取值表示所述第二写命令所指示的第四偏移地址,所述第四页面标识用于标识所述一组存储页面中的第四存储页面,所述第四偏移地址用于确定所述连续M个字节中的首个字节在所述第四存储页面上的偏移地址,M为大于或等于2的正整数;

第五确定模块,用于根据所述第一变量的取值和所述第二变量的取值,确定所述一组参数中的目标指针所指向的第四存储空间中的第四存储位置,其中,所述第四存储空间是所述第四存储页面所对应的存储空间;

第二写入模块,用于从所述第四存储位置开始,将所述M个字节依次写入所述目标指针所指向的存储位置中,其中,在每次将所述M个字节中的一个字节写入所述目标指针所指向的存储位置中之后,所述目标指针所指向的存储位置被调整为所述第四存储空间中的下一个存储位置。

在一个示范性实施例中,第一获取模块,包括:

第一获取单元,用于在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于读取单个字节的所述第一读命令、且所述第一读命令所指示的所述第一偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

在一个示范性实施例中,所述第二获取模块,包括:

第二获取单元,用于在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于读取连续M个字节的所述第二读命令、且所述第二读命令所指示的所述第二偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

在一个示范性实施例中,所述第三获取模块,包括:

第三获取单元,用于在执行所述目标测试任务时接收到所述目标命令、所述目标命令为用于写入单个字节的所述第一写命令、且所述第一写命令所指示的所述第三偏移地址是所述固件程序中已设置的偏移地址的情况下,获取所述一组参数中的所述第一变量的取值和所述第二变量的取值。

在一个示范性实施例中,所述第二确定模块,包括:

第三确定单元,用于在所述一组存储页面中包括目标存储页面和N个存储页面、且所述目标存储页面的存储容量和所述N个存储页面中的各个存储页面的存储容量均为相同的预设存储容量的情况下,当所述第一偏移地址小于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第一存储空间中的所述第一存储位置确定为等于所述的目标存储页面对应的目标存储空间的起始地址与所述第一偏移地址之和;

第四确定单元,用于当所述第一偏移地址大于或等于所述预设存储容量对应的最大偏移地址时,将所述目标指针所指向的所述第一存储空间中的所述第一存储位置确定为等于(所述目标存储空间的起始地址+所述第一偏移地址-所述最大偏移地址);

其中,所述目标存储页面被设置为分别与所述N个存储页面中的各个存储页面拼接成对应的拼接存储页面,得到N个拼接存储页面,所述N个存储页面为允许进行切换的存储页面,N为大于或等于2的正整数。

在一个示范性实施例中,所述目标存储器包括以下之一:带电可擦可编程只读存储器EEPROM,闪存Flash。

在一个示范性实施例中,所述目标固件包括以下之一:微控制单元MCU、中央处理器CPU、片上系统SOC、微处理单元MPU。

在一个示范性实施例中,所述目标测试任务包括光模块测试任务。

在一个示范性实施例中,所述一组存储页面是基于目标协议定义的页面,所述目标测试任务是用于对基于所述目标协议实现的光模块进行测试的任务。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请实施例,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请实施例的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

技术分类

06120115638824