一种使用PFLASH软件模拟EEPROM的数据存储方法与流程

文档序号:26593340发布日期:2021-09-10 21:39阅读:578来源:国知局
一种使用pflash软件模拟eeprom的数据存储方法
技术领域
1.本发明属于汽车电子嵌入式软件技术领域,具体涉及一种使用pflash软件模拟eeprom的数据存储方法。


背景技术:

2.随着半导体技术的不断进步(按照摩尔定律),mcu内部集成的逻辑功能外设越来越多,存储器也越来越大;另一方面,消费者对于汽车节能性、舒适性、互联性、安全性的要求越来越高,特别是近年来新能源电动车、车联网和自动驾驶技术的兴起,更大大加速了汽车电子技术的发展。汽车电子ecu(electronic control unit
‑‑
电控单元)集成的功能日益复杂,为了应对软件远程(在线)功能升级(增加新的功能)和bug修复的需求、对bootloader(启动加载程序)的需求越来越多。
3.ecu由单片机和各种复杂电路组成,ecu的nvm一般包括其mcu片内集成的用于存放数据的eeprom或者data

flash和用于存储程序代码/数据的code

flash/program

flash以及mpu扩展的片外nor flash或者nand

flash。
4.eeprom(electrically erasable programmable read only memory)是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片。
5.program

flash即pflash,是用来放代码或者数据的,就是主flash。现有技术主要使用多块pflash,初始化时设定一个固定的存储数据长度,对应的pflash地址。主要问题为:异常掉电很难找到上一次有效存储的数据,固定长度比实际存储的数据长度大很多时,换页时会浪费pflash空间。


技术实现要素:

