一种基于EEPORM高速存储数据的处理方法及系统与流程

文档序号:32054887发布日期:2022-11-04 20:47阅读:38来源:国知局
一种基于EEPORM高速存储数据的处理方法及系统与流程
一种基于eeporm高速存储数据的处理方法及系统
技术领域
1.本发明涉及数据存储领域,具体涉及一种基于eeporm高速存储数据的处理方法及系统。


背景技术:

2.随着汽车行业的飞速发展,汽车支持的功能也逐渐丰富多样,因此需要存储的数据也更加多样,需要存储的数据的种类也变多,例如同一款仪表可以适配多种型号的汽车,因此需要保存该车型上所支持的各项功能的标定,以及各种ecu(electronic control unit,电子控制单元)型号的标定等。同样,在汽车运行的过程中,需要不断的将总计里程,以及各种实车数据进行保存。为了使需要保存的数据在掉电后不丢失,通常采用将数据存储进eeprom(electrically erasable programmable read only memory,带电可擦可编程只读存储器)芯片中进行保存的方式。
3.虽然影响数据写入快慢的主要因素是驱动层的i2c总线(二线制同步串行总线)的波特率,波特率越高,理论上的传输速度越快,相应的数据写入速度越快。但是,应用层的写入频率是由业务所决定的,不同的功能在进行数据存储时,可能存在写入时发生冲突的问题,比如,主控芯片正在写入数据a时,此时需要保存的数据b在应用层内发生变化,需要存入数据b,亦或着此时数据a再次发生变更,需要再次写入数据a。因此,当多个相同类型或不同类型的数据同时需要写入时,如何保证数据写入的准确以及高效性,则是当前亟需解决的问题。


技术实现要素:

