DRAM的初始化方法及装置转让专利

申请号 : CN201510853758.4

文献号 : CN105513630B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 卢浩戴清海李志雄邓恩华吴方

申请人 : 深圳市江波龙电子股份有限公司

摘要 :

本发明适用于计算机技术领域,提供了DRAM的初始化方法及装置,包括:将DRAM的地址空间划分为N个块,所述N为大于1的整数;根据所述划分的结果,对所述DRAM进行坏块扫描,将扫描结果记录在预设的数据表中;根据所述数据表的记录对所述DRAM进行地址重映射,包括:将地址连续的非坏块组合成块区域,并获取所述块区域的首地址及容量大小;根据所述划分的结果,修改操作系统内核的配置文件,以对内核接收参数的空间进行扩大;将所述块区域的首地址及容量大小传递到内核,以完成所述DRAM的初始化。本发明对DRAM的地址空间进行重新映射,使得操作系统能够在存在坏块的DRAM上也得到正常运行,有效地提高了存储资源利用率。

权利要求 :

1.一种动态随机存取存储器DRAM的初始化方法,其特征在于,包括:将DRAM的地址空间划分为N个块,所述N的大小由块的大小和DRAM存储空间的大小决定,所述N为大于1的整数;

根据所述划分的结果,对所述DRAM进行坏块扫描,将扫描结果记录在预设的数据表中,以区分和记录DRAM存储空间中的坏块区域和非坏块区域;

根据所述数据表的记录对所述DRAM进行地址重映射,包括:将地址连续的非坏块组合成块区域,并获取所述块区域的首地址及容量大小;

根据所述划分的结果,修改操作系统内核的配置文件,以对内核接收参数的空间进行扩大,使所述内核默认的块数扩大至N个块;

将所述块区域的首地址及容量大小传递到内核,以完成操作系统对所述DRAM的初始化;

在所述将DRAM的地址空间划分为N个块之前,所述方法还包括:接收调整指令,根据所述调整指令调整所述N的取值;

在所述将扫描结果记录在预设的数据表中之后,所述根据所述数据表的记录对所述DRAM进行地址重映射之前,所述方法还包括:将所述数据表存储至非易失性存储器中。

2.如权利要求1所述的方法,其特征在于,所述根据所述划分的结果,对所述DRAM进行坏块扫描包括:通过预设算法对所述N个块中的每个块分别进行测试;

若测试出某个块存在至少一个错误,则将该块记录为坏块,否则将该块记录为非坏块。

3.如权利要求1所述的方法,其特征在于,所述将扫描结果记录在预设的数据表中包括:通过二值法对所述N个块中的每个块进行标记;

在所述预设的数据表中写入每个块对应的地址及标记。

4.一种动态随机存取存储器DRAM的初始化装置,其特征在于,包括:划分单元,用于将DRAM的地址空间划分为N个块,所述N的大小由块的大小和DRAM存储空间的大小决定,所述N为大于1的整数;

扫描单元,用于根据所述划分的结果,对所述DRAM进行坏块扫描,将扫描结果记录在预设的数据表中,以区分和记录DRAM存储空间中的坏块区域和非坏块区域;

映射单元,用于根据所述数据表的记录对所述DRAM进行地址重映射,包括:将地址连续的非坏块组合成块区域,并获取所述块区域的首地址及容量大小;

修改单元,用于根据所述划分的结果,修改操作系统内核的配置文件,以对内核接收参数的空间进行扩大,使所述内核默认的块数扩大至N个块;

初始化单元,用于将所述块区域的首地址及容量大小传递到内核,以完成所述DRAM的初始化;

所述装置还包括:

调整单元,用于接收调整指令,根据所述调整指令调整所述N的取值;

存储单元,用于将所述数据表存储至非易失性存储器中。

5.如权利要求4所述的装置,其特征在于,所述扫描单元包括:测试子单元,用于通过预设算法对所述N个块中的每个块分别进行测试;

记录子单元,用于若测试出某个块存在至少一个错误,则将该块记录为坏块,否则将该块记录为非坏块。

