自动修复DDR翻转的方法、移动终端和存储介质与流程

文档序号:16692822发布日期:2019-01-22 19:05阅读:1295来源:国知局
自动修复DDR翻转的方法、移动终端和存储介质与流程

本申请涉及移动通讯技术领域,特别涉及一种自动规避ddr翻转的方法、移动终端和存储介质。



背景技术:

ddr全称是ddrsdram(doubledataratesdram,双倍速率同步动态随机存储器),具有双倍速率传输数据的特性,是现有市场上的主流内存规范,被广泛应用于各大芯片组厂商的主流产品。现有的ddr在使用过程中,如果出现ddr翻转情况,会导致当前正在运行的程序崩溃或者业务流程出错,使得用户的工作成果毁于一旦。事后,用户只能通过更换ddr避免再次发生程序崩溃或业务流程出错,无法对出现翻转的ddr进行修复。



技术实现要素:

本申请的主要目的为提供自动规避ddr翻转的方法、移动终端和存储介质,通过检测、识别ddr翻转的物理内存地址,将其记录并申请为预留内存,使其无法被系统或应用程序访问,从而实现自动修复ddr翻转。

为实现上述目的,本申请提供了一种自动修复ddr翻转的方法包括:

监测当前系统及应用程序的运行状态是否正常;

若不正常,判断ram是否存在ddr翻转;

若存在,获取所述ddr翻转的第一物理内存地址;

将所述第一物理内存地址写入节点,所述节点存在于rom;

重启系统,读取所述节点内的所述第一物理内存地址;

根据预设规则将包含所述第一物理内存地址的指定区域,申请为预留内存,所述预留内存无法被访问。

进一步的,所述判断ram是否存在ddr翻转的步骤,包括:

加载ddr测试软件;

输入检测参数到所述ddr测试软件;

根据所述检测参数运行所述ddr测试软件,得到检测结果;

判断所述检测结果是否输出错误信息,所述错误信息包括所述ddr翻转的第一物理内存地址;

若输出,判定所述ram存在ddr翻转;

若不输出,判定所述ram不存在ddr翻转。

进一步的,所述根据预设规则将包含所述第一物理内存地址的指定区域,申请为预留内存的步骤之前,包括:

检测所述ram当前的第一可用内存;

判断所述第一可用内存是否小于所述预留内存;

若小于,输出第一报警信息,并仅保持系统运行。

进一步的,所述判断所述第一可用内存是否小于所述预留内存的步骤之后,包括:

若大于,计算所述第一可用内存与所述预留内存的内存差;

判断所述内存差是否小于最大应用内存,所述最大应用内存为应用运行历史的最大内存;

若小于,输出第二报警信息,并禁止运行非必需应用,所述非必需应用由用户预先设定。

进一步的,所述判断所述内存差是否小于最大应用内存的步骤之前,包括:

实时监测所述ram的应用运行内存,形成历史记录;

根据预设频率,从所述历史记录中选择预设时间段内具有最大值的应用运行内存,设置为所述最大应用内存。

进一步的,所述根据预设规则将包含所述第一物理内存地址的指定区域,申请为预留内存的步骤之后,包括:

实时监测所述ram当前的第二可用内存;

判断所述第二可用内存是否小于预设提醒内存,所述预设提醒内存由用户预先设定;

若小于,获取所述ram的型号;

根据所述ram的型号搜索相应的商品信息,所述商品信息包括所述ram的购买链接;

输出所述商品信息到显示界面。

进一步的,所述监测当前系统及应用程序的运行状态是否正常的步骤之前,包括:

判断系统是否正常启动;

若是,读取所述节点,判断所述节点内部是否存在第二物理内存地址,所述第二物理内存地址为预先检测到的ddr翻转的第二物理内存地址;

若存在,根据预设规则将包含所述第二物理内存地址的指定区域,申请为预留内存,所述预留内存无法被访问。

本申请还提供一种移动终端,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。

进一步的,所述移动终端还包括显示屏,所述显示屏用于显示所述判断ram是否存在ddr翻转的结果。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。

本申请中提供的自动规避ddr翻转的方法、移动终端和存储介质,具有以下有益效果:通过检测获得ddr翻转的物理内存地址后,将其记录在节点内,并将物理内存地址申请为预留内存,使其无法被系统或应用程序访问,从而实现自动修复ddr翻转。

附图说明

图1是本申请一实施例中自动规避ddr翻转的方法的步骤示意图;