4.针对现有技术中存在的缺陷,本发明的目的在于提供一种基于eeporm高速存储数据的处理方法及系统,能够有效保证数据写入的准确性和高效性。
5.为达到以上目的,本发明提供的一种基于eeporm高速存储数据的处理方法,具体包括以下步骤:
6.基于数据的功能对数据进行分类,并对eeprom进行分区,且每个分区对应存放一种类型的数据;
7.对每种类型的数据均对应创建两个缓存,分别为第一缓存和第二缓存;
8.基于第一缓存接收应用层传输的数据并缓存,且第一缓存内对数据缓存完成后将缓存的数据均写入eeprom对应的分区中;
9.当第一缓存将数据写入eeprom时,判断正在写入至eeprom的数据是否发生变化:
10.若是,则将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存;
11.若否,则不做处理。
12.在上述技术方案的基础上,
13.所述eeprom中还包括分区信息;
14.所述分区信息包括当前芯片的状态,以及每个分区的起始地址和状态。
15.在上述技术方案的基础上,对于eeporm:
16.创建预设大小的第一页空间,以用于进行分区信息的存放;
17.在第一页空间之后按照设定大小进行等空间的分区,且每个分区对应存放一种类型的数据。
18.在上述技术方案的基础上,所述基于第一缓存接收应用层传输的数据并缓存,且第一缓存内对数据缓存完成后将缓存的数据均写入至eeprom对应的分区中,具体步骤包括:
19.驱动层接收应用层传输的待保存数据,同时对第一缓存进行上锁,并通过第一缓存对接收的应用层数据进行缓存;
20.待第一缓存对数据缓存完成后,驱动层基于i2c总线,将第一缓存内的数据写入至eeprom对应的分区中。
21.在上述技术方案的基础上,当将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存之后,还包括:
22.第一缓存对第二缓存传输的数据进行缓存,然后将缓存的数据写入eeprom对应的分区中。
23.在上述技术方案的基础上,
24.所述第一缓存和第二缓存均包括标志位;
25.所述第一缓存的标志位用于判断当前是否存在将数据写入eeporm的任务;
26.所述第二缓存的标志位用于在将数据写入eeporm的过程中,判断正在写入至eeprom的数据是否发生变化;
27.在上述技术方案的基础上,
28.当第一缓存内没有数据正在写入eeprom时,或者,第一缓存内之前的数据写入eeprom完成,将第二缓存内的数据写入第一缓存后,再次将第一缓存内数据写入eeprom时,均将第一缓存的标志位置为1;
29.当第一缓存的标志位置为1,应用层再次传输数据时,无论第二缓存的标志位为何值,均将第二缓存的标志位置为1。
30.在上述技术方案的基础上,
31.当第一缓存内缓存的数据写入eeprom完成后,则将第一缓存的标志位置为0;
32.当第一缓存内缓存的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存后,则将第二缓存的标志位置为0。
33.在上述技术方案的基础上,当不同类型的数据需连续写入eeprom时:
34.当前类型数据正在由对应第一缓存写入eeprom时,将下一待写类型数据缓存至该类型数据对应的第二缓存中;
35.判断当前类型数据对应的第一缓存中是否还存在待写入eeprom的数据:
36.若否,则将下一待写类型数据由对应的第二缓存写入对应第一缓存,然后再写入eeprom对应的分区中;
37.若是,则待当前类型数据对应的第一缓存中数据全部写入eeprom,且当前类型数据对应的第一缓存中不再新增数据,然后将下一待写类型数据由对应的第二缓存写入对应
第一缓存,然后再写入eeprom对应的分区中。
38.本发明提供的一种基于eeporm高速存储数据的处理系统,包括:
39.分类模块,其用于基于数据的功能对数据进行分类,并对eeprom进行分区,且每个分区对应存放一种类型的数据;
40.创建模块,其用于对每种类型的数据均对应创建两个缓存,分别为第一缓存和第二缓存;
41.写入模块,其用于基于第一缓存接收应用层传输的数据并缓存,且第一缓存内对数据缓存完成后将缓存的数据均写入eeprom对应的分区中;
42.判断模块,其用于当第一缓存将数据写入eeprom时,判断正在写入至eeprom的数据是否发生变化:
43.若是,则将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存;
44.若否,则不做处理。
45.与现有技术相比,本发明的优点在于:通过对每种类型数据均创建第一缓存和第二缓存,基于第一缓存接收应用层传输的数据并写入eeprom对应的分区中,且当第一缓存将数据写入eeprom时,若正在写入至eeprom的数据发生变,则将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存,然后写入eeprom,使得当多个相同类型或不同类型的数据同时需要写入时,在不丢失当前写入数据的情况下,最大限度的进行数据的存储工作,保证数据写入的准确性和高效性。
附图说明
46.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1为本发明实施例中一种基于eeporm高速存储数据的处理方法的流程图。
具体实施方式
48.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。
49.参见图1所示,本发明实施例提供一种基于eeporm高速存储数据的处理方法,使得当多个相同类型或不同类型的数据同时需要写入时,在不丢失当前写入数据的情况下,最大限度的进行数据的存储工作,保证数据写入的准确性和高效性。该处理方法具体包括以下步骤:
50.s1:基于数据的功能对数据进行分类,并对eeprom进行分区,且每个分区对应存放一种类型的数据;
51.s2:对每种类型的数据均对应创建两个缓存,分别为第一缓存和第二缓存;数据的
写入是为了适配在驱动层正在写入的过程中,同时收到多条写入指令,即同时收到写入相同或者不同类型数据的指令,每种数据类型均设有两个缓存。
52.s3:基于第一缓存接收应用层传输的数据并缓存,且第一缓存内对数据缓存完成后将缓存的数据均写入eeprom对应的分区中;
53.s4:当第一缓存将数据写入eeprom时,判断正在写入至eeprom的数据是否发生变化,若是,则转到s5,若否,则转到s6;
54.s5:将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存;
55.s6:不做处理。
56.对于上述过程,以下举例进行具体说明,例如,当前由多个类型的数据需要进行写入,包括数据a、数据b和数据c,则对于数据a:基于第一缓存接收应用层传输的数据a并缓存,然后将第一缓存内缓存完成的数据a写入eeprom对应的分区中,在数据a写入eeprom时,判断数据a是否发生变化,若否,则不做另外处理,继续将第一缓存内缓存完成的数据a写入eeprom对应的分区中;若是,则将应用层传输的改变后的数据a写入第二缓存,然后待第一缓存内之前缓存的数据写入eeprom完成后,将第二缓存内缓存的改变后的数据a写入第一缓存,然后第一缓存再将改变后的数据a写入eeprom对应的分区中。对于数据b和数据c,均按上述处理逻辑,基于对应的第一缓存和第二缓存进行操作,实现数据写入eeprom。
57.本发明实施例中,eeprom中还包括分区信息;分区信息包括当前芯片的状态,以及每个分区的起始地址和状态。对于eeporm:
58.a:创建预设大小的第一页空间,以用于进行分区信息的存放;
59.b:在第一页空间之后按照设定大小进行等空间的分区,且每个分区对应存放一种类型的数据。
60.即将数据首先按照功能进行分类,然后将eeprom的第一页空间用于存放分区信息,相当于整个eeprom的目录,在第一页空间之后的地址,按照设定大小进行等空间的分区,用于存放不同类型的数据。
61.在一种可能的实时方式中,第一页空间的大小为128b,用于存放不同类型数据的分区空间均为4kb。
62.本发明实施例中,基于第一缓存接收应用层传输的数据并缓存,且第一缓存内对数据缓存完成后将缓存的数据均写入至eeprom对应的分区中,具体步骤包括:
63.s301:驱动层接收应用层传输的待保存数据,同时对第一缓存进行上锁,并通过第一缓存对接收的应用层数据进行缓存;
64.s302:待第一缓存对数据缓存完成后,驱动层基于i2c总线,将第一缓存内的数据写入至eeprom对应的分区中。
65.本发明实施例中,当将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存之后,还包括:
66.第一缓存对第二缓存传输的数据进行缓存,然后将缓存的数据写入eeprom对应的分区中。
67.在本发明中,第一缓存用于驱动层接收应用层传来的需要保存的数据,驱动层利用i2c总线,将第一缓存内的数据写入至eeprom的指定地址上,且一旦驱动层接受应用层的
数据后,便将第一缓存上锁,以保证数据在写入的过程中不发生更改,否则若第一缓存内的数据校验之后发生变化,则会导致在eeprom中存入的该数据的校验码与存入的数据不匹配,从而使得在进行数据读出时,无法校验通过,从而无法确保数据的准确性。
68.而第二缓存的作用为,在第一缓存接收到应用层的数据后,第一缓存已经上锁,若此时正在写入至eeprom的数据发生变化,应用层再次调用驱动层的写入接口时,无法将数据保存至第一缓存内,此时将应用层传来的数据保存至第二缓存中,等待第一缓存内的数据全部写完之后,再将第二缓存内的数据复制到第一缓存中,从而保证在将第一缓存中的数据写入eeprom时,无论应用层调用了多少次写入指令,均会将最新的数据保存至第二缓存中。
69.本发明实施例中,第一缓存和第二缓存均包括标志位。第一缓存的标志位用于判断当前是否存在将数据写入eeporm的任务。第二缓存的标志位用于在将数据写入eeporm的过程中,判断正在写入至eeprom的数据是否发生变化。在同一类型数据写入过程中,每一种类型的数据均对应两个标志位配合使用。
70.当第一缓存内没有数据正在写入eeprom时,或者,第一缓存内之前的数据写入eeprom完成,将第二缓存内的数据写入第一缓存后,再次将第一缓存内数据写入eeprom时,均将第一缓存的标志位置为1;
71.当第一缓存的标志位置为1,应用层再次传输数据时,无论第二缓存的标志位为何值,均将第二缓存的标志位置为1。
72.当第一缓存内缓存的数据写入eeprom完成后,则将第一缓存的标志位置为0;
73.当第一缓存内缓存的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存后,则将第二缓存的标志位置为0。
74.在一种可能的实施方式中,当不同类型的数据需连续写入eeprom时:
75.当前类型数据正在由对应第一缓存写入eeprom时,将下一待写类型数据缓存至该类型数据对应的第二缓存中;
76.判断当前类型数据对应的第一缓存中是否还存在待写入eeprom的数据:
77.若否,则将下一待写类型数据由对应的第二缓存写入对应第一缓存,然后再写入eeprom对应的分区中;
78.若是,则待当前类型数据对应的第一缓存中数据全部写入eeprom,且当前类型数据对应的第一缓存中不再新增数据,然后将下一待写类型数据由对应的第二缓存写入对应第一缓存,然后再写入eeprom对应的分区中。
79.例如,当在写入数据类型x时,接收到写入数据y的指令,此时先将数据y存至其对应的第二缓存中,并将数据y对应的第一缓存标志位或第二缓存标志位置为1,表示有待写入的任务。在写完数据x后,会首先查找所有数据的第一缓存标志位是否都清零,若有未清零的项,则开始对应数据的写入流程,只有在第一缓存标志位全为0的情况下,才去判断第二缓存标志是否有待写入的任务。
80.之所以优先写入第一缓存标志位未清零的数据类型,是因为写入数据的频次有高有低,让写入频次较低的数据,有相对较高的优先级。若优先判断第二缓存标志可能会导致数据x不断更新,从而使得相同时间接收到写入指令的数据x和数据y,低频的数据y要等待高频的数据x不再更新后才开始写入。
81.以下对本发明的流程进行具体说明:
82.a:判断第一缓存标志位是否置于1,若是,则表示当前类型数据,有正在写入的任务,转到b,若否,则表示当前类型数据,无正在写入的任务,转到c;
83.b:无论第二缓存标志位等于多少,均将其置为1,然后将最新数据拷贝纸对应的缓存中,转到d;
84.c:令第一缓存标志位为1,然后将写入的数据拷贝至对应的缓存中,转到d;
85.d:启动定时器,时间到后进入回调函数,转到e;
86.e:判断当前是否有未完成的写入任务,若是,转到f,若否,转到g;
87.f:继续完成当前写入任务的流程,转到n;
88.g:判断所有数据类型对应的第一缓存标志位是否有非0项,若是,则转到h,若否,则转到i;
89.h:开始当前数据类型的写入流程,转到n;
90.i:判断所有数据类型对应的第二缓存标志位是否有非0项,若是,转到j,若否,转到k;
91.j:将对应的数据从第二缓存复制到第一缓存中,并将第二缓存标志位清零,且将第一缓存标志位置1,转到n;
92.k:判断写入过程中是否发生过地址偏移,若是,则转到l,若否,则转到m;
93.l:数据写入完成,更新目录,转到n;
94.m:结束写入,即定时器重新装载时间参数,本次循环结束。
95.n:启动定时器,并定时回调,转到d。可通过以下两种方法再次进入该回调函数中:1、在有关iic的读写完成后,启动定时器;2、完成校验或有其它步骤后启动定时器。
96.本发明实施例的基于eeporm高速存储数据的处理方法,通过对每种类型数据均创建第一缓存和第二缓存,基于第一缓存接收应用层传输的数据并写入eeprom对应的分区中,且当第一缓存将数据写入eeprom时,若正在写入至eeprom的数据发生变,则将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存,然后写入eeprom,使得当多个相同类型或不同类型的数据同时需要写入时,在不丢失当前写入数据的情况下,最大限度的进行数据的存储工作,保证数据写入的准确性和高效性。
97.本发明实施例提供的一种基于eeporm高速存储数据的处理系统,包括分类模块、创建模块、写入模块和判断模块,分类模块用于基于数据的功能对数据进行分类,并对eeprom进行分区,且每个分区对应存放一种类型的数据;创建模块用于对每种类型的数据均对应创建两个缓存,分别为第一缓存和第二缓存;写入模块用于基于第一缓存接收应用层传输的数据并缓存,且第一缓存内对数据缓存完成后将缓存的数据均写入eeprom对应的分区中;判断模块用于当第一缓存将数据写入eeprom时,判断正在写入至eeprom的数据是否发生变化:若是,则将应用层再次传输的数据写入第二缓存,并待第一缓存内之前的数据写入eeprom完成后,将第二缓存内的数据写入第一缓存;若否,则不做处理。
98.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术
将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
99.本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1