6.如权利要求4所述的装置,其特征在于,所述扫描单元包括:标记子单元,用于通过二值法对所述N个块中的每个块进行标记;

写入子单元,用于在所述预设的数据表中记录每个块对应的地址及标记。

说明书 :

DRAM的初始化方法及装置

技术领域

[0001] 本发明属于计算机技术领域,尤其涉及一种动态随机存取存储器(Dynamic Random Access Memory,DRAM)的初始化方法及装置。

背景技术

[0002] 移动操作系统启动时,在其引导装载(boot loader)的预装载(preloader)阶段,会根据配置文件来初始化内存的容量大小,并将初始化好的地址空间通过传参方式传给小内核(Little Kernel,LK)使用,即,将DRAM的物理首地址、容量大小等信息存放在DRAM的指定区域,等待小内核读取并使用。
[0003] 由于是根据配置文件来对DRAM的整个地址空间进行初始化,因此,DRAM不允许存在坏块,若DRAM的存储阵列中存在坏块,会影响移动操作系统的正常运行,这样一来,对于存在少量坏块的DRAM,就无法被使用,在经过厂商的封装测试之后,只能被当作废弃品处理,造成了资源浪费。

发明内容

[0004] 有鉴于此,本发明实施例提供了DRAM的初始化方法及装置,旨在解决现有技术中存在少量坏块的DRAM会导致移动操作系统无法正常运行的问题。
[0005] 第一方面,提供了一种动态随机存取存储器DRAM的初始化方法,包括:
[0006] 将DRAM的地址空间划分为N个块,所述N为大于1的整数;
[0007] 根据所述划分的结果,对所述DRAM进行坏块扫描,将扫描结果记录在预设的数据表中;
[0008] 根据所述数据表的记录对所述DRAM进行地址重映射,包括:将地址连续的非坏块组合成块区域,并获取所述块区域的首地址及容量大小;
[0009] 根据所述划分的结果,修改操作系统内核的配置文件,以对内核接收参数的空间进行扩大;
[0010] 将所述块区域的首地址及容量大小传递到内核,以完成所述DRAM的初始化。
[0011] 第二方面,提供了一种动态随机存取存储器DRAM的初始化装置,包括:
[0012] 划分单元,用于将DRAM的地址空间划分为N个块,所述N为大于1的整数;
[0013] 扫描单元,用于根据所述划分的结果,对所述DRAM进行坏块扫描,将扫描结果记录在预设的数据表中;
[0014] 映射单元,用于根据所述数据表的记录对所述DRAM进行地址重映射,包括:将地址连续的非坏块组合成块区域,并获取所述块区域的首地址及容量大小;
[0015] 修改单元,用于根据所述划分的结果,修改操作系统内核的配置文件,以对内核接收参数的空间进行扩大;
[0016] 初始化单元,用于将所述块区域的首地址及容量大小传递到内核,以完成所述DRAM的初始化。
[0017] 本发明实施例对DRAM的地址空间进行重新映射,提取出DRAM中不存在坏块的地址空间,并通过修改操作系统的配置文件,使得操作系统能够在存在坏块的DRAM上也得到正常运行,有效地提高了存储资源利用率。

附图说明

[0018] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0019] 图1是本发明实施例提供的DRAM的初始化方法的实现流程图;
[0020] 图2是本发明实施例提供的DRAM的初始化方法坏块扫描的实现流程图;
[0021] 图3是本发明实施例提供的DRAM的初始化方法扫描结果记录的实现流程图;
[0022] 图4是本发明另一实施例提供的DRAM的初始化方法的实现流程图;
[0023] 图5是本发明另一实施例提供的DRAM的初始化方法的实现流程图;
[0024] 图6是本发明实施例提供的DRAM的初始化装置的结构框图。

具体实施方式

