一种非易失性数据的存储和检索方法及装置的制作方法

文档序号:6580305阅读:151来源:国知局
专利名称:一种非易失性数据的存储和检索方法及装置的制作方法
技术领域
本发明涉及通信系统中的数据存储技术,尤其涉及一种非易失性数据的存 储和检索方法及装置。
背景技术
随着移动通信技术的发展,终端的更新速度也越来越快,各终端制造商为 了吸引更多的用户在不断研制具备多种业务功能的终端产品。终端制造商在研 制过程中借助于终端软件平台进行终端功能的开发,在开发过程中将涉及到多
种不同种类的非易失性数据,例如终端的出厂参数、物理层参数、通信协议 和网络参数等,细分其数量大概有十万个,因此,对终端非易失性数据的组织 管理很重要。
对非易失性数据的组织方法包括存储和检索。目前,对非易失性数据 的组织方法为采用数组结构进行存储,采用Id索引访问方法进行检索。但 是,由于数组自身线性结构的限制,即数组中的每个数据项按照对应的编号 排列,所述编号按由小到大、或由大到小顺序排列,如1、 2、 3、 4、 5等等, 如果要在数组中插入或删除数据项,则需重新对数组中的数据项进行编号,因 此,数组中的非易失性数据难以扩展、移植过程繁瑣、可嵌套性差;由于非易 失性数据的^f企索是依据不同数据项对应的编号进行的,因此检索方法不够直观; 此外,非易失性数据存储时数据项的存储空间大小需相同,这样,导致部分数 据项对应的存储空间没有得到充分利用,浪费了很多存储空间,使得存储空间 的利用率不高。

发明内容
有鉴于此,本发明的主要目的在于提供一种非易失性数据的存储和检索方
4法及装置,使得存储的终端非易失性数据易于扩展、可深层嵌套,提高存储空 间利用率,且检索方法直观。
为达到上述目的,本发明的技术方案是这样实现的 本发明提出了一种非易失性数据的存储和检索方法,该方法包括 将已分类的非易失性数据定义为树形结构,并对树中节点赋值; 对节点已被赋值的树形结构进行编译链接,烧写编译链接的结果并存储烧 写时的基地址;
根据编译链接的结果及烧写时的基地址计算待检索的非易失性数据的偏 移和大小,根据烧写时的基地址和对待检索非易失性数据的偏移和大小的计算 结果检索非易失性数据。
其中,所述将已分类的非易失性数据定义为树形结构之前,还包括
将非易失性数据按需求进行分类。
其中,所述将已分类的非易失性数据定义为树形结构时采用C语言;相应
的,
所述根据编译链接的结果及烧写时的基地址计算待检索的非易失性数据 的偏移和大小,具体为
以编译链接的结果及烧写时的基地址为依据,运用C语言所提供的数据偏 移的计算方法offsetof和数据大小的计算方法sizeof计算待检索的非易失性数据 的偏移和大小。
上述方案中,需对所述非易失性数据进行扩展时,该方法进一步包括将 新增加的非易失性数据进行分类,并接入原已定义的树形结构中形成新的节 点,对整个新的树形结构重新进行编译链接及烧写操作。
其中,所述将非易失性数据按需求进行分类,为按非易失性数据的不同 应用业务领域、或按非易失性数据的不同数据类型对非易失性数据进行分类。
本发明还提出了一种非易失性数据的存储和检索装置,该装置包括定义 模块、编译模块、烧写模块、计算模块和检索模块;其中,
所述定义模块,用于将已分类的非易失性数据定义为树形结构,并对树中节点赋值,将定义及赋值的结果发送到编译模块;
所述编译模块,用于根据定义模块所定义的并对节点已赋值的树形结构执 行编译链接操作,并将编译链接的结果通知烧写模块;
所述烧写模块,用于烧写编译模块所发的编译链接的结果,并存储烧写时 的基地址;
所述计算模块,用于根据烧写模块烧写的编译链接的结果及烧写时的基地 址计算待检索的非易失性数据的偏移和大小,并将计算结果发送到检索模块;
所述检索模块,用于根据烧写模块烧写时的基地址和计算模块对待检索非 易失性数据的偏移和大小的计算结果检索非易失性数据。
该装置进一步包括分类模块,用于将非易失性数据按需求进行分类,并将 分类结果通知定义^t块。
其中,所述定义模块将已分类的非易失性数据定义为树形结构时采用C语 言;相应的,
所述计算模块根据烧写模块烧写的编译链接的结果及烧写时的基地址计算 待检索的非易失性数据的偏移和大小,具体为
以烧写模块烧写的编译链接的结果及烧写时的基地址为依据,运用C语言 所提供的数据偏移的计算方法offsetof和数据大小的计算方法sizeof计算待检索 的非易失性数据的偏移和大小。
上述方案中,所述分类模块将非易失性数据按需求进行分类,为按非易 失性数据的不同应用业务领域、或按非易失性数据的不同数据类型对非易失性 数据进行分类。
本发明提供的非易失性数据的存储和检索方法及装置,将已分类的非易失 性数据定义为树形结构,并对树中节点f武值;对节点已净皮赋值的树形结构进行 编译链接,烧写编译链接的结果并存储烧写时的基地址;根据编译链接的结果 及烧写时的基地址计算待检索的非易失性数据的偏移和大小,根据烧写时的基 地址和对待检索非易失性数据的偏移和大小的计算结果检索非易失性数据。本
发明中的非易失性数据定义为树形结构,如要增加树形结构中某一层的分支或
6增加树形结构的层数,只需增加相应的代码行即可,而不需修改原有代码,相
对数组结构来说易于扩展和深层嵌套;非易失性数据的存储过程中,由于树形 结构中的不同节点对应的存储空间大小可以不相同,节点的大小与存储空间的 大小一致,因此节省了存储空间,利用率得到了提高;此外,检索过程是以非 易失性数据对应的参数名称为依据进行的,因此检索方法相对现有技术具有良 好的直观性。


