本发明涉及电子信息,具体涉及一种flash芯片读写方法及装置。
背景技术:
1、嵌入式系统中存储器分为两大类:ram(random access memory,随机存储器)和prom(programmable read-only memory,可编程只读存储器)。其中,ram用于系统运行,断电后数据会丢失。芯片内部prom用于存储可执行代码,因此一般情况下采用外部可编程存储器来存储系统配置参数。
2、目前主流的外部存储器有eeprom(electrically erasable programmable read-only memory,带电可擦可编程只读存储器)和flash芯片,eeprom一般擦写寿命是100万次,容量一般在256bytes~128kbytes,一般采用iic通讯方式,速度不超过100kbps,读写速度较慢且价格较贵。flash一般擦写寿命是10万次,容量一般从1mbytes~1gbytes,一般采用spi或qspi通讯,读取速度可以达到100mbps以上,同等价位下flash的容量和速度占有绝对优势,但是其单bit擦写寿命只有eeprom的10%,在高密度存储下容易出现坏点。
3、在光伏或储能逆变器的嵌入式系统的mcu(microcontroller unit,微控制单元)和dsp(digital signal process,数字信号处理)中存在很多需要高密度存储的数据,如发电量、调度参数等,且设计寿命要达到10年以上。在光伏或储能逆变器的嵌入式系统中实时控制占据了绝大部分资源,一般不足以引入文件管理系统。因此亟需一种提高flash擦写寿命的方法。
技术实现思路
1、有鉴于此,本发明提供了一种flash芯片读写方法及装置,以解决flash芯片擦写寿命短的问题。
2、第一方面,本发明提供了一种flash芯片读写方法,所述方法包括:
3、基于待使用擦写寿命确定存储段数量;
4、基于所述存储段数量和存储段的空间大小对flash芯片的存储空间进行划分,获得多个存储段,并为所述存储空间配置起始地址,其中,所述存储段包括:索引号、有效数据和校验码,所述存储段的空间大小基于所述索引号、有效数据和校验码所占字节数预先进行设置;
5、在进行读写操作时,基于所述索引号确定待读写存储段,基于所述索引号和存储段的空间大小确定待读写存储段的偏移地址,基于所述待读写存储段的偏移地址进行数据的读写操作。
6、本实施例提供的flash芯片读写方法,利用flash芯片容量大的优势,将flash芯片划分为多个存储段,开辟n倍空间循环存储的方法,获取n倍的擦写寿命,并且循环存储方式也实现了寿命均衡,可以根据设计使用寿命和写入频次灵活配置空间大小。
7、本实施例实现了在固定的存储段数量和固定的存储段的空间大小上进行循环擦写的效果,且具有寻址效率高、上电启动快等优点。
8、在一种可选的实施方式中,写操作时,基于所述起始地址和所述存储段数量遍历有效存储段,获取目标存储段,其中,所述目标存储段为所述有效存储段中索引号最大的存储段的下一存储段;
9、基于目标存储段的索引号和所述存储段数量,获得目标存储段偏移量;
10、基于所述目标存储段偏移量和所述存储段的空间大小,获得目标存储段的相对偏移地址;
11、基于所述目标存储段的相对偏移地址和所述起始地址,确定所述目标存储段的偏移地址;
12、基于所述索引号和待写入数据,确定校验码;
13、将所述索引号、待写入数据和校验码组合为所述存储段,基于所述目标存储段的偏移地址写入flash芯片中。
14、本实施例提供的flash芯片读写方法,利用flash芯片容量大的优势,将flash芯片划分为多个存储段,开辟n倍空间循环存储的方法,获取n倍的擦写寿命。
15、在一种可选的实施方式中,在基于所述索引号和待写入数据,确定校验码之前,还包括:
16、基于所述目标存储段的偏移地址和所述存储段的空间大小,确定写入结束地址;
17、在所述目标存储段的偏移地址减1和所述写入结束地址不在一个最小擦除单位内的情况下,擦除所述目标存储段覆盖到的除目标存储段的偏移地址减1所在最小擦除单位外的所有最小擦除单位的数据。
18、本实施例提供的flash芯片读写方法,利用flash芯片容量大的优势,将flash芯片划分为多个存储段,开辟n倍空间循环存储的方法,获取n倍的擦写寿命。
19、在一种可选的实施方式中,在所述目标存储段的偏移地址减1和所述写入结束地址在一个最小擦除单位内的情况下,返回执行基于所述索引号和待写入数据,确定校验码的步骤。
20、本实施例提供的flash芯片读写方法,利用flash芯片容量大的优势,将flash芯片划分为多个存储段,开辟n倍空间循环存储的方法,获取n倍的擦写寿命。
21、在一种可选的实施方式中,读操作时,在索引号大于等于索引号阈值的情况下,基于所述索引号和所述存储段数量,获取目标存储段偏移量;
22、基于所述目标存储段偏移量和所述存储段的空间大小,获得目标存储段的相对偏移地址;
23、基于目标存储段的相对偏移地址和所述起始地址,确定目标存储段的偏移地址;
24、基于所述目标存储段的偏移地址和所述存储段的空间大小,读取所述目标存储段的数据。
25、本实施例提供的flash芯片读写方法,利用flash芯片容量大的优势,将flash芯片划分为多个存储段,开辟n倍空间循环存储的方法,获取n倍的擦写寿命。
26、在一种可选的实施方式中,在索引号小于索引号阈值的情况下,返回无有效数据。
27、在一种可选的实施方式中,在进行数据的读写操作之前,所述方法还包括:
28、对所述flash芯片进行上电初始化读取。
29、在一种可选的实施方式中,所述对所述flash芯片进行上电初始化读取,包括:
30、基于所述起始地址和所述存储段数量遍历有效存储段,在所述flash芯片中没有有效存储段的情况下,对所述flash芯片进行初始化处理。
31、本实施例提供的flash芯片读写方法,利用flash芯片容量大的优势,将flash芯片划分为多个存储段,开辟n倍空间循环存储的方法,获取n倍的擦写寿命。
32、第二方面,本发明提供了一种flash芯片读写装置,所述装置包括:
33、存储段数量确定模块,用于基于待使用擦写寿命确定存储段数量;
34、存储段获取模块,用于基于所述存储段数量和存储段的空间大小对flash芯片的存储空间进行划分,获得多个存储段,并为所述存储空间配置起始地址,其中,所述存储段包括:索引号、有效数据和校验码,所述存储段的空间大小基于所述索引号、有效数据和校验码所占字节数预先进行设置;
35、读写操作模块,用于在进行读写操作时,基于所述索引号确定待读写存储段,基于所述索引号和存储段的空间大小确定待读写存储段的偏移地址,基于所述待读写存储段的偏移地址进行数据的读写操作。
36、在一种可选的实施方式中,所述装置包括:
37、目标存储段确定模块,用于写操作时,基于所述起始地址和所述存储段数量遍历有效存储段,获取目标存储段,其中,所述目标存储段为所述有效存储段中索引号最大的存储段的下一存储段;
38、第一目标存储段偏移量获取模块,用于基于目标存储段的索引号和所述存储段数量,获得目标存储段偏移量;
39、第一相对偏移地址获取模块,用于基于所述目标存储段偏移量和所述存储段的空间大小,获得目标存储段的相对偏移地址;
40、第一偏移地址确定模块,用于基于所述目标存储段的相对偏移地址和所述起始地址,确定所述目标存储段的偏移地址;
41、校验码确定模块,用于基于所述索引号和待写入数据,确定校验码;
42、数据写入模块,用于将所述索引号、待写入数据和校验码组合为所述存储段,基于所述目标存储段的偏移地址写入flash芯片中。
1.一种flash芯片读写方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求2所述的方法,其特征在于,在基于所述索引号和待写入数据,确定校验码之前,还包括:
4.根据权利要求3所述的方法,其特征在于,在所述目标存储段的偏移地址减1和所述写入结束地址在一个最小擦除单位内的情况下,返回执行基于所述索引号和待写入数据,确定校验码的步骤。
5.根据权利要求1所述的方法,其特征在于,
6.根据权利要求5所述的方法,其特征在于,在索引号小于索引号阈值的情况下,返回无有效数据。
7.根据权利要求1所述的方法,其特征在于,在进行数据的读写操作之前,所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,所述对所述flash芯片进行上电初始化读取,包括:
9.一种flash芯片读写装置,其特征在于,所述装置包括:
10.根据权利要求9所述的装置,其特征在于,所述装置包括:
