专利名称:基于VxWorks操作系统的文件存储结构及存储方法
技术领域:
本发明涉及电气化铁路的技术领域,具体说是一种可以实现突发大量数据的快速存储,并将由于文件系统异常所带来的不良影响降低到最低的基于VxWorkS操作系统的文件存储结构及存储方法。
背景技术:
Vxfforks操作系统是美国WindRiver公司设计开发的一种嵌入式实时多任务操作系统,适用于航空、航天、通信、工业控制等实时控制系统的产品开发应用。在电气化铁路牵引自动化系统、电力系统变电站自动化系统中,为实现复杂的监视、控制功能,需要文件系统的支持,以完成在NORFLASH、NANDFLASH、DOM盘等存储介质上的快速文件存取操作。 VxWorks操作系统可以实现上述存储介质上的标准文件系统。NORFLASH和NANDFLASH是现在市场上两种主要的非易失闪存技术,NORFLASH存储器的特点是在芯片内执行(XIP,execute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NORFLASH的传输效率很高,在1 4MB的小容量时具有很高的成本效益,但是较低的写入和擦除速度大大影响了它的性能。在电气化铁路牵引自动化系统、电力系统变电站自动化产品中,需要用到各种配置参数及数据,如保护定值、通信参数、报告记录、故障录波、操作记录、字库等,且上述数据需要以文件方式存在,以便于系统的运行和维护。一旦系统出现异常情况后,需要实现对大量异常数据的快速记录和保存,并以此为基础进行故障分析、定位和处理。文件存取的可靠程度直接决定了整个系统的可靠性和稳定性,文件系统的异常破坏会给整个系统带来灾难性后果。如果在进行大量突发数据存储或文件操作的过程中突然掉电或发生复位则会使整个系统发生瘫痪。
发明内容
本发明要解决的技术问题是提供一种可以实现突发大量数据的快速存储,并将由于文件系统异常所带来的不良影响降低到最低的基于VxWorks操作系统的文件存储结构及存储方法。本发明为解决公知技术中存在的技术问题所采取的技术方案是
本发明的基于VxWorks操作系统的文件存储结构,包括两片NORFLASH存储器和一片 SDRAM存储器;上述两片NORFLASH存储器分别为N0RFLASH1和N0RFLASH2,N0RFLASH1的物理起始位置保存bootrom的启动代码程序,而后续位置创建为TFFSl文件分区,保存非经常变化的系统文件,N0RFLASH2创建为TFFS2文件分区,保存频繁读写操作的数据记录文件;SDRAM存储器保存突发数据,作为突发数据的临时缓存;N0RFLASH1、N0RFLASH2分别与 SDRAM存储器连接,SDRAM存储器中的缓存数据传输并保存到N0RFLASH2上的TFFS2文件分区中。基于VxWorks操作系统的文件存储方法,使用两片NORFLASH存储器和一片SDRAM存储器作为存储介质,两片N0RFLASH存储器分别为N0RFLASH1和N0RFLASH2,包括以下步骤
::£;在N0RFLASH1的物理起始位置保存bootrom的启动代码程序,启动基于VxWorks的
bootrom,对N0RFLASH1和N0RFLASH2分别进行初始化,分别创建基于iTrueFFS的文件系统, 每片N0RFLASH存储器各自对应创建一个文件分区,N0RFLASH1中除物理起始位置之外的后续位置对应于TFFSl文件分区,N0RFLASH2对应于TFFS2文件分区,TFFSl文件分区保存包括应用程序文件的非经常变化的参数与系统文件,TFFS2文件分区保存经常变化的一般数据记录文件,每个分区上根据要求创建不同的文件目录;
②在bootrom中启动FTP,将应用程序文件保存到N0RFLASH1的文件分区TFFSl中,并启动应用程序;
应用程序启动后,创建并启动两个不同优先级的任务T1、T2,其中Tl的优先级较高,
完成大量数据的快速缓存工作,Τ2的优先级较低,完成缓存数据到TFFS2文件分区上的文件保存工作;
S Tl任务运行后,根据突发数据需要缓冲的数据文件的容量,在SDRAM存储器中创建
环形缓存,环形缓存的大小不小于TFFS2文件分区,初始化读、写指针为缓存区起始位置;
S Tl任务在外部故障情况下,将突发数据缓冲到SDRAM的环形缓存中,移动写指针到
下一个空闲节点,并以消息方式通知Τ2任务;
.1 Τ2任务收到Tl任务发送的消息后,从SDRAM的环形缓存中读出指针所对应的位置, 并将环形缓存中读指针所指的SDRAM空间中的数据以文件方式顺序保存到TFFS2文件分区中,在文件向TFFS2文件分区进行保存的同时改变读指针的位置,直到读写指针位置一致。本发明还可以采用以下技术方案
Τ2任务收到Tl任务的消息后,首先检查TFFS2文件分区上文件个数及容量是否达到 TFFS2文件分区的最大限值,若达到最大限值则删除TFFS2文件分区中保存时间最久的数据记录文件,然后从环形缓存的读指针所指的SDRAM空间中将缓存的记录数据以文件方式顺序保存到TFFS2中。当有新的数据需要进行缓存时,Tl任务打断Τ2任务而优先进行缓存处理;当Tl 任务完成后,由Τ2任务完成后续的数据存储工作。以均勻覆盖写入的算法将缓存的记录数据以文件方式保存到TFFS2中。本发明具有的优点和积极效果是
本发明的基于VxWorks操作系统的文件存储结构及存储方法中,基于VxWorks操作
系统的实时多任务设计,按照功能进行任务优先级划分,在保证系统基本功能正常的前提
下,实现了大量突发数据的快速、可靠文件存储;采用两片N0RFLASH进行文件存储,根据
所需存储文件的重要程度、读写操作频度进行分类,重要文件及不经常操作文件保存在
N0RFLASH1,读写操作频繁的数据文件保存到N0RFLASH2,从而降低了两个文件分区之间的
物理影响,保证了系统的可靠运行;通过SDRAM存储器进行大量突发数据的缓存处理,解决了大量存储数据与慢速外设之间的矛盾,保证了数据的可靠存储;充分考虑了 N0RFLASH存储器特点,采用均勻覆盖擦写的算法,保证了 N0RFLASH整体使用寿命;基于vxworks操作系统的bootrom启动程序保存在N0RFLASH1的固定起始物理位置,不单独设计存储设备,减少了硬件开销,提高了硬件使用效率。在数据文件存储到N0RFLASH2时,检查已经保存的文件长度和数量,超出范围时删除最旧的文件,并写入新的数据文件,确保不会超出N0RFLASH 的存储容量。
图1是本发明的基于VxWorks操作系统的文件存储结构的示意图; 图2是本发明的基于VxWorks操作系统的文件存储方法的执行示意图。
具体实施例方式以下参照附图及实施例对本发明进行详细的说明。图1是本发明的基于VxWorks操作系统的文件存储结构的示意图;图2是本发明的基于VxWorks操作系统的文件存储方法的执行示意图。本发明基于VxWorks操作系统,在两片N0RFLASH上实现了基于TrueFFS的文件系统。通过SDRAM存储器作为数据缓存,解决了大量突发存储数据与慢速存储外设之间的矛盾。根据实时多任务系统特点进行任务功能划分,高优先级任务Tl完成大量突发数据到 SDRAM上的快速缓存工作,从根本上保证了突发数据的快速记录,并通过消息方式通知低优先级任务T2 ;任务T2收到消息后,将SDRAM中缓存的数据以文件方式顺序保存到指定的 TFFS2文件分区中。为了保证系统的可靠性,采用了两片N0RFLASH,其中一片保存bootrom、应用程序文件以及重要的系统参数和配置文件,另外一片用来保存频繁读写操作的数据记录文件, 从而隔离了两片N0RFLASH间的物理影响。当出现由于存储数据过程中掉电或复位而可能引发的文件系统破坏时,另一片N0RFLASH上的重要参数文件、应用程序不会受到任何影响,仍然可以保证系统的基本稳定运行。如图1和图2所示,本发明的基于VxWorks操作系统的文件存储结构,包括两片 N0RFLASH存储器和一片SDRAM存储器;上述两片N0RFLASH存储器分别为N0RFLASH1禾口 N0RFLASH2,N0RFLASH1的物理起始位置保存bootrom的启动代码程序,而后续位置创建为TFFSl文件分区,保存非经常变化的系统文件,N0RFLASH2创建为TFFS2文件分区,保存频繁读写操作的数据记录文件;SDRAM存储器保存突发数据,作为突发数据的临时缓存; N0RFLASH1、N0RFLASH2分别与SDRAM存储器连接,SDRAM存储器中的缓存数据传输并保存到 N0RFLASH2上的TFFS2文件分区中。上述的文件存储结构中,软件设计基于VxWorks操作系统;N0RFLASH1的后续位置参与文件系统管理,定义为TFFSl文件分区,用于保存应用程序文件、各种参数及配置文件等非经常变化的重要系统文件;N0RFLASH2的整体参与文件系统管理,定义为TFFS2文件分区,用于保存频繁读写操作的数据记录文件。由于应用程序文件、参数配置、汉字库文件等重要系统文件全部保存在TFFSl中,即使由于异常停电、复位所可能导致的TFFS2文件分区破坏,也不会影响TFFSl中的重要文件,仍可以保证整个系统的正常运行。
上述SDRAM的容量为16M字节,数据口宽度为32位,可以满足应用程序普通内存、 数据记录缓存等功能的容量及操作速度的使用要求。N0RFLASH1和N0RFLASH2的型号相同,容量均为4M字节,为保证读写速度,数据口宽度为16位。其中N0RFLASH1的物理起始位置预留511字节,用于保存bootrom启动代码,不参与文件系统管理。 本发明的基于VxWorks操作系统的文件存储方法,使用两片N0RFLASH存储器和一片SDRAM存储器作为存储介质,两片N0RFLASH存储器分别为N0RFLASH1和N0RFLASH2,包括以下步骤
在N0RFLASH1的物理起始位置预留51 (字节保存bootrom的启动代码程序,启动基
于VxWorks的bootrom,对N0RFLASH1和N0RFLASH2分别进行初始化,分别创建基于TrueFFS 的文件系统,每片N0RFLASH存储器各自对应创建一个文件分区,N0RFLASH1中除物理起始位置之外的后续位置对应于TFFSl文件分区,N0RFLASH2对应于TFFS2文件分区,TFFSl文件分区大小为3. 5M字节,保存包括应用程序文件的非经常变化的参数与系统文件,TFFS2 文件分区的大小为4M字节,保存经常变化的一般数据记录文件,每个分区上根据要求创建不同的文件目录;
②在bootrom中启动FTP,将应用程序文件保存到N0RFLASH1的文件分区TFFSl中,并启动应用程序;
f)应用程序启动后,创建并启动两个不同优先级的任务T1、T2,其中Tl的优先级较高,
完成大量数据的快速缓存工作,Τ2的优先级较低,完成缓存数据到TFFS2文件分区上的文件保存工作;
Tl任务运行后,根据突发数据需要缓冲的数据文件的容量,在SDRAM存储器中创建
环形数据缓存,环形缓存的大小不小于TFFS2文件分区,在本实施例中SDRAM分配分配4M 字节空间创建环形数据缓存,并初始化读、写指针为缓存区起始位置;
S Tl任务在外部故障情况下,将突发数据缓冲到SDRAM的环形缓存中,移动写指针到
下一个空闲节点,并以消息方式通知T2任务;
.1 T2任务收到Tl任务发送的消息后,从SDRAM的环形缓存中读出指针所对应的位置, 并将环形缓存中读指针所指的SDRAM空间中的数据以文件方式顺序保存到TFFS2文件分区中,在文件向TFFS2文件分区进行保存的同时改变读指针的位置,直到读写指针位置一致。T2任务收到Tl任务的消息后,首先检查TFFS2文件分区上文件个数及容量是否达到TFFS2文件分区的最大限值,若达到最大限值则删除TFFS2文件分区中保存时间最久的数据记录文件,然后从环形缓存的读指针所指的SDRAM空间中将缓存的记录数据以文件方式保存到TFFS2中。当有新的数据需要进行缓存时,Tl任务打断T2任务而优先进行缓存处理;当Tl 任务完成后,由T2任务完成后续的数据存储工作。以均勻覆盖写入的算法将缓存的记录数据以文件方式保存到TFFS2中。
本发明的基于VxWorks操作系统的文件存储结构及存储方法中,基于VxWorks操作系统的实时多任务设计,按照功能进行任务优先级划分,在保证系统基本功能正常的前提下,实现了大量突发数据的快速、可靠文件存储;采用两片N0RFLASH进行文件存储,根据所需存储文件的重要程度、读写操作频度进行分类,重要文件及不经常操作文件保存在 N0RFLASH1,读写操作频繁的数据文件保存到N0RFLASH2,从而降低了两个文件分区之间的物理影响,保证了系统的可靠运行;通过SDRAM存储器进行大量突发数据的缓存处理,解决了大量存储数据与慢速外设之间的矛盾,保证了数据的可靠存储;充分考虑了 N0RFLASH存储器特点,采用均勻覆盖擦写的算法,保证了 N0RFLASH整体使用寿命;基于vxworks操作系统的bootrom启动程序保存在N0RFLASH1的固定起始物理位置,不单独设计存储设备,减少了硬件开销,提高了硬件使用效率。在数据文件存储到N0RFLASH2时,检查已经保存的文件长度和数量,超出范围时删除最旧的文件,并写入新的数据文件,确保不会超出N0RFLASH 的存储容量。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制, 虽然本发明已以较佳实施例公开如上,然而,并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当然会利用揭示的技术内容作出些许更动或修饰,成为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均属于本发明技术方案的范围内。
权利要求
1.一种基于VxWorks操作系统的文件存储结构,其特征在于包括两片N0RFLASH存储器和一片SDRAM存储器;上述两片N0RFLASH存储器分别为N0RFLASH1和N0RFLASH2, N0RFLASH1的物理起始位置保存bootrom的启动代码程序,而后续位置创建为TFFSl文件分区,保存非经常变化的系统文件,N0RFLASH2创建为TFFS2文件分区,保存频繁读写操作的数据记录文件;SDRAM存储器保存突发数据,作为突发数据的临时缓存;N0RFLASH1、 N0RFLASH2分别与SDRAM存储器连接,SDRAM存储器中的缓存数据传输并保存到N0RFLASH2 上的TFFS2文件分区中。
2.一种基于VxWorks操作系统的文件存储方法,使用两片N0RFLASH存储器和一片 SDRAM存储器作为存储介质,两片N0RFLASH存储器分别为N0RFLASH1和N0RFLASH2,包括以下步骤'I:在N0RFLASH1的物理起始位置保存bootrom的启动代码程序,启动基于VxWorks的bootrom,对N0RFLASH1和N0RFLASH2分别进行初始化,分别创建基于iTrueFFS的文件系统, 每片N0RFLASH存储器各自对应创建一个文件分区,N0RFLASH1中除物理起始位置之外的后续位置对应于TFFSl文件分区,N0RFLASH2对应于TFFS2文件分区,TFFSl文件分区保存包括应用程序文件的非经常变化的参数与系统文件,TFFS2文件分区保存经常变化的一般数据记录文件,每个分区上根据要求创建不同的文件目录;②在bootrom中启动FTP,将应用程序文件保存到N0RFLASH1的文件分区TFFSl中,并启动应用程序;:f应用程序启动后,创建并启动两个不同优先级的任务T1、T2,其中Tl的优先级较高,完成大量数据的快速缓存工作,Τ2的优先级较低,完成缓存数据到TFFS2文件分区上的文件保存工作;Φ Tl任务运行后,根据突发数据即需要缓冲的数据文件的容量,在SDRAM存储器中创建环形缓存,环形缓存的大小不小于TFFS2文件分区,初始化读、写指针为缓存区起始位置;Tl任务在外部故障情况下,将突发数据缓冲到SDRAM的环形缓存中,移动写指针到下一个空闲节点,并以消息方式通知T2任务;f T2任务收到Tl任务发送的消息后,从SDRAM的环形缓存中读出指针所对应的位置,并将环形缓存中读指针所指的SDRAM空间中的数据以文件方式顺序保存到TFFS2文件分区中,在文件向TFFS2文件分区进行保存的同时改变读指针的位置,直到读写指针位置一致。
3.根据权利要求2所述的基于VxWorks操作系统的文件存储方法,其特征在于T2任务收到Tl任务的消息后,首先检查TFFS2文件分区上文件个数及容量是否达到TFFS2文件分区的最大限值,若达到最大限值则删除TFFS2文件分区中保存时间最久的数据记录文件,然后从环形缓存的读指针所指的SDRAM空间中将缓存的记录数据以文件方式顺序保存至Ij TFFS2 中。
4.根据权利要求2或3所述的基于VxWorks操作系统的文件存储方法,其特征在于 当有新的数据需要进行缓存时,Tl任务打断T2任务而优先进行缓存处理;当Tl任务完成后,由T2任务完成后续的数据存储工作。
5.根据权利要求2或3所述的基于VxWorks操作系统的文件存储方法,其特征在于 以均勻覆盖写入的算法将缓存的记录数据以文件方式保存到TFFS2中。
全文摘要
一种基于VxWorks操作系统的文件存储结构及存储方法,在两片NORFLASH上实现了TrueFFS的文件系统,根据所需存储文件的重要程度、读写操作频度进行分类,将重要系统文件和数据文件分开保存,从而降低了两个文件分区之间的物理影响,保证了系统的可靠运行;高优先级任务T1完成大量突发数据到SDRAM上的快速缓存工作,从根本上保证了突发数据的快速记录,并通过消息方式通知低优先级任务T2;任务T2收到消息后,将SDRAM中缓存的数据以文件方式顺序保存到指定的TFFS2文件分区中。通过SDRAM存储器进行大量突发数据的缓存处理,解决了大量存储数据与慢速外设之间的矛盾,保证了数据的可靠存储。
文档编号G06F17/30GK102521410SQ20111044550
公开日2012年6月27日 申请日期2011年12月28日 优先权日2011年12月28日
发明者宋金川, 曾庆钊, 李政, 王传启, 贾翔宇 申请人:天津凯发电气股份有限公司