存储空间映射方法及装置的制作方法

文档序号:6371803阅读:151来源:国知局
专利名称:存储空间映射方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种存储空间映射方法及装置。
背景技术
在一个计算机系统中,对存储器的容量、速度和价格这三个基本性能指标都有一定的要求。然而,这三个性能指标通常是互相矛盾的,仅仅采用一种技术组成单一的存储器无法同时满足这三个性能指标。因此,在现有技术中,通过采用由多级存储器组成的存储体系,把几种存储技术结合起来,来较好地解决存储器大容量、高速度和低成本这三者之间的矛盾。例如,在目前数字信号处理(Digital Signal Processing,DSP)嵌入式芯片开发中,通常都采用多级存储的方式将开发代码布署到不同级别的内存上,从而充分发挥各级内存在速度、容量、成本方面的优势,达到最优性价比。
目前的多级存储方式是通过在源码中增加节区属性的方式实现。具体地,预先定义一些节区,在用户编写的源码中,分别在各变量和函数前增加节区属性,即为各变量和函数配置一个节区,建立各变量和函数与节区的映射关系,并通过修改链接脚本建立节区与指定内存的映射关系,从而确定了源码中所涉及的各变量和函数在内存中的存储位置。由于目前的多级存储方式实现过程中,需分别对每一个符号(变量或函数)进行设置,复杂度较高,而且在现有的嵌入式产品中,通常一套源码中的符号数以万计,因此导致开发工作量和维护成本极为庞大。