图2是本申请一实施例中自动规避ddr翻转的方法的整体流程示意图;

图3是本申请一实施例的移动终端的结构示意框图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,本申请一实施例中提供了一种自动修复ddr翻转的方法,,包括:

s1:监测当前系统及应用程序的运行状态是否正常;

s2:若不正常,判断ram是否存在ddr翻转;

s3:若存在,获取所述ddr翻转的第一物理内存地址;

s4:将所述第一物理内存地址写入节点,所述节点存在于rom;

s5:重启系统,读取所述节点内的所述第一物理内存地址;

s6:根据预设规则将包含所述第一物理内存地址的指定区域,申请为预留内存,所述预留内存无法被访问。

移动终端包括但不限于手机,本实施中以手机为例进行说明。手机开机运行后,自动对应系统以及应用程序的运行状态进行监测。如果手机监测到系统或应用程序发生崩溃或出错,那么手机需要对系统或应用程序发生崩溃或出错的原因进行查询。手机自动加载ddr测试软件,例如开源的memtester,高通的qmesa_64等预先存在在手机内部的测试软件。手机通过ddr测试软件对设定的ram进行内存压力测试,ddr测试软件会输出相应的检测事项的检测数据。手机根据ddr测试软件的检测结果可以直接判断当前ddr是否存在翻转。如果ddr当前存在翻转,则ddr测试软件的会输出检测到异常的检测事项,并输出相应的出现ddr翻转的第一物理内存地址,比如,输出:workbuf@phys=0x173162748,shadowbuf@phys=0x173162748。手机通过ddr测试软件的检测结果得到第一物理内存地址后,将第一物理内存地址写入节点内,节点存在于rom,在系统重启后会被保存下来。申请预留内存必须在系统刚开始启动时才能实施,因为系统及应用程序在运行过程中已经将ram内的运行内存占据,无法执行申请预留内存,所以必须重启系统。手机重新开机后,在linuxkernel,即系统内核刚启动时,会先为驱动预留部分内存,此时添加坏地址预存机制,即读取节点,并获得节点内的预先检测到的第一物理内存地址。手机根据预设规则,将包含第一物理内存地址的指定区域,申请为预留内存。比如,将第一物理内存地址开始的4k内存,或者该地址前后2k的物理内存,或者该地址之前的4k的物理内存申请为预留内存。因为内存的基本单位为4k,而ddr翻转的第一物理内存地址在4k的内存里面,但不能对4k的内存进行分割,否则会导致ram产生内存碎片,可用率降低。申请预留内存后,预留内存被视为已使用内存,linux的内核不会为预留内存建立页表。而linux系统中分为用户内存和物理内存,其中用户内存为虚拟内存,与物理内存通过页表进行映射。由于预留内存没有页表,用户内存无法映射到物理内存,因此系统或应用程序在运行时无法访问到预留内存,即出现ddr翻转的区域,不会出现崩溃或运行错误,实现了修复ddr翻转。

进一步的,所述判断ram是否存在ddr翻转的步骤,包括:

s201:加载ddr测试软件;

s202:输入检测参数到所述ddr测试软件;

s203:根据所述检测参数运行所述ddr测试软件,得到检测结果;

s204:判断所述检测结果是否输出错误信息,所述错误信息包括所述ddr翻转的第一物理内存地址;

s205:若输出,判定所述ram存在ddr翻转;

s206:若不输出,判定所述ram不存在ddr翻转

本实施例中,手机对ram当前的运行状态进行检测时,需要加载相应的ddr测试软件。本实施例中以ddr测试软件为开源的memtester为例进行说明。memtester用于进行内存的压力测试,主要是捕捉内存错误和已知处于很高或者很低的坏位,测试的主要项目有随机值、异或比较、减法、乘法、除法、与或运算等。在开始使用memtester开始测试前,需要对先设置检测参数,检测参数包括给定测试内存的大小和次数。手机根据预设,将检测参数自动输入到memtester相应的选项内,然后运行该测试软件。memtester根据检测参数自动对手机系统现有的内存进行随机值、异或比较、减法、乘法、除法、与或运算等项目的测试。预设次数的测试后,memtester将各个项目的测试结果输出到显示界面。如果各项目的输出结果均为“ok”,则表示给定测试内存正常。如果检测到其中一个或多个项目不正常,则会输出错误信息,错误信息包括ddr翻转的第一物理内存地址,比如:workbuf@phys=0x173162748,shadowbuf@phys=0x173162748。手机根据输出的测试结果可以直接判断当前ram的运行状态,即是否出现翻转。