图1为本发明非易失性数据的存储和检索方法实现流程示意图; 图2为各非易失性数据组成的树形结构示意图; 图3为编译链接所得的树形结构中各节点的存储布局结构示意图; 图4为本发明非易失性数据的存储和检索装置结构示意图。
具体实施例方式
本发明的基本思想是将已分类的非易失性数据定义为树形结构,并对树 中节点赋值;对节点已被赋值的树形结构进行编译链接,烧写编译链接的结果 并存储烧写时的基地址;根据编译链接的结果及烧写时的基地址计算待检索的 非易失性数据的偏移和大小,根据烧写时的基地址和对待检索非易失性数据的 偏移和大小的计算结果检索非易失性数据。
本发明方案在实施过程中所釆用的编译语言可为C、 VB或Java等;对于 不同的设备所述非易失性数据可为不同种类,如终端非易失性数据、或测控 设备非易失性数据等。
下面以编译语言为C,非易失性数据为终端非易失性数据为例对本发明作 进一步详细说明。
图1为本发明非易失性数据的存储和检索方法实现流程示意图,如图1所 示,该流程包括以下步骤
步骤101:将非易失性数据按需求进行分类;这里,可按非易失性数据的不同应用业务领域、或按非易失性数据的不同 数据类型等需求对终端非易失性数据进行分类,例如,如果按非易失性数据的
不同数据类型进4亍分类,方法可为将终端非易失性数据对应的参数分为只读 参数和可读写参数;所述只读参数又分为校准参数CLIB和固定参数FIXED等, 用于对终端功能参数进行校准;将所述可读写参数又分为MMI参数、AFC参 数、RTC参数及CSD参数等,用于表示终端的不同功能特性。 步骤102:定义已分类的非易失性数据树的结构;
具体为采用C语言的数据结构(struct)的定义方式将已分类的非易失性 数据定义为树形结构,可用伪代码表示如下
首先,定义树形结构根节点下的第一层,这里,根节点nvjaram下的第一 层包括两个节点,分別为非易失性数据中的可读写参数nv—dynamic和非易失 性数据中的只读参数nv—static,代码为
Struct nv_param
nv_static;/* read only parameters */ nv_dynamic; /* read/write parameters */
这里,所述根节点nvj)aram,表示所定义初t形结构中的任一节点为非易失 性数据。
再定义树形结构的第二层,即第 一层节点nv_static和nv—dynamic下的分支, 第一层节点nv_static下的分支包括三个节点,分别为校准参数clib、空余空 间参数spare和固定参数fixed,代码为
Struct nv—static
clib; / * Calibration parameters */ spare; /* Spare area */ fixed; /* Fixed parameters */
8第一层节点nv—dynamic下的分支包括四个节点,分别为界面接入参数 mmi、自动屏蔽控制参数afc、实时传输控制参数rtc和csd,代码为 Struct nv一dynamic
mmi; / * mmi parameters */ afc; /* afc parameters */ rtc; /* rtc parameters */ csd; /* csd parameters */
}
这里,从根节点开始逐层定义非易失性数据树的结构,所生成的树形结构 如图2所示,可以看出,如果要增加树形结构中某一层的分支或增加树形结构 的层数,只需增加相应的代码行即可,不需修改原有代码。
步骤103:对定义的非易失性数据树中的节点进行赋值;
具体为对非易失性数据組成的树形结构中的每个节点进行初始化赋值, 即分别为树形结构中的每个节点赋初始值,在树形结构中每个节点的对应位 置写入相应的非易失性数据。
这里,根据节点设置的不同,所述初始值在终端的应用过程中可固定不变 也可根据实际应用进行相应修改。
步骤104:对节点已被赋值的树形结构进行编译链接,烧写编译链接的结 果并存储烧写时的基地址;
具体为树形结构定义及赋值完成后开始运行代码,C语言编译器对生成 的树形结构进行编译链接,得到树形结构中各节点的存储布局,此时,经编译 链接所得的存储布局存储于内存中,需将所述存储布局烧写到非易失性存储器, 如可擦除可编程只读内存(EPROM)或闪存(flash)中,即从EPROM或 flash的某个位置开始烧写树形结构中所有非易失性数据的节点,其中,所述 EPROM或flash的某个位置,即为烧写时的基地址、或称为首地址,存储该基地址以便后续检索过程中使用。
图3为编译链接所得的树形结构中各节点的存储布局,可以看出,不同的 节点对应的存^f渚空间大小也不相同,节点的大小与存^f渚空间的大小一致,即 节点较大时对应较大的存储空间,节点较小时对应较小的存储空间,因此存储 空间利用率高。
这里,所述C语言编译器的编译链接过程和所述的烧写过程为现有技术, 不再进一步详述。
步骤105:根据编译链接的结果及烧写时的基地址计算待检索的非易失性 数据的偏移和大小;
具体为如果要检索某个非易失性数据,可将待检索的非易失性数据对应 的参数名称,如spare通知编译器,之后编译器结合编译链接所得的树形结构 中各节点的存储布局和烧写时的基地址,运用C语言所提供的数据大小的计算 方法sizeof和数据偏移的计算方法offsetof计算非易失性数据 spare的大小和偏 移。关于sizeof和offsetof两种算法的具体实现过程为现有技术,这里不再详迷。
这里可以看出,本发明在对非易失性数据进行检索的过程中,只需将待片企 索的非易失性数据对应的参数名称通知编译器实现后续的检索操作,即检索 操作是依据非易失性数据对应的参数名称进行的,没有借助中间参数,如编号 执行检索操作,因此检索方法达到了直观性要求。
步骤106:根据烧写时的基地址和对待检索非易失性数据的偏移和大小的 计算结果4企索非易失性数据。
这里,如果要对原有的非易失性数据进行调整,如扩展等,则重新执行 步骤101至步骤104,将新增加的非易失性数据对应的参数进行分类,之后在 原有代码的基础上增加代码行,并进行初始化赋值,再对更改后的整个树形结 构重新进行编译链接,并烧写编译链接的结果。
图4为本发明非易失性数据的存储和检索装置结构示意图,如图4所示, 该装置包括定义模块、编译模块、烧写模块、计算模块和检索模块;其中,
所述定义^=莫块,用于将已分类的非易失性数据定义为树形结构,并对树中节点赋值,将定义及赋值的结果发送到编译模块;
所述编译模块,用于根据定义模块所定义的并对节点已赋值的树形结构执 行编译链接操作,并将编译链接的结果通知烧写模块;
所述烧写模块,用于烧写编译模块所发的编译链接的结果,并存储烧写时 的基地址;
所述计算模块,用于根据烧写模块烧写的编译链接的结果及烧写时的基地 址计算待检索的非易失性数据的偏移和大小,并将计算结果发送到检索模块;
所述检索模块,用于根据烧写模块烧写时的基地址和计算模块对待检索非 易失性数据的偏移和大小的计算结果检索非易失性数据。
该装置进一步包括分类模块,用于将非易失性数据按需求进行分类,并将 分类结果通知定义^t块。
所述定义模块将已分类的非易失性数据定义为树形结构时采用C语言;相 应的,
所述计算模块根据烧写模块烧写的编译链接的结果及烧写时的基地址计算 待检索的非易失性数据的偏移和大小,具体为
以烧写模块烧写的编译链接的结果及烧写时的基地址为依据,运用C语言 所提供的数据偏移的计算方法offsetof和数据大小的计算方法sizeof计算待检索 的非易失性数据的偏移和大小。
所述分类模块将非易失性数据按需求进行分类,为按非易失性数据的不 同应用业务领域、或按非易失性数据的不同数据类型对非易失性数据进行分 类。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应 包含在本发明的保护范围之内。
权利要求
1、一种非易失性数据的存储和检索方法,其特征在于,该方法包括将已分类的非易失性数据定义为树形结构,并对树中节点赋值;对节点已被赋值的树形结构进行编译链接,烧写编译链接的结果并存储烧写时的基地址;根据编译链接的结果及烧写时的基地址计算待检索的非易失性数据的偏移和大小,根据烧写时的基地址和对待检索非易失性数据的偏移和大小的计算结果检索非易失性数据。
2、 根据权利要求1所述的非易失性数据的存储和检索方法,其特征在于, 所述将已分类的非易失性数据定义为树形结构之前,还包括将非易失性数据按需求进行分类。
3、 根据权利要求1或2所述的非易失性数据的存储和检索方法,其特征在 于,所述将已分类的非易失性数据定义为树形结构时采用C语言;相应的,所述根据编译链接的结果及烧写时的基地址计算待检索的非易失性数据 的偏移和大小,具体为以编译链接的结果及烧写时的基地址为依据,运用C语言所提供的数据偏 移的计算方法offsetof和数据大小的计算方法sizeof计算待检索的非易失性数据 的偏移和大小。
4、 根据权利要求2所述的非易失性数据的存储和检索方法,其特征在于, 需对所述非易失性数据进行扩展时,该方法进一步包括将新增加的非易失性 数据进行分类,并接入原已定义的树形结构中形成新的节点,对整个新的树形 结构重新进行编译链接及烧写操作。
5、 根据权利要求2或4所述的非易失性数据的存储和检索方法,其特征在 于,所述将非易失性数据按需求进行分类,为按非易失性数据的不同应用业 务领域、或按非易失性数据的不同数据类型对非易失性数据进行分类。
6、 一种非易失性数据的存储和检索装置,其特征在于,该装置包括定义模块、编译模块、烧写模块、计算模块和检索模块;其中,所述定义模块,用于将已分类的非易失性数据定义为树形结构,并对树中 节点赋值,将定义及赋值的结果发送到编译模块;v所述编译模块,用于根据定义模块所定义的并对节点已赋值的树形结构执 行编译链接操作,并将编译链接的结果通知烧写冲莫块;所述烧写模块,用于烧写编译模块所发的编译链接的结果,并存储烧写时 的基地址;所述计算模块,用于根据烧写模块烧写的编译链接的结果及烧写时的基地 址计算待检索的非易失性数据的偏移和大小,并将计算结果发送到检索模块;所述检索模块,用于根据烧写模块烧写时的基地址和计算模块对待检索非 易失性数据的偏移和大小的计算结果检索非易失性数据。
7、 根据权利要求6所述的非易失性数据的存储和检索装置,其特征在于, 该装置进一步包括分类模块,用于将非易失性数据按需求进行分类,并将分类 结果通知定义模块。
8、 根据权利要求6或7所述的非易失性数据的存储和检索装置,其特征在 于,所述定义模块将已分类的非易失性数据定义为树形结构时采用C语言;相 应的,所述计算模块根据烧写模块烧写的编译链接的结果及烧写时的基地址计算 待检索的非易失性数据的偏移和大小,具体为以烧写模块烧写的编译链接的结果及烧写时的基地址为依据,运用C语言 所提供的数据偏移的计算方法offsetof和数据大小的计算方法sizeof计算待检索的非易失性数据的偏移和大小。
9、 根据权利要求7所述的非易失性数据的存储和检索装置,其特征在于, 所述分类模块将非易失性数据按需求进行分类,为按非易失性数据的不同应 用业务领域、或按非易失性数据的不同数据类型对非易失性数据进行分类。
全文摘要
本发明公开了一种非易失性数据的存储和检索方法,包括将已分类的非易失性数据定义为树形结构,并对树中节点赋值;对节点已被赋值的树形结构进行编译链接,烧写编译链接的结果并存储烧写时的基地址;根据编译链接的结果及烧写时的基地址计算待检索的非易失性数据的偏移和大小,根据烧写时的基地址和对待检索非易失性数据的偏移和大小的计算结果检索非易失性数据。本发明还同时公开了一种非易失性数据的存储和检索装置,运用该方法和装置使得存储的非易失性数据易于扩展、可深层嵌套,提高存储空间利用率,且检索方法直观。
文档编号G06F12/02GK101650689SQ200910171878
公开日2010年2月17日 申请日期2009年9月16日 优先权日2009年9月16日
发明者党茂昌 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1