一种嵌入式系统的数据收集和还原方法

文档序号:6443968阅读:218来源:国知局
专利名称:一种嵌入式系统的数据收集和还原方法
技术领域
本发明涉及一种嵌入式系统的数据收集和还原方法,尤其涉及通讯领域中嵌入式网元设备的配置数据以及主备系统的主备同步数据的收集和还原方法。
背景技术
通讯设备通常都需要有数据存储功能,以保存特定的配置数据,并在必要的时候把保存的数据加载到系统中;而对通信设备中常见的主备系统来说,其主备数据同步功能也需要一种高效可靠的方法将主用设备上需要同步的数据收集起来以便发送到备用设备,而备用设备在收到同步数据后要将其还原到系统中。复杂的系统中往往有多个应用模块,各模块都有自己的数据需要保存或同步;而同一模块用来保存和用来同步的数据也可能不同。而且在部分系统中,各应用模块自己管理自己的内部数据,不希望与提供数据收集还原功能的模块(下称数据收集还原模块)有过多耦合。
对于数据收集、组织及还原,可以有多种方案,需要针对系统的特点,采用最合适的方案,这将直接影响到系统的稳定性、性能及可维护性等。
TMS(Tornado for Managed Switches,常用的通信设备开发软件包,WindRiver公司产品)中实现数据存储功能的模块是NVM+(Non-Volatile Memory,非易失性存储器)。其实现方式的特点是,待存储的数据作为对象,按照二级链表结构进行组织,存放在NVM+模块缓存中。写盘的时候一次性的将缓存内容写入flash等存取介质中,读取的时候也是一次性的更新NVM+模块缓存。NVM+的数据存储格式类似于XML的自解释型。借以达到数据文件在所有的TMS系统中都是适用的目的。NVM+功能强大,通用性好,但是它庞大复杂且效率低。对于部分嵌入式系统,需要的往往是一种轻便的数据收集还原模块,为各应用模块提供一种简单、高效的方法来实现数据收集、还原功能。
针对上述要求,本专利申请提出了一种简洁高效的的数据收集和还原方法。由于数据的存储/加载与主备同步数据的收集/还原其原理与过程基本相同,因此都可作为本方法的典型应用。用本方法实现的数据收集还原模块轻便、高效,可以有效改善系统在数据存储/同步方面的性能。

发明内容
本发明的目的在于公开一种嵌入式系统的数据收集和还原方法,解决使用复杂的数据存储系统对系统性能造成的不良影响,为系统各应用模块提供简洁高效、灵活便捷的数据配置以及主备同步数据的收集、还原功能。
为了实现上述目的,本发明所述的数据收集和还原方法如下数据收集还原模块为使用该模块的其他应用模块提供数据读写接口,同时规定好需要由各应用模块提供的数据收集和还原接口的统一形式。各应用模块利用数据收集还原模块提供的数据读写接口编写自己的数据收集和还原接口函数,并将它们注册到数据收集还原模块中。数据收集还原模块在收到操作请求时执行数据收集或还原操作。
具体地讲,本发明公开了一种嵌入式系统的数据收集和还原方法,用于嵌入式系统的数据收集和还原,该嵌入式系统至少包括数据收集还原模块,为使用该数据收集还原模块的应用模块提供数据读写接口,并使用该数据收集还原模块的应用模块在数据收集还原模块中注册自己的收集、还原接口,该方法具体包括(1)该应用模块在该数据收集还原模块的注册表中注册;(2)初始化该收集还原模块的缓冲区;(3)根据注册表中的信息,依次调用各应用模块的数据收集函数,将数据写入该收集还原模块的缓冲区,形成数据块,同时记录数据块的信息;(4)初始化缓冲区;(5)将数据块的数据还原到缓冲区;(6)根据数据中的模块索引和模块注册表中的信息,依次调用各应用模块的数据加载函数,从缓冲区加载数据到应用模块。
所述步骤(2)还包括初始化用来控制读写操作的操作控制器。
所述步骤(4)还包括初始化用来控制读写操作的操作控制器。
所述步骤(3)之后还包括对数据进行数据压缩放入缓冲区中的压缩缓冲区,所述步骤(6)之前还包括解压缩数据,将压缩缓冲区的数据解压缩至数据缓冲区。
所述的嵌入式系统的数据收集和还原方法,所述步骤(3)之后还包括保存数据到数据文件,其中数据文件分为两部分,前面是文件头,后面是数据区,文件头里包括版本号、校验和、数据区数据长度和压缩标志信息。
所述步骤(5)之后还包括(61)打开数据文件;(62)根据文件头中的压缩标志,确定将文件数据区的数据读入内部数据缓冲区或是压缩缓冲区;(63)根据模块索引及数据对象中记录的信息,对数据合法性进行校验。
所述步骤(3)之后还包括将数据交给主备同步模块,步骤(5)中,由主备同步模块执行将数据块的数据还原到缓冲区。
所述的嵌入式系统的数据收集和还原方法,还包括根据模块索引及数据对象中记录的信息,对数据合法性进行校验。
本发明的有益效果在实际使用中,采用本发明所述方法取代NVM+实现数据存储与主备同步,系统资源占用量有所下降,数据存取效率明显提高,特别是系统启动(含加载数据的过程)比原先快了数倍。而且由于模块内部对数据存取过程增加了校验,使一些编码错误在开发中得以及时发现和避免。