进一步的,参照图2,所述根据预设规则将包含所述第一物理内存地址的指定区域,申请为预留内存的步骤之前,包括:

s7:检测所述ram当前的第一可用内存;

s8:判断所述第一可用内存是否小于所述预留内存;

s9:若小于,输出第一报警信息,并仅保持系统运行。

本实施例中,手机在申请预留内存之前,需要对ram当前的第一可用内存进行检测,该第一可用内存为总的可用内存减去当前系统的正常运行内存。手机将检测得到的第一可用内存与需要申请的预留内存进行比较,判断第一可用内存是否小于预留内存。如果第一可用内存小于预留内存,则说明在完成申请预留内存后,剩余的内存无法供系统正常运行,会导致系统的运行速度下降。因此,手机输出第一报警信息,比如,提示用户当前可用内存过低,需要更换ram。第一警报信息可以为文字信息,直接显示在手机屏幕;也可以是语音信息,通过手机的扬声器进行播放;还可以是通过闪光灯闪烁进行警示。具体选择哪种形式输出第一警报信息,可以由用户自己设定。同时,不再启动其他应用,仅保持系统运行,避免启动其他应用后使得系统无法运行。

进一步的,判断所述第一可用内存是否小于所述预留内存的步骤之后,包括:

s10:若大于,计算所述可用内存与所述预留内存的内存差;

s11:判断所述内存差是否小于最大应用内存,所述最大应用内存为应用运行历史的最大内存;

s12:若小于,输出第二报警信息,并禁止运行非必需应用,所述非必需应用由用户预先设定。

本实施例中,手机将检测得到的第一可用内存与需要申请的预留内存进行比较,判断第一可用内存是否小于预留内存。若果第一可用内存大于预留内存,则说明至少能够保证系统正常运行。手机需要计算可用内存与预留内存之间的内存差,该内存差为申请预留内存后ram中供应用程序运行的内存。手机内部记录有应用运行历史的最大内存,即手机的使用历史中需要供给应用运行的最大内存。如果内存差小于最大应用内存,则说明手机在使用过程中有可能因为应用程序的运行内存不足,占用系统的运行内存,导致系统和应用程序的运行速度下降,甚至卡顿。因此,手机输出相应的第二报警信息,例如,提示用户当前有可能因为打开应用过多导致手机卡顿。第二报警信息的输出方式与上述步骤相同,可以是文字、语音或闪光灯闪烁。同时,自动禁止非必需应用的启动、运行。非必需应用需要用户预先进行选择、设定,以便在后期实施时无需多次重复选择、设置。

进一步的,判断所述内存差是否小于最大应用内存的步骤之前,包括:

s13:实时监测所述ram的应用运行内存,形成历史记录;

s14:根据预设频率,从所述历史记录中选择预设时间段内具有最大值的应用运行内存,设置为所述最大应用内存。

本实施例中,应用运行内存为同一时间中,所有应用程序所占的运行内存和总和。手机在开机后,实时监测ram中同一时间中所有应用程序正常运行时所需的应用运行内存,并形成历史记录。根据历史记录,手机可以直接得到预设时间段内的具有最大值的应用运行内存,并根据预设频率,将具有最大值的应用运行内存设置为最大应用内存。比如,用户预先设置每周重置一次最大应用内存。那么,手机根据设置,会在重置日之前的一周的历史记录中,挑选最大值的应用运行内存作为最大应用内存。预设频率和预设时间段可以由用户自己设定,因为用户在不同的时间段,手机的应用运行内存可能会有所变化,重置的频率也有所不同。

进一步的,根据预设规则将包含所述第一物理内存地址的指定区域,申请为预留内存的步骤之后,包括:

s15:实时监测所述ram当前的第二可用内存;

s16:判断所述第二可用内存是否小于预设提醒内存,所述预设提醒内存由用户预先设定;

s17:若小于,获取所述ram的型号;

s18:根据所述ram的型号搜索相应的商品信息,所述商品信息包括所述ram的购买链接;

s19:输出所述商品信息到显示界面。