6.本发明的目的就在于为了解决异常掉电,下次上电如何找到上一次有效存储的数据以及flash空间利用率不高的问题,而提供一种使用pflash软件模拟eeprom的数据存储方法。
7.本发明通过以下技术方案来实现上述目的:
8.一种使用pflash软件模拟eeprom的数据存储方法,包括以下步骤:
9.s1、构造基于pflash软件的数据结构,所述数据结构存储两个字节的参数、一个字节的序号、一个字节的crc校验,用于处理由pflash软件读取的单片机存储数据,得到第一数据;
10.s2、设置基于pflash软件的数据缓存列表和默认值列表,所述数据缓存列表用于存储所述第一数据中的参数,所述默认值列表用于存储所述第一数据中参数的默认值;
11.s3、单片机上电初始化,判断单片机是否是第一次上电以及是否从未存储过数据,若是,则将默认值列表内第一数据中参数的默认值存储至数据缓存列表中;若不是,找到当前第一数据的参数所存储的pflash页,并把当前第一数据的参数存储至数据缓存列表中;
12.s4、在当前flash页存满换页时,把当前数据缓存列表里的值写入换页后的pflash
页中。
13.作为本发明的进一步优化方案,步骤s2中,数据缓存列表和默认值列表均设置一个,分别为用于存储两个字节参数的列表。
14.作为本发明的进一步优化方案,步骤s3中,在将当前第一数据的参数存储至数据缓存列表中时,通过crc校验判断其是否与数据缓存列表中缓存的最近历史参数一样,若一样,则取消存储,若不一样,则将当前第一数据的参数存储至数据缓存列表中。
15.作为本发明的进一步优化方案,找到当前第一数据中参数对应的最近历史参数的方法为:找到当前第一数据的参数存储的pflash后,按照当前第一数据中的序号,从后往前找出每个第一数据参数的最近历史参数。
16.作为本发明的进一步优化方案,步骤s3中,找到当前存储的pflash后,按照存储序号从后往前找出每个最新参数,再进行步骤s4中参数值的判断。
17.作为本发明的进一步优化方案,所述找到当前第一数据的参数所存储的pflash页的方法为:pflash软件模拟eeprom在每个单片机存储数据的pflash页设置起始地址,单片机上电后,pflash软件读取起始地址数据,判断当前的pflash页是否为当前第一数据的参数存储的pflash页。
18.作为本发明的进一步优化方案,步骤s4中,把当前数据缓存列表里的值写入换页后的pflash页中时,在起始地址更新当前pflash的状态。
19.本发明使用操作pflash写入的最小单位,可以保证下电异常时,尽量少的参数写入失败。
20.单片机异常断电,上一次最后写入的数据如果校验不过,会自动往回找上次正确写入的有效值,这就解决一些关键数据因为异常下电而丢失的问题。
21.本发明在存储数据换页的时候,并不采用固定长度整体搬运,只是把当前最新数据缓存列表写入新页,这些全部都要用到的,不会存在固定长度的pflash空间浪费问题。
22.本发明的有益效果在于:
23.1)本发明以pflash存储的4个字节的最小操作单元构造一个数据结构,可以保证下电异常时,尽量少的参数写入失败;
24.2)本发明上电读取用于模拟eeprom的每个pflash起始地址的数据,判断当前的pflash是否为当前存储的pflash,找到当前存储的pflash,从后往前找出每个参数的最新数据;
25.3)当单片机异常断电,上一次最后写入的数据如果校验不过,会自动往回找上次正确写入的有效值,这就解决一些关键数据因为异常下电而丢失的问题;
26.4)本发明在存储数据换页的时候,并不采用固定长度整体搬运,只是把当前最新数据缓存列表写入新页,这些全部都要用到的,不会存在固定长度的pflash空间浪费问题。
具体实施方式
27.下面对本技术作进一步详细描述,有必要在此指出的是,以下具体实施方式只用于对本技术进行进一步的说明,不能理解为对本技术保护范围的限制,该领域的技术人员可以根据上述申请内容对本技术作出一些非本质的改进和调整。
28.实施例一
29.一种使用pflash软件模拟eeprom的数据存储方法,包括以下步骤:
30.s1、构造基于pflash软件的数据结构,所述数据结构存储两个字节的参数、一个字节的序号、一个字节的crc校验,用于处理由pflash软件读取的单片机存储数据,得到第一数据;
31.s2、设置基于pflash软件的一个数据缓存列表和一个默认值列表,分别为用于存储两个字节参数的列表,所述数据缓存列表用于存储所述第一数据中的参数,所述默认值列表用于存储所述第一数据中参数的默认值;
32.s3、单片机上电初始化,判断单片机是否是第一次上电以及是否从未存储过数据;
33.s301、当单片机是第一次上电时,从未存储过数据,则将默认值列表内第一数据中参数的默认值存储至数据缓存列表中;
34.s302、当单片机不是第一次上电时,并在存储最新第一数据时,找到当前第一数据的参数所存储的pflash页,并把当前第一数据的参数存储至数据缓存列表中;
35.具体的,异常掉电时,最新的一个参数的crc核验肯定有问题,在将当前第一数据的参数存储至数据缓存列表中时,通过crc校验判断其是否与数据缓存列表中缓存的最近历史参数一样,若一样,则取消存储,若不一样,则将当前第一数据的参数存储至数据缓存列表中;
36.其中,找到当前第一数据中参数对应的最近历史参数的方法为:找到当前第一数据的参数存储的pflash后,按照当前第一数据中的序号,从后往前找出每个第一数据参数的最近历史参数;
37.其中,找到当前第一数据的参数所存储的pflash页的方法为:pflash软件模拟eeprom在每个单片机存储数据的pflash页设置起始地址,单片机上电后,pflash软件读取起始地址数据,判断当前的pflash页是否为当前第一数据的参数存储的pflash页;
38.s4、在当前flash页存满换页时,把当前数据缓存列表里的值写入换页后的pflash页中,并在起始地址更新当前pflash的状态。
39.本发明以pflash存储的4个字节的最小操作单元构造一个数据结构,带有序号、参数和校验信息,能够保证异常掉电尽量少的数据丢失,并且可以向上找到最新的数据;在当前flash页已经存满,需要换页时,采用动态数据缓存列表写入,有效利用了pflash的空间资源。本发明已经在力高芯片国产化bms平台使用,测试验证性能优秀。
40.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1