[0025] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透切理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0026] 图1示出了本发明实施例提供的DRAM的初始化方法的实现流程,在本发明实施例中,DRAM的初始化,指的是操作系统在启动过程中,根据配置文件来初始化DRAM的分块情况、容量大小等相关参数,以使得在初始化完成之后,操作系统能够在DRAM上正常运行。其中,所述操作系统包括但不限于移动终端所采用的移动操作系统,例如android系统等。该方案的实现流程详述如下:
[0027] 在S101中,将DRAM的地址空间划分为N个块,所述N为大于1的整数。
[0028] 以android系统为例,在终端设备开机,android系统bootloader的preloader阶段,完成DRAM在该阶段的初始化后,先将DRAM的整个地址空间划分为N个块,最终划分出来的块数由块的大小决定,例如,每个块的容量为1M,则512M的DRAM可以划分出512个块。
[0029] 在S102中,根据所述划分的结果,对所述DRAM进行坏块扫描,将扫描结果记录在预设的数据表中。
[0030] 对DRAM进行坏块扫描,其目的是为了区分并记录DRAM存储空间中的坏块区域和非坏块区域。具体的扫描过程如图2所示:
[0031] 在S201中,通过预设算法对所述N个块中的每个块分别进行测试。
[0032] 在S202中,若测试出某个块存在至少一个错误,则将该块记录为坏块,否则将该块记录为非坏块。
[0033] 例如,利用0x55555555、0xAAAAAAAA或者随机数对DRAM进行全盘读写,又例如,利用march X这样一种有效测试DRAM故障的算法对每个块分别进行测试,只要某个块的测试结果中存在至少一个错误,就将该块记录为坏块,若某个块通过预设算法测试之后没有发现错误,则该块就被判定为非坏块。
[0034] 具体的扫描结果记录过程可以如图3所示:
[0035] 在S301中,通过二值法对所述N个块中的每个块进行标记。
[0036] 通过“0-1”二值来对坏块和非坏块进行标记,例如,将坏块标记为1,非坏块标记为0;或者,将坏块标记为0,非坏块标记为1,通过二值法来对扫描结果进行标记,能够直观便捷地区分出DRAM中的坏块和非坏块。
[0037] 在S302中,在所述预设的数据表中写入每个块对应的地址及标记。
[0038] 在预设的数据表中写入DRAM中每个块在DRAM中的地址及对应的标记,由此就可以完成对DRAM坏块情况的记录。此外,在预设的数据表中,显然也可以仅写入DRAM中的坏块对应的地址及标记,那么没有写入DRAM中的地址空间显然就是非坏块所处的地址空间;或者仅写入DRAM中的非坏块对应的地址及标记,那么没有写入DRAM中的地址空间显然就是坏块所处的地址空间。
[0039] 在S103中,根据所述数据表的记录对所述DRAM进行地址重映射,包括:将地址连续的非坏块组合成块区域,并获取所述块区域的首地址及容量大小。
[0040] 以android系统为例,在其bootloader的小内核(LK)阶段,根据数据表中记录的坏块和/或非坏块情况,对DRAM进行地址重映射,具体方式可以通过在小内核解析preloader参数的源码部分添加地址重映射函数来实现,根据数据表中的记录,将DRAM中地址空间连续的非坏块组合成一个新的块区域,并根据数据表中记录的地址信息,映射出该块区域的首地址及容量大小。
[0041] 在S104中,根据所述划分的结果,修改操作系统内核的配置文件,以对内核接收参数的空间进行扩大。
[0042] 对于android系统来说,由于内核的配置文件默认将DRAM的块数配置为8,导致内核最多只能接收8组DRAM的地址空间参数,因此,在本发明实施例中,需要将内核默认的块数扩大到与划分的块区域的数量相等。以512M的DRAM为例,划分每个块区域的大小为1M,那么DRAM的整个地址空间就被划分成了512块,则需要将内核默认的块数由8修改为512,此时,内核最多可以接收512组DRAM地址空间参数。修改的方式如下:将内核源码的平台(platform)配置文件的宏CONFIG_ARM_NR_BANKS的值修改为512,架构的配置文件的ARM_NR_BANKS的默认值修改为512,由此扩大内核接收LK参数的空间,内核才能完全获知DRAM每一个块区域的首地址和容量大小。
[0043] 在S105中,将所述块区域的首地址及容量大小传递到内核,以完成所述DRAM的初始化。
[0044] 在完成了对内核配置文件的修改之后,再将S103得到的块区域的首地址及容量大小通过传参的方式传递给内核,从而完成DRAM的初始化,由此,操作系统可以在DRAM上正常运行,有效地避免了少量坏块的存在对系统运行所带来的不良影响。
[0045] 进一步地,为了提高终端设备的开机效率,避免每次系统启动时都需要对DRAM进行坏块扫描,作为本发明的一个实施例,在所述将扫描结果记录在预设的数据表中之后,所述根据所述数据表的记录对所述DRAM进行地址重映射之前,还可以将所述数据表存储至非易失性存储器中,这样一来,就可以利用非易失性存储器掉电数据不丢失的特性,实现数据表的永久保存。其中,所述非易失性存储器,包括但不限于只读存储器(Read Only Memory,ROM),闪存(Flash)等。则相应地,如图4所示,在终端设备开机启动的过程中,bootloader的小内核阶段,会首先检测终端设备中的非易失性存储器中是否存储有数据表,如果其中并没有存储数据表,再从S101开始执行本方案的相关步骤,若其中存储了数据表,则直接从中读取出数据表,从S103开始执行本方案的相关步骤。
[0046] 通过上述方案阐述可以看出,显然,在对DRAM进行块划分的过程中,块的容量越小,划分的块数就越多,这样一来,在进行地址重映射时,对DRAM存储阵列上的空间就越能达到充分利用,因此,作为本发明的一个实施例,如图5所示,在S101之前,所述方法还包括:
[0047] S106,接收调整指令,根据所述调整指令调整所述N的取值。
[0048] 通过调整N的取值,可以改变DRAM存储空间的利用率,将N的取值调高,能够更加充分地实现对DRAM存储空间的利用,减少对有效存储资源的浪费。
[0049] 本发明实施例对DRAM的地址空间进行重新映射,提取出DRAM中不存在坏块的地址空间,并通过修改操作系统的配置文件,使得操作系统能够在存在坏块的DRAM上也得到正常运行,有效地提高了存储资源利用率。
[0050] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0051] 对应于上文实施例所述的DRAM的初始化方法,图6示出了本发明实施例提供的DRAM的初始化装置的结构框图,所述DRAM的初始化装置可以是内置于移动终端或移动终端的应用系统内的软件单元、硬件单元或者是软硬结合的单元。为了便于说明,仅示出了与本实施例相关的部分。
[0052] 参照图6,该装置包括:
[0053] 划分单元61,将DRAM的地址空间划分为N个块,所述N为大于1的整数;
[0054] 扫描单元62,根据所述划分的结果,对所述DRAM进行坏块扫描,将扫描结果记录在预设的数据表中;
[0055] 映射单元63,根据所述数据表的记录对所述DRAM进行地址重映射,包括:将地址连续的非坏块组合成块区域,并获取所述块区域的首地址及容量大小;
[0056] 修改单元64,根据所述划分的结果,修改操作系统内核的配置文件,以对内核接收参数的空间进行扩大;
[0057] 初始化单元65,将所述块区域的首地址及容量大小传递到内核,以完成所述DRAM的初始化。
[0058] 可选地,所述装置还包括:
[0059] 存储单元,将所述数据表存储至非易失性存储器中。
[0060] 可选地,所述装置还包括:
[0061] 调整单元,接收调整指令,根据所述调整指令调整所述N的取值。
[0062] 可选地,所述扫描单元62包括:
[0063] 测试子单元,通过预设算法对所述N个块中的每个块分别进行测试;
[0064] 记录子单元,若测试出某个块存在至少一个错误,则将该块记录为坏块,否则将该块记录为非坏块。
[0065] 可选地,所述扫描单元62包括:
[0066] 标记子单元,通过二值法对所述N个块中的每个块进行标记;
[0067] 写入子单元,在所述预设的数据表中记录每个块对应的地址及标记。
[0068] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0069] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0070] 在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0071] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0072] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0073] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0074] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。
[0075] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。