本实施例中,手机内预先设置有预设提醒内存,该预设提醒内存用于与ram当前的可用内存进行比较,便于实施相应的提醒动作。手机在申请预留内存,并且正常运行系统和相应的应用程序后,实时监测ram当前的第二可用内存。第二可用内存为ram当前除去系统和应用程序正常运行所需的运行内存以及预留内存后剩下的可用内存。然后,将第二可用内存与预设提醒内存进行比较,如果第二可用内存小于预设提醒内存,则说明手机可能会有可用内存不足的情况出现。因此,根据预先的设定,手机可以从配置记录直接获取ram的型号,并通过购物应用或者搜索应用,得到相应的商品信息,比如ram的购买链接,ram当前不同规格的价格,提供更换服务的服务场所地址及联系方式等。并且可以根据购物软件中对该商品的评价,选择输出好评较高的商品信息到显示界面,以便用户及时更换ram,避免因为可用内存不足导致系统或应用程序无法正常运行。商品信息的输出方式与上述步骤相同,可以是文字、语音,根据信息的类型通过相应的装置进行输出。

进一步的,所述监测当前系统及应用程序的运行状态是否正常的步骤之前,包括:

s20:判断系统是否正常启动;

s21:若是,读取所述节点,判断所述节点内部是否存在第二物理内存地址,所述第二物理内存地址为预先检测到的ddr翻转的第二物理内存地址;

s22:若存在,根据预设规则将包含所述第二物理内存地址的指定区域,申请为预留内存,所述预留内存无法被访问。

本实施例中,手机在每次系统正常启动后,即正常开机后,都需要先对节点进行读取,判断节点内部是否存在第二物理内存地址。因为对应ddr翻转的预留内存为运行内存,存在于ram中,在每次手机关机后都会被撤销,没法被保存。而节点设置在rom中,能够实现断电保存,因此,将出现ddr翻转的第二物理内存地址以文本信息写入节点后,便于下次开机后直接根据第二物理内存地址申请预留内存,而不是在等到系统或者应用程序出现出错或者崩溃后,再进行检测、重启,能够有效提高效率。手机根据预设规则,将包含第二物理内存地址的指定区域,申请为预留内存。比如,将第二物理内存地址开始的4k内存,或者该地址前后2k的物理内存,或者该地址之前的4k的物理内存申请为预留内存。因为内存的基本单位为4k,而ddr翻转的第二物理内存地址在4k的内存里面,但不能对4k的内存进行分割,否则会导致ddr损坏。由于预留内存没有页表,因此用户内存无法映射到出现ddr翻转的第二物理内存,从而不会出现系统或应用程序运行错误。

本实施例中的一种自动修复ddr翻转的方法,通过检测获得ddr翻转的物理内存地址后,将其记录在节点内,并将物理内存地址申请为预留内存,使其无法被系统或应用程序访问,从而实现自动修复ddr翻转。

参照图3,本申请实施例中还提供一种移动终端,该移动终端可以是服务器,其内部结构可以如图3所示。该移动终端包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该移动终端设计的处理器用于提供计算和控制能力。该移动终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该移动终端的数据库用于存储测试数据表等数据。该移动终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种自动修复ddr的翻转方法。

上述处理器执行上述自动修复ddr翻转的方法的步骤:

监测当前系统及应用程序的运行状态是否正常;

若不正常,判断ram是否存在ddr翻转;

若存在,获取所述ddr翻转的物理内存地址;

将所述物理内存地址写入节点内,所述节点存在于rom;

重启系统,读取所述节点内的物理内存地址;

根据预设规则将包含所述物理内存地址的指定区域,申请为预留内存,所述预留内存无法被访问。

进一步的,移动终端还包括显示屏,所述显示屏用于显示所述判断ram是否存在ddr翻转的结果。

移动终端包括但不限于手机,本实施例以手机为例。手机在上述步骤中,自动载入ddr测试软件对ram进行测试,以此判断ram是否存在ddr翻转,并将相应的检测事项的检测结果输出在手机屏幕,即移动终端的显示器。另外,手机在后续动作还输出了相应的第一报警信息、第二报警信息和商品信息等以文字或图片显示的信息,均是输出在手机屏幕上,以便用户进行查看。

本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的移动终端的限定。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种自动修复ddr翻转的方法,具体为:

监测当前系统及应用程序的运行状态是否正常;

若不正常,判断ram是否存在ddr翻转;

若存在,获取所述ddr翻转的物理内存地址;

将所述物理内存地址写入节点内,所述节点存在于rom;

重启系统,读取所述节点内的物理内存地址;

根据预设规则将包含所述物理内存地址的指定区域,申请为预留内存,所述预留内存无法被访问。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram通过多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1