图1是应用模块的数据收集/还原功能的注册示意图;图2是数据缓冲区的数据格式;图3是压缩缓冲区的数据格式;图4是数据文件存储格式;图5是数据存储这种典型应用中数据保存过程的流程图;图6是数据存储这种典型应用中数据加载过程的流程图;图7是数据同步这种典型应用中数据收集过程的流程图;图8是数据同步这种典型应用中数据还原过程的流程图;图9是本发明的流程图。
具体实施例方式
本发明所述的数据收集和还原方法如下,见图9,首先该应用模块在该数据收集还原模块的注册表中注册(901);然后进行收集和还原过程。
其中收集数据的过程1.初始化缓冲区(902);2.根据注册表中的信息,依次调用各应用模块的数据收集函数,将数据按特定方式写入缓冲区,同时记录数据块的信息,最终在缓冲区中形成非压缩格式的数据块(903)3.对上一步处理得到的数据块进行压缩并放到压缩缓冲区形成压缩格式的数据块(若为非压缩模式,则没有这个步骤)。
还原数据的过程1.初始化缓冲区;2.将待还原数据读到缓冲区中(若待还原数据为压缩格式,则读入压缩缓冲区;若未非压缩格式,则读入数据缓冲区)(904);3.解压缩数据到数据缓冲区(若为非压缩模式,则没有这个步骤)4.根据数据中的模块索引和模块注册表中的信息,依次调用各应用模块的数据加载函数,将数据还原到应用模块(905)。
上述方法在不同的场合可以有不同的应用,如应用到配置数据存储时,是将数据收集得到的数据块存储到文件中,在数据加载时从文件中取出该数据块进行还原操作;而应用到主备同步时,是将数据收集得到的数据块发送到备机,在备机上进行还原操作。数据收集还原模块为使用该模块的其他应用模块提供的读写接口,说明如下由数据收集还原模块提供读写接口,一方面是为了给其他使用者提供基本的数据读写功能,另一方面是为了对这种数据读写行为进行规范,防止各应用模块随意按自己的方式操作数据。这套读写接口至少应包括以下几方面的功能1)将一段数据写入数据收集还原模块的缓冲区。
2)从数据收集模块的缓冲区读取一段数据。
3)将当前作写入数据操作的模块的相关信息记录到缓冲区中4)获取当前作读取数据操作的模块的相关信息每个使用数据收集还原模块的应用模块都要提供一个数据收集函数和一个数据还原函数。数据收集还原模块对这两个函数的形式作明确的规定。在数据收集和数据还原函数中调用数据收集还原模块提供的读写接口进行数据的读写操作。
使用数据收集还原模块的应用模块需要在数据收集还原模块中注册,注册时必须提供模块标识、数据收集和还原函数的指针;另外还可以根据实际需要提供其他信息。图1为数据收集还原模块注册功能的一个示例。该例中,每个应用模块的注册项包含模块标示、模块名、数据收集函数指针和数据还原函数指针四项。
图2说明了数据收集还原模块内部数据缓冲区的数据格式,这也是未压缩类型的数据区格式。数据缓冲区也分成前后两部分,前面是模块索引表,后面是数据区。模块索引表中存放着模块总数和各模块存储数据的信息,这些信息包括模块标识,模块名称,模块数据块的在文件中的相对偏移量,模块中数据对象的数量以及模块数据的长度。在保存数据过程中,程序调用各模块的数据收集函数,这个过程也就是在模块索引中填写模块信息以及将数据写入模块数据块的过程。而在数据加载操作时,会根据模块索引表中的信息,将各应用模块的数据取出的。模块数据区中存放各模块的数据块。模块数据块由一个个数据对象组成,每个数据对象是一个基本的记录单元。数据对象中可以保存任意内容,可以是一个变量,也可以是一组数据,这由应用模块决定,所谓“记录单元”是从存储角度讲的,而数据对象中的记录数字段也正是提供给应用模块用来记录有关数据对象的额外信息的。
图3是数据收集还原模块内部压缩缓冲区的数据格式。压缩缓冲区由压缩数据信息头和压缩数据区组成,信息头是未经压缩的,里面保存着压缩数据区的数据长度,数据属性以及所使用的压缩算法标志和CRC校验值;根据实际应用的需要,压缩数据信息头中还可以增加其他字段以提供更多的信息。数据属性表明当前数据区的数据种类,通过不同的数据属性代表不同的应用场合,比如用数据收集还原模块实现配置数据和主备同步两种应用时,可以用两种不同的数据属性来区别数据块的类型。之所以有压缩算法这一字段,是基于可扩展性的考虑,数据收集还原模块可以提供多种压缩/解压缩算法供选择使用,解压缩时可以根据压缩数据信息头中的这个压缩算法标志采用相应的解压缩算法。CRC校验用来确保压缩数据区数据的正确性和完整性。
数据收集还原模块的一个典型应用是数据存储,通常包含数据保存和数据加载两种过程。
保存数据的过程1)初始化数据缓冲区2)根据注册表中的信息,依次调用各应用模块的数据收集函数,将数据读入缓冲区同时记录数据块的信息3)压缩数据(若为不压缩模式,则没有这个步骤)4)保存数据到文件从数据文件加载数据到应用模块的过程1)初始化数据缓冲区2)从数据文件中读取数据到缓冲区3)解压缩数据(若为不压缩模式,则没有这个步骤)4)根据数据区的模块索引和模块注册表中的信息,依次调用各应用模块的数据加载函数,从缓冲区加载数据到应用模块图4说明了在数据存储这种典型应用中,将数据存储到文件系统时的文件格式。数据文件包括两大部分,前面是文件头,后面是数据区。文件头里有版本号,校验和,数据区数据长度和压缩标志等信息。版本号表明数据文件的版本,是兼容性方面的考虑,以便将来数据文件升级时程序能够区分是哪种文件格式;校验和使程序能够检验数据文件是否受损;压缩标志表明后面数据区的数据是否经过压缩,压缩和未压缩两种情况下数据区的数据存放方式不同(参考图2和图3的说明)。
图5描述了在数据存储这种典型应用中,数据保存的处理流程。数据收集还原模块首先初始化其内部数据缓冲区及用来控制读写操作的操作控制器(步骤501);然后遍历模块注册表(图1),依次调用各模块注册的数据收集函数,每个模块的数据收集函数都会利用数据收集还原模块提供的数据读写接口将数据写入数据缓冲区(步骤502,503)。接下来,根据数据收集还原模块的工作模式,对数据缓冲区的数据进行处理,如果要求压缩,则调用压缩算法,压缩数据放入压缩缓冲区(步骤504)。最后将数据缓冲区或压缩缓冲区的数据存入文件(步骤505)。
图6描述了在数据存储这种典型应用中,数据加载的处理流程。数据收集还原模块首先初始化其内部数据缓冲区及用来控制读写操作的操作控制器(步骤601);然后打开数据文件,根据文件头中的压缩标志,确定将文件数据区的数据读入内部数据缓冲区或是压缩缓冲区;对放入压缩缓冲区的压缩数据,还要执行解压缩操作将数据解压至内部数据缓冲区,解压缩算法由压缩信息头中的压缩算法指明(步骤603)。接下来,数据收集还原模块根据数据缓冲区模块索引表中的模块信息,调用模块注册表(图1)中相应模块的数据还原函数,加载本模块数据。在加载数据过程中,会根据模块索引及数据对象中记录的信息,对数据合法性进行校验,如发现异常,则给出警告。当索引表中所有模块的数据都已加载完成时,这个数据加载过程结束。
数据收集还原模块的另一个典型应用是主备数据同步,通常包含主机数据收集和备机数据还原两个过程。
收集主备同步数据的过程(主机上进行)1)初始化数据缓冲区2)根据模块注册表中的信息,依次调用各应用模块的数据收集函数,将数据读入缓冲区同时记录数据块的信息3)压缩数据(若为不压缩模式,则没有这个步骤)4)将准备好的同步数据交给主备同步模块同步数据还原过程(备机上进行)1)初始化数据缓冲区2)由主备同步模块将同步数据写入缓冲区3)解压缩数据(若设为不压缩模式,则没有这个步骤)4)根据数据区的模块索引和和注册表中的信息,依次调用各应用模块的数据还原函数,从缓冲区加载同步数据到应用模块图7描述了在主备数据同步这种典型应用中,主机收集同步数据的处理流程。数据收集还原模块首先初始化其内部数据缓冲区及用来控制读写操作的操作控制器(步骤701);然后遍历模块注册表(图1),依次调用各模块注册的数据收集函数,每个模块的数据收集函数都会利用数据收集还原模块提供的数据读写接口将数据写入数据缓冲区(步骤702,703)。接下来,根据数据收集还原模块的工作模式,对数据缓冲区的数据进行处理,如果要求压缩,则调用压缩算法,压缩数据放入压缩缓冲区(步骤704)。最后将数据缓冲区或压缩缓冲区的数据交给主备同步模块(步骤705)。
图8描述了在主备数据同步这种典型应用中,备机还原同步数据的处理流程。数据收集还原模块首先初始化其内部数据缓冲区及用来控制读写操作的操作控制器(步骤801);备机主备同步模块通过数据收集还原模块提供的接口获得其缓冲区指针,根据同步数据的压缩标志,确定将文件数据区的数据读入内部数据缓冲区或是压缩缓冲区;对放入压缩缓冲区的压缩数据,还要执行解压缩操作将数据解压至内部数据缓冲区,解压缩算法由压缩信息头中的压缩算法指明(步骤803)。接下来,数据收集还原模块根据数据缓冲区模块索引表中的模块信息,调用模块注册表(图1)中相应模块的数据还原函数,还原本模块数据。在还原数据过程中,会根据模块索引及数据对象中记录的信息,对数据合法性进行校验,如发现异常,则给出警告。当索引表中所有模块的数据都已还原完成时,备机同步数据还原过程结束。
权利要求
1.一种嵌入式系统的数据收集和还原方法,用于嵌入式系统的数据收集和还原,其特征在于,该嵌入式系统至少包括数据收集还原模块,为使用该数据收集还原模块的应用模块提供数据读写接口,并使用该数据收集还原模块的应用模块在数据收集还原模块中注册自己的收集、还原接口,该方法包括收集和还原两大步骤,其中收集步骤包括(1)该应用模块在该数据收集还原模块的注册表中注册;(2)初始化该收集还原模块的缓冲区;(3)根据注册表中的信息,依次调用各应用模块的数据收集函数,将数据写入该收集还原模块的缓冲区,形成数据块,同时记录数据块的信息;还原步骤包括(4)初始化缓冲区;(5)将数据块的数据还原到缓冲区;(6)根据数据中的模块索引和模块注册表中的信息,依次调用各应用模块的数据加载函数,从缓冲区加载数据到应用模块。
2.如权利要求1所述的嵌入式系统的数据收集和还原方法,其特征在于,所述步骤(2)还包括初始化用来控制读写操作的操作控制器。
3.如权利要求2所述的嵌入式系统的数据收集和还原方法,其特征在于,所述步骤(4)还包括初始化用来控制读写操作的操作控制器。
4.如权利要求1所述的嵌入式系统的数据收集和还原方法,其特征在于,所述步骤(3)之后还包括对数据进行数据压缩放入缓冲区中的压缩缓冲区,所述步骤(6)之前还包括解压缩数据,将压缩缓冲区的数据解压缩至数据缓冲区。
5.如权利要求1或4所述的嵌入式系统的数据收集和还原方法,其特征在于,所述步骤(3)之后还包括保存数据到数据文件,其中数据文件分为两部分,前面是文件头,后面是数据区,文件头里包括版本号、校验和、数据区数据长度和压缩标志信息。
6.如权利要求5所述的嵌入式系统的数据收集和还原方法,其特征在于,所述步骤(5)之后还包括(61)打开数据文件;(62)根据文件头中的压缩标志,确定将文件数据区的数据读入内部数据缓冲区或是压缩缓冲区;(63)根据模块索引及数据对象中记录的信息,对数据合法性进行校验。
7.如权利要求1或4所述的嵌入式系统的数据收集和还原方法,其特征在于,所述步骤(3)之后还包括将数据交给主备同步模块,步骤(5)中,由主备同步模块执行将数据块的数据还原到缓冲区。
8.如权利要求7所述的嵌入式系统的数据收集和还原方法,其特征在于,还包括根据模块索引及数据对象中记录的信息,对数据合法性进行校验。
全文摘要
本发明涉及一种嵌入式系统的数据收集和还原方法,该嵌入式系统至少包括数据收集还原模块,为使用该数据收集还原模块的应用模块提供数据读写接口,并使用该数据收集还原模块的应用模块在数据收集还原模块中注册自己的收集、还原接口,该方法具体包括该应用模块在该数据收集还原模块的注册表中注册;初始化该收集还原模块的缓冲区;根据注册表中的信息,依次调用各应用模块的数据收集函数,将数据写入该收集还原模块的缓冲区,形成数据块,同时记录数据块的信息;初始化缓冲区;将数据块的数据还原到缓冲区;根据数据中的模块索引和模块注册表中的信息,依次调用各应用模块的数据加载函数,从缓冲区加载数据到应用模块。
文档编号G06F12/00GK1790280SQ200410098939
公开日2006年6月21日 申请日期2004年12月16日 优先权日2004年12月16日
发明者谢衍, 冯青峰 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1