发明内容
本发明实施例提供一种存储空间映射方法及装置,用以克服现有技术中需为源码中的每一个变量或函数分别配置存储空间映射关系的缺陷,降低多级存储方式实现的复杂度,缩减开发工作量和维护成本。—方面,本发明实施例提供一种存储空间映射方法,包括对源码进行解析,以获取所述源码中各函数和/或变量的归属文件和/或归属文件夹;获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系;根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间。一方面,本发明实施例提供一种存储空间映射装置,包括源码解析模块,用于对源码进行解析,以获取所述源码中各函数和/或变量的归属文件和/或归属文件夹;第一映射模块,用于获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系;第二映射模块,用于根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间。根据本发明实施例的存储空间映射方法及装置,通过对源码进行解析,获取源码中各函数和/或变量与文件或文件夹的归属关系,并根据为文件或文件夹配置的存储区域标识,建立归属于相应文件或文件夹内的函数和变量与存储区域标识的映射关系。因此,无需分别针对源码中的大量函数和变量进行单独配置,仅需以文件或文件夹进行配置,即可自动将所有函数和变量映射至 指定的存储区域标识,从而映射至指定的存储空间,降低了多级存储方式实现的复杂度,缩减了开发工作量,并且易于修改,降低了维护成本。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I为本发明一个实施例的存储空间映射方法的流程示意图;图2为一种多级存储系统的存储结构示意图;图3为一个工程结构的示例;图4为本发明一个实施例的存储空间映射装置的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一图I为本发明一个实施例的存储空间映射方法的流程示意图。具体地,如图I所示,该存储空间映射方法包括以下步骤步骤101,对源码进行解析,以获取所述源码中各函数和/或变量的归属文件和/或归属文件夹;步骤102,获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系;步骤103,根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间。具体地,以应用本实施例的存储空间映射方法,将工程文件映射存储至多级存储系统的存储空间这一应用场景为例,对本实施例的存储空间映射方法进行详细说明。该应用场景仅用作本发明技术方案的一个示例,而非对本发明的限制,本领域的技术人员能够理解,本发明的技术方案适用于任意需针对文件或文件夹中的函数和变量进行批量配置的应用场景,例如内联函数(inline)的调用等。图2为一种多级存储系统的存储结构示意图。如图2所示,该多级存储系统例如包括LI层存储空间、L2层存储空间和双倍速率同步动态随机存储器(Double Data RateSynchronous Dynamic Random Access Memory,简称为 DDR)。图 3 为一个工程结构的不例,如图3所示,该工程包括目录(即文件夹)hello I和目录hello 2,目录hello I中保存着文件hello I. c,目录hello 2中保存着文件hello 2. C。下面结合图2和图3进行说明。首先定义一些存储区域标识,这些存储区域标识并不指定存储区域中的实际存储空间。例如采取如下方式定义存储区域标识“#define Ll_DATA_attribute_(section ( “· 11. data”))” ;“#define Ll_TEXT_attribute_(section ( “· 12. text”)),,;“#define L2_DATA_attribute_(section ( “· 11. data”)),,;“#define L2_TEXT_attribute_(section ( “· 12. text”)),,;通过上述语句,定义了四个存储区域标识“L1_DATA”、“L1_TEXT”、“L2_DATA”、·“L2T_EXT”,其中,“L1_DATA”用于表示LI层中用于存储变量的存储空间,“L1_TEXT”用于表示LI层中用于存储函数的存储空间,“L2_DATA”用于表示L2层中用于存储变量的存储空间,“L2_TEXT”用于表示L2层中用于存储函数的存储空间。接下来,在文件(或文件夹)层面配置存储区域标识,即为各文件(或文件夹)分配一个存储区域标识,建立起文件(或文件夹)与存储区域标识的映射关系。例如,为文件hello I. c 配置 “L1_DATA” 和 “L1_TEXT”,为 hello 2. c 配置 “L2_DATA” 和 “L2_TEXT”。读取用户编写的工程源码,通过词法和语法分析,获取到源码中的各函数和变量,以及各函数或变量的归属文件路径(即各函数或变量归属于哪个文件或哪个文件夹)。例如,读取工程源码后,获取工程源码中的两个源码文件hello I. c和hello 2. Co其中,hello I. c的源码文件例如为
#include “hello.h”int a;irit b;int funa ()
{
}
int funb ()
{
}
int func ()
{}hello 2. c的源码文件例如为
#include “hello.h”int x;int y;
int funx ()
{
>
int funy ()
{
>
int funz ()
{
>之后,根据各函数或变量所归属的文件(文件夹)对应的存储区域标识,建立各函数或变量与存储区域标识的映射关系。结合上述hellol. c和hello 2. c的示例,由于变量a、变量b、函数funa()、函数funb()和函数func()归属于文件hellol. c,因此,为变量a和变量b配置存储区域标识“L1_DATA”,为函数funa()、函数funb()和函数func()配置存储区域标识“L1_TEXT” ;由于变量X、变量y、函数funx()、函数funy()和函数funz()归属于文件hello2. c,因此,为变量X和变量J配置存储区域标识“L2_DATA”,为函数funx O、函数funy O和函数funz O配置存储区域标识“L2_TEXT”。完成上述函数或变量与存储区域标识的映射后,标识有函数或变量与存储区域标识的映射关系的hello I. c的代码如下所示
#include “hello.h”
LI DATA int aLI—DATA int b;
LI TEXT int funa ()
{
}
LI TEXT int funb ()
{
}
Ll TEXT int func ()
{
}标识有函数或变量与存储区域标识的映射关系的hello 2. c的代码如下所示
#inciude “hello.h”
L2 DATA int x;
L2—DATA int y;
L2 TEXT int ilinx ()
{
}
L2 TEXT int funy ()
{
}
L2 TEXT int funz ()
{
}将上述标识有函数或变量与存储区域标识的映射关系的代码编译成可重定向文件,并通过修改链接脚本,建立存储区域标识与指定存储空间的映射关系。其中,编译为可重定向文件及修改链接脚本的方法与现有技术相同,故此处不再赘述。例如将链接脚本修改如下
.11 .text
{
=ALiGN (16);
*(.i I .text)
=ALIGN (16);
}>L I TEXT seg: LI TEXT phdr .11. data:
I
=ALIGN (16);
%Π · data)
=ALIGN (16);
}>L I DATA seg: LI DATA phdr .12. text
I
=ALIGN (16);
*(.i2.text)
=ALIGN (16);
}>L2TEXT seii L2TEXT phdr
J_ W「
.12. data:
I
=ALIGN (16);
*(.12. data)
=ALIGN (16);
}>L2DATA seg: L2DATA phdr
J_ C I 其中,LlTEXT_seg、LlDATA_seg、L2TEXT_seg和 L2DATA_seg 分别为指定的存储空间。通过将可重定向文件与链接脚本一起链接,生成镜像文件,此时,确定了工程代码中各变量和函数部署在多级存储系统中的存储空间。各函数和变量到所述存储空间的映射既可以为函数和变量映射到单级存储空间中的具体存储地址的映射,也可以为函数和变量到多级存储空间中某一级存储空间的映射。其中,生成镜像文件的方法与现有技术相同,故此处不再赘述。例如,通过上述示例实现以下部署将变量a和变量b部署在指定的存储空间LlDATA_seg中;将函数funa()、函数funb O和函数func O部署在指定的存储空间LlTEXT_seg中;将变量x和变量y部署在指定的存储空间L2DATA_seg中;将函数funx()、函数funy()和函数funz()部署在指定的存储空间L2TEXT_seg中。根据上述实施例的存储空间映射方法,通过对源码进行解析,获取源码中各函数和/或变量与文件或文件夹的归属关系,并根据为文件或文件夹配置的存储区域标识,建立归属于相应文件或文件夹内的函数和变量与存储区域标识的映射关系。因此,无需分别针对源码中的大量函数和变量 进行单独配置,仅需以文件或文件夹进行配置,即可自动将所有函数和变量映射至指定的存储区域标识,从而映射至指定的存储空间。降低了多级存储方式实现的复杂度,缩减了开发工作量,并且易于修改,降低了维护成本。实施例二在上述实施例一的基础上,所述获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系具体包括解析配置文件,根据预先建立的配置文件以及所述各函数和/或变量的归属文件和/或归属文件夹,建立所述各函数和/或变量与存储区域标识的映射关系,其中所述配置文件包括所述归属文件和/或归属文件夹与所述存储区域标识映射关系。具体地,建立一个配置文件,在配置文件中建立并存储文件(或文件夹)与存储区域标识的映射关系。由于存储区域标识的配置粒度在文件级以上,每个文件(或文件夹)中同时包含函数和变量,因此在配置文件中分别针对文件中的变量和函数进行配置。例如,建立如下配置文件
<item name="./test/ hello I/hello I .c " CodeSect.ion=”L.l—TEXT.”TextSection="Ll_DATA"/><item name="./test/hello2/hello2.c" CodeSection=!,L2_TEXT"TextSection=,,L2_DATA!,/>其中,〈file〉代表文件级别的配置。上述配置文件为文件hello l.c中的变量配置了存储区域标识L1_DATA ;为文件hello I. c中的函数配置了存储区域标识L1_TEXT ;为文件hello 2. c中的变量配置了存储区域标识L2_DATA ;为文件hello 2. c中的函数配置了存储区域标识L2_TEXT。建立上述配置文件后,当需进行存储空间映射时,通过解析配置文件来获取文件(或文件夹)与存储区域标识的映射关系,并结合通过解析源码获取的函数和/或变量与文件(或文件夹)的归属关系,即可建立各函数和/或变量与存储区域标识的映射关系。进一步地,所述配置文件还包括所述归属和/或所述归属文件夹中的指定函数和/或变量与存储区域标识的映射关系,其中所述指定函数和/或变量对应的存储区域标识,与所述指定函数和/或变量的归属文件和/或归属文件夹对应的存储区域标识不同;相应地,所述根据预先建立的配置文件以及所述各函数和/或变量的归属文件和/或归属文件夹,建立所述各函数和/或变量与存储区域标识的映射关系,具体包括根据所述配置文件中,所述指定函数和/或变量对应的存储区域标识,建立所述指定函数和/或变量与存储区域标识的映射关系;根据所述配置文件中,所述归属文件和/或所述归属文件夹对应的存储区域标识,建立其它各函数和/或变量与存储区 域标识的映射关系,其中所述其它各函数和/或变量为所述归属文件和/或所述归属文件夹中,除所述指定函数和/或变量的函数和/或变量。其中,指定函数和/或变量,可以为归属文件和/或归属文件夹中的任意函数和/或变量。更为具体地,配置文件中可进行不同粒度的配置,例如可同时对目录(即文件夹)、文件、函数和变量中的任意两个或两个以上级别进行配置。当存在两个或两个以上级别的配置时,粒度越小的优先级越高。例如,建立如下配置文件
w<folder>〈itemname=" ./test/hello I/"CodeSection="LI TEXT"TextSection="L 〗DATA”/〉</folder><file>
<item naine="./t:est/he]]o2/hello2.c" CodeSection=丨 2—「EXT”TextSection="L2_DATA7>
</fiie> <var> 〈item name="b" Section="L2_DATA'V> </var> <func> 〈item name="funy" Section="LI TEXT"^ </func>”其中,〈folder〉代表目录(方件夹)级别的配置,〈file〉代表文件级别的配置,<var>代表变量级别的配置,<func>代表函数级别的配置。上述配置文件为目录hello I中的变量配置了存储区域标识L1_DATA;为目录hello I中的函数配置了存储区域标识Ll_TEXT ;为文件hello 2. c中的变量配置了存储区域标识L2D_ATA;为文件hello 2. c中的函数配置了存储区域标识L2TEXT ;为变量b配置了存储区域标识L2_DATA ;为函数funy配置了存储区域标识L1_TEXT。在根据上述配置文件建立函数和变量与存储区域标识的映射关系时,例如根据优先级由高至低的顺序进行映射。由于粒度越小的优先级越高,因此首先根据配置文件中指定的变量b和函数funy进行配置,即建立文件hello I. c中的变量b与存储区域标识L2_DATA的映射关系,建立文件hello 2. c中的函数funy与存储区域标识L1_TEXT的映射关系。接下来,根据配置文件中的文件级配置建立相应函数和变量与存储区域标识的映射关系,但此时不对已建立映射关系的变量和函数的映射关系进行修改。结合上述示例,虽然为hello2. c中的函数配置了存储区域标识L2_TEXT,但由于配置文件中还为函数funy配置了存储区域标识L1_TEXT,虽然函数funy归属于文件hello 2. c,仍将函数funy映射至存储区域标识L1_TEXT,而将文件hello 2. c中的除函数funy之外的其它函数均映射至存储区域标识L2_TEXT。
由于目录hello I中保存着文件hello I. C,因此为目录hello I的如上配置相当于为文件hello I. c的配置,即将文件hello I. c中的变量映射至存储区域标识L1D_ATA ;将文件hello I. c中的函数映射至存储区域标识L1_TEXT。此外,若目录hello I中还保存着文件hello 3. c,且未在配置文件中对文件hello3. c进行单独配置,贝U对目录hello I同样适用于文件hello 3. c ;若对文件hello3. c进行单独配置,则根据对文件hello 3. c的单独配置建立文件hello 3. c中的函数和变量与存储区域标识的映射关系。根据上述实施例的存储空间映射方法,通过在配置文件中进行不同粒度的存储区域标识配置,使得函数和变量与存储空间的映射更为灵活和多样。进一步地,建立所述配置文件还包括在所述配置文件中,设置缺省存储区域标识;相应地,若在所述配置文件中为部分所述归属文件和/或所述归属文件夹分配所述存储区域标识,则所述根据所述配置文件以及所述函数和/或变量的归属文件和/或归属文件夹,建立所述函数和/或变量与存储区域标识的映射关系还包括为所述源码中,归属于未分配有存储区域标识的文件和/或文件夹的函数和/或变量,建立与所述缺省存储区域标识的映射关系。例如,在配置文件中例如采取如下方式设置缺省存储区域标识〈default〉〈item CodeSection= “DDR_TEXT” TextSection= “DDR_DATA”/>〈/default〉通过上述配置,将存储区域标识DDR_TEXT设置为函数的缺省存储区域标识,将存储区域标识DDR_DATA设置为变量的缺省存储区域标识。若图3所示的目录hello 2中还包括文件hello 4. c,由于配置文件中仅配置了文件hello2. c对应的存储区域标识,而未针对目录hello 2进行配置,也未配置文件hello4. c对应的存储区域标识,则当解析配置文件,并根据配置文件建立源码中各变量和函数与存储区域标识的映射关系时,建立文件hello 4. c中的函数与存储区域标识DDR_TEXT的映射关系,并建立文件hello 4. c中的变量与存储区域标识DDR_DATA的映射关系。
根据上述实施例的存储空间映射方法,通过在配置文件中提供缺省存储区域标识,一方面,当存在大量无需特别指定存储区域标识的文件或文件夹时,能够有效缩减分别为各文件或文件夹分配存储区域标识所需工作量;另一方面,还能够在配置文件中遗漏部分文件或文件夹的存储区域标识映射时,确保函数和变量的成功映射。实施例三在上述实施例一的基础上,所述获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系,具体包括检测所述源码中是否携带有用于指示所述归属文件和/或归属文件夹与存储区域标识的映射关系的第一规则;若是,则根据所述第一规则中所述归属文件和/或归属文件夹与存储区域标识的映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系。 具体地,对于文件级别的存储,可以无需建立配置文件,而是直接在源码中添加一个用于指示所述归属文件和/或归属文件夹与存储区域标识的映射关系的第一规则。更为具体地,例如借助#pragma关键字来表示第一规则,第一规则的格式例如为“#pragmasection<存储区域标识>”。例如,按照上述方式,将文件hellol. c映射至L1_DATA和L1_TEXT,则添加有第一规则的文件hellol. c的代码例如为
^include “hello.h”
#pragma section<L1 _TEXT>
LI—DA7,A>
int a; int b; int tuna ()
{
}
int funb ()
{
}
int func ()
{
}此外,在上述代码中的第一规则中,也可仅携带存储区域标识L1_DATA和L1_TEXT中的任意一个。例如,第一规则为“#pragma section〈Ll_TEXT>”,则通过预先配置在建立所述函数和/或变量与所述存储区域标识的映射关系时执行容错功能,则将文件hellol. c中函数映射至存储区域标识L1_TEXT,并将文件hellol. c中变量映射至存储区域标识Ll_ DATA。根据本实施例的存储空间映射方法,无需建立配置文件,仅通过在文件源码中增加一条指令即可为文件配置存储区域标识,进一步提高了存储空间映射的便捷性及效率。进一步地,所述获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述归属文件和/或归属文件夹与存储区域标识的映射关系,建立所述函数和/或变量与所述存储区域标识的映射关系还包括在检测到所述第一规则后,检测所述源码中是否携带有用于指示指定函数和/或变量与存储区域标识的映射关系的第二规则,所述第二规则中所述指定函数和/或变量对应的存储区域标识,与所述第一规则中所述指定函数和/或变量的归属文件对应的存储区域标识不同;若是,则根据所述第二规则,建立所述指定函数和/或变量与存储区域标识的映射关系;并根据所述第一规则,建立所述归属文件中,除所述指定函数和/或变量的其它各函数和/或变量与存储区域标识的映射关系。具体地,除通过在源码中设置上述第一规则来指定文件与存储区域标识的映射关系之外,还可在源码中为某个函数或变量分配存储区域标识,该第二规则的实现方式例如与现有技术中直接针对函数或变量配置的方式相同,例如在指定的函数或变量前直接添加相应的存储区域标识,此处不再赘述。相应地,在建立函数和/或变量与存储区域标识的映射关系的过程中,若存在为指定函数或变量分配存储区域标识的第二规则,则根据第二规则建立指定函数或变量与存储区域标识的映射关系,对于文件中除指定函数或变量之外的函数或变量,则根据第一规则建立与存储区域标识的映射关系。根据上述实施例的存储空间映射方法,使得函数和变量与存储空间的映射更为灵活、多样。实施例四本实施例提供一种用于执行上述实施例的存储空间映射方法的装置。图4为本发明一个实施例的存储空间映射装置的结构示意图。如图4所示,该存储空间映射装置包括
源码解析模块41,用于对源码进行解析,以获取所述源码中各函数和/或变量的归属文件和/或归属文件夹;第一映射模块42,用于获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系;第二映射模块43,用于根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间。本实施例的存储空间映射装置执行存储空间映射的流程与上述任一实施例的存储空间映射方法相同,故此处不再赘述。根据本实施例的存储空间映射装置,通过对源码进行解析,获取源码中各函数和/或变量与文件或文件夹的归属关系,并根据为文件或文件夹配置的存储区域标识,建立归属于相应文件或文件夹内的函数和变量与存储区域标识的映射关系。因此,无需分别针对源码中的大量函数和变量进行单独配置,仅需以文件或文件夹进行配置,即可自动将所有函数和变量映射至指定的存储区域标识,从而映射至指定的存储空间。降低了多级存储方式实现的复杂度,,缩减了开发工作量,并且易于修改,降低了维护成本。进一步地,所述第一映射模块包括第一映射单元,用于根据预先建立的配置文件以及所述各函数和/或变量的归属文件和/或归属文件夹,建立所述各函数和/或变量与存储区域标识的映射关系,其中所述配置文件包括所述归属文件和/或归属文件夹与所述存储区域标识映射关系。进一步地,所述第一映射模块还包括配置文件建立单元,用于建立所述配置文件,并在所述配置文件中为所述归属文件和/或所述归属文件夹分配所述存储区域标识。进一步地,所述配置文件还包括所述归属和/或所述归属文件夹中的指定函数和/或变量与存储区域标识的映射关系,其中所述指定函数和/或变量对应的存储区域标识,与所述指定函数和/或变量的归属文件和/或归属文件夹对应的存储区域标识不同;相应地,所述第一映射单元具体还用于根据所述配置文件中,所述指定函数和/或变量对应的存储区域标识,建立所述指定函数和/或变量与存储区域标识的映射关系;根据所述配置文件中,所述归属文件和/或所述归属文件夹对应的存储区域标识,建立其它各函数和/或变量与存储区域标识的映射关系,其中所述其它各函数和/或变量为所述归属文件和/或所述归属文件夹中,除所述指定函数和/或变量的函数和/或变量。根据上述实施例的存储空间映射装置,通过在配置文件建立单元建立的配置文件中进行不同粒度的存储区域标识配置,使得函数和变量到存储空间的映射更为灵活、多样。进一步地,所述配置文件建立单元在所述配置文件中为部分所述归属文件和/或所述归属文件夹分配所述存储区域标识,并在所述配置文件中,设置缺省存储区域标识;相应地,所述第一映射单元还用于为所述源码中,归属于未分配有存储区域标识的归属文件和/或归属文件夹的函数和/或变量,建立与所述缺省存储区域标识的映射关系O根据上述实施例的存储空间映射装置,通过在配置文件中提供缺省存储区域标识,一方面,当存在大量无需特别指定存储区域标识的文件或文件夹时,能够有效缩减分别·为各文件或文件夹分配存储区域标识所需工作量;另一方面,还能够在配置文件中遗漏部分文件或文件夹的存储区域标识映射时,确保函数和变量的成功映射。进一步地,所述第一映射模块包括第二映射单元,用于检测所述源码中是否携带有用于指示所述归属文件与存储区域标识的映射关系的第一规则;若是,则根据所述第一规则中所述归属文件与存储区域标识的映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系。根据上述实施例的存储空间映射装置,无需建立配置文件,仅通过在文件源码中增加一条指令即可为文件配置存储区域标识,进一步提高了存储空间映射的便捷性及效率。进一步地,所述第二映射单元还用于在检测到所述第一规则后,检测所述源码中是否携带有用于指示指定函数和/或变量与存储区域标识的映射关系的第二规则,所述第二规则中所述指定函数和/或变量对应的存储区域标识,与所述第一规则中所述指定函数和/或变量的归属文件对应的存储区域标识不同;若是,则根据所述第二规则,建立所述指定函数和/或变量与存储区域标识的映射关系;并根据所述第一规则,建立所述归属文件中,除所述指定函数和/或变量的其它各函数和/或变量与存储区域标识的映射关系。根据上述实施例的存储空间映射装置,使得函数和变量与存储空间的映射更为灵活、多样。进一步地,所述第二映射模块具体用于将所述各函数和/或变量映射到单级存储空间中的存储地址;或者将所述各函数和/或变量映射到多级存储空间中对应的一级存储空间。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1.一种存储空间映射方法,其特征在于,包括 对源码进行解析,以获取所述源码中各函数和/或变量的归属文件和/或归属文件夹; 获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系; 根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间。
2.根据权利要求I所述的存储空间映射方法,其特征在于,所述获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系,具体包括 根据预先建立的配置文件以及所述各函数和/或变量的归属文件和/或归属文件夹,建立所述各函数和/或变量与存储区域标识的映射关系,其中所述配置文件包括所述归属文件和/或归属文件夹与所述存储区域标识的映射关系。
3.根据权利要求2所述的存储空间映射方法,其特征在于,所述配置文件还包括 所述归属和/或所述归属文件夹中的指定函数和/或变量与存储区域标识的映射关系,其中所述指定函数和/或变量对应的存储区域标识,与所述指定函数和/或变量的归属文件和/或归属文件夹对应的存储区域标识不同; 相应地,所述根据预先建立的配置文件以及所述各函数和/或变量的归属文件和/或归属文件夹,建立所述各函数和/或变量与存储区域标识的映射关系,具体包括 根据所述配置文件中,所述指定函数和/或变量对应的存储区域标识,建立所述指定函数和/或变量与存储区域标识的映射关系; 根据所述配置文件中,所述归属文件和/或所述归属文件夹对应的存储区域标识,建立其它各函数和/或变量与存储区域标识的映射关系,其中所述其它各函数和/或变量为所述归属文件和/或所述归属文件夹中,除所述指定函数和/或变量的函数和/或变量。
4.根据权利要求I所述的存储空间映射方法,其特征在于,所述获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系,具体包括 检测所述源码中是否携带有用于指示所述归属文件与存储区域标识的映射关系的第一规则; 若是,则根据所述第一规则中所述归属文件与存储区域标识的映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系。
5.根据权利要求4所述的存储空间映射方法,其特征在于,还包括 在检测到所述第一规则后,检测所述源码中是否携带有用于指示指定函数和/或变量与存储区域标识的映射关系的第二规则,所述第二规则中所述指定函数和/或变量对应的存储区域标识,与所述第一规则中所述指定函数和/或变量的归属文件对应的存储区域标识不同; 若是,则根据所述第二规则,建立所述指定函数和/或变量与存储区域标识的映射关系;并根据所述第一规则,建立所述归属文件中,除所述指定函数和/或变量的其它各函数和/或变量与存储区域标识的映射关系。
6.根据权利要求1-5任一所述的存储空间映射方法,其特征在于,所述根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间,具体包括 将所述各函数和/或变量映射到单级存储空间中的存储地址;或者 将所述各函数和/或变量映射到多级存储空间中对应的一级存储空间。
7.一种存储空间映射装置,其特征在于,包括 源码解析模块,用于对源码进行解析,以获取所述源码中各函数和/或变量的归属文件和/或归属文件夹; 第一映射模块,用于获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系; 第二映射模块,用于根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间。
8.根据权利要求7所述的存储空间映射装置,其特征在于,所述第一映射模块包括 第一映射单元,用于根据预先建立的配置文件以及所述各函数和/或变量的归属文件和/或归属文件夹,建立所述各函数和/或变量与存储区域标识的映射关系,其中所述配置文件包括所述归属文件和/或归属文件夹与所述存储区域标识的映射关系。
9.根据权利要求8所述的存储空间映射装置,其特征在于,所述配置文件还包括所述归属和/或所述归属文件夹中的指定函数和/或变量与存储区域标识的映射关系,其中所述指定函数和/或变量对应的存储区域标识,与所述指定函数和/或变量的归属文件和/或归属文件夹对应的存储区域标识不同; 相应地,所述第一映射单元具体还用于根据所述配置文件中,所述指定函数和/或变量对应的存储区域标识,建立所述指定函数和/或变量与存储区域标识的映射关系;根据所述配置文件中,所述归属文件和/或所述归属文件夹对应的存储区域标识,建立其它各函数和/或变量与存储区域标识的映射关系,其中所述其它各函数和/或变量为所述归属文件和/或所述归属文件夹中,除所述指定函数和/或变量的函数和/或变量。
10.根据权利要求7所述的存储空间映射装置,其特征在于,所述第一映射模块包括 第二映射单元,用于检测所述源码中是否携带有用于指示所述归属文件与存储区域标识的映射关系的第一规则;若是,则根据所述第一规则中所述归属文件与存储区域标识的映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系。
11.根据权利要求10所述的存储空间映射装置,其特征在于,所述第二映射单元还用于在检测到所述第一规则后,检测所述源码中是否携带有用于指示指定函数和/或变量与存储区域标识的映射关系的第二规则,所述第二规则中所述指定函数和/或变量对应的存储区域标识,与所述第一规则中所述指定函数和/或变量的归属文件对应的存储区域标识不同;若是,则根据所述第二规则,建立所述指定函数和/或变量与存储区域标识的映射关系;并根据所述第一规则,建立所述归属文件中,除所述指定函数和/或变量的其它各函数和/或变量与存储区域标识的映射关系。
12.根据权利要求7-11任一所述的存储空间映射装置,其特征在于,所述第二映射模块具体用于将所述各函数和/或变量映射到单级存储空间中的存储地址;或者将所述各函数和/或变量映射到多级存储空间中对应的一级存储空间。
全文摘要
本发明实施例提供一种存储空间映射方法及装置。该方法包括对源码进行解析,获取所述源码中各函数和/或变量的归属文件和/或归属文件夹;获取所述归属文件和/或归属文件夹与存储区域标识的映射关系,并根据所述映射关系,建立所述各函数和/或变量与所述存储区域标识的映射关系;根据所述存储区域标识与存储空间的映射关系,将所述各函数和/或变量映射到所述存储空间。根据本发明实施例提供的存储空间映射方法及装置,能够大幅缩减存储空间映射的开发工作量和维护成本。
文档编号G06F9/44GK102902629SQ20121020467
公开日2013年1月30日 申请日期2012年6月20日 优先权日2012年6月20日
发明者周巍 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1