CN102629234A - 一种单片机片内置Flash数据快速检索方法 - Google Patents

一种单片机片内置Flash数据快速检索方法 Download PDF

Info

Publication number
CN102629234A
CN102629234A CN2012100151572A CN201210015157A CN102629234A CN 102629234 A CN102629234 A CN 102629234A CN 2012100151572 A CN2012100151572 A CN 2012100151572A CN 201210015157 A CN201210015157 A CN 201210015157A CN 102629234 A CN102629234 A CN 102629234A
Authority
CN
China
Prior art keywords
memory address
data
index value
data message
data information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012100151572A
Other languages
English (en)
Other versions
CN102629234B (zh
Inventor
陈万
刘和兴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen M2micro Co ltd
Original Assignee
M2MICRO (CHANGSHU) CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by M2MICRO (CHANGSHU) CO Ltd filed Critical M2MICRO (CHANGSHU) CO Ltd
Priority to CN201210015157.2A priority Critical patent/CN102629234B/zh
Publication of CN102629234A publication Critical patent/CN102629234A/zh
Application granted granted Critical
Publication of CN102629234B publication Critical patent/CN102629234B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明适用于数据检索技术领域。本发明公开一种单片机片内置Flash数据快速检索方法,建立数据信息编号对应的索引值与存储地址的映射表,将数据信息按索引值的大小依次存储;检索数据信息时,根据该数据信息编号对应的索引值找到与该索引值对应的存储地址,再从该存储地址起向后查询与该编号相同的数据信息。由于该检索方法先获得每个数据信息编号的索引值,并以该索引值的大小依次存储。在对数据信息进行检索时,检索到需要的数据信息对应的索引值时,再通过该索引值与数据信息存储地址映射关系,在映射表中找到相应的数据信息存储地址,并从该存储地址起向后查询与该编号相同的数据信息,不必对数据信息全面的扫描检索,提高检索效率。

Description

一种单片机片内置Flash数据快速检索方法
技术领域
本发明涉及数据检索技术领域,特别涉及一种单片机片内置Flash数据快速检索方法。
背景技术
在嵌入式产品设计中,通常需要存储一些配置参数、运行结果等数据。而且这些数据需要能长期保存,不能在掉电时丢失。检索存储数据的效率,将直接影响产品的性能,甚至决定产品设计的成败。
目前在嵌入式产品设计中主要采用以下三种方法:
方法一:嵌入式系统增加可擦写存储器,如DRAM,EEPROM等。单片机将产品的配置参数、运行数据等存储到可擦写存储器中。
这种方法可以高效读写数据,但有三方面的缺点,一是需要增加对片外存储器的驱动的支持,二是额外的片外存储器增加产品的成本,三是增加嵌入式产品单板的面积,同时也会占用单片机的有限的管脚来对片外存储器的读写。
方法二:针对方法一的缺点,例如公开号为CN101645014A的中国专利,提出一种用单片机内置FLASH程序存贮器模拟EEPROM的数据存储方法,但该方案仍然借助外部存储器来实现。同时需要增加掉电检测电路和增加电路在掉电时电力续航能力。如果电路在掉电后续航能力不足,将导致数据不能完整写入,导致数据丢失。同时上电时需从Flash中读取数据,将导致系统上电时间较长。
方法三:针对方法二的缺点,公开号为CN102156668A的中国专利,提出一种利用单片机内置FLASH程序存贮器进行实时数据记忆的方法。但在检索指定数据时需要花费大量的时间,在嵌入式系统中,不能满足实时性的要求,将严重影响产品的性能。特别在数据量较大时,该缺点将越明显。
发明内容
本发明主要解决的技术问题是提供一种单片机片内置Flash数据快速检索方法,该快速检索方法可以避免单片机增加外置存储器时增加嵌入式产品单板的面积,降低控制电路的设计难度和成本;同时也可以避免用单片机内置FLASH程序存贮器模拟EEPROM的数据存储时,检索配置参数和运行数据时间长,提高系统实时性。
为了解决上述问题,本发明提供一种单片机片内置Flash数据快速检索方法,该单片机片内置Flash数据快速检索方法包括:
建立数据信息编号对应的索引值与存储地址的映射表,将数据信息按索引值的大小依次存储;
检索存储的数据信息时,先根据该数据信息编号对应的索引值,在映射表中找到与该索引值对应的存储地址,再从该存储地址起向后查询与该编号相同的数据信息。
进一步地说,赋予每个数据信息唯一的编号,建立数据信息编号对应的索引值与存储地址的映射表,将数据信息按索引值的大小依次存储的步骤包括:
定义2字节的变量作为起始存储地址;
通过哈希算法获得每个待存储的数据信息编号的1字节的哈希值,并将该哈希值作为索引值,确定该索引值在映射表中对应的存储地址是否为0XFFFF;当存储地址为0XFFFF时,检索与该索引值对应的存储地址并赋值给起始存储地址;
从数据信息编号的索引值开始向后遍历,确定是否存在有效的存储地址,当存在有效存储地址时查找最近的具有有效存储地址的数据信息编号的索引值,并将最后存储地址后一位赋值给起始存储地址,并将最后存储地址长度增加为数据信息的长度;
计算本次请求存储的数据存储的起始存储地址所在页的序号;
从数据信息存储的起始存储地址所在页序号开始增加存储数据信息,将请求插入存储的数据信息编号的索引值对应的存储地址设置为起始存储地址,该起始存储地址之后的数据信息依次向后偏移插入存储的数据信息的长度;
更新映射表。
进一步地说,所述哈希算法包括MD2、MD4、MD5和SHA-1。
进一步地说,计算本次请求数据信息存储的起始存储地址所在页序号的步骤包括:所述页序号为起始存储地址/每页大小,其中每页大小表示单片机片内Flash每页的大小。
进一步地说,从数据信息存储的起始存储地址所在页序号开始增加存储数据信息,将请求存储的数据信息插入到起始存储地址,该起始存储地址之后的数据依次向后偏移插入存储的数据信息的长度的步骤包括:
先将起始存储地址之前的数据拷贝到缓存页,将本次请求存储的数据信息写入缓存页,然后从页序号将起始存储地址后的数据信息依次拷贝到缓存页,直到缓存页写满;再将剩余的页序号中数据信息长度先拷贝到RAM中;然后将页序号后一页擦除,最后将缓存页中的数据信息拷回到页序号后一页,从而实现请求存储数据的插入存储,请求存储的数据信息插入存储到起始存储地址时,该起始存储地址之后的数据依次向后偏移请求存储的数据信息的长度。
进一步地说,更新映射表的步骤包括:将插入存储的数据信息编号的索引值之前的映射表保持不变,将插入存储的数据信息编号的索引值对应的存储地址设置为起始存储地址,将插入存储的数据信息编号的索引值之后存在有效的存储地址长度增加插入存储的数据信息的长度。
进一步地说,检索存储的数据信息时,先根据该数据信息编号对应的索引值,在映射表中找到与该索引值对应的存储地址,再从该存储地址起向后查询与该编号相同的数据信息的步骤包括:
计算待检索的数据信息编号的索引值;
在索引值与存储地址对应关系的映射表中,查找待检索的数据信息编号索引值对应的路由信息的存储地址;
确定待检索的数据信息编号索引值对应的存储地址是否为无效地址,当待检索的数据信息编号索引值对应的存储地址为有效地址时,检索该索引值对应的存储地址,并从该存储地址开始向后遍历,查找与待检索的数据信息编号一致的数据信息,存在与待检索的数据信息编号一致的数据信息时,则检索并返回该数据信息编号对应的数据信息,完成检索。
进一步地说,请求检索的数据信息时,先根据请求存储数据信息编号,计算出1字节的哈希值,并将该哈希值为索引值。
本发明单片机片内置Flash数据快速检索方法,建立数据信息编号对应的索引值与存储地址的映射表,将数据信息按索引值的大小依次存储;在读取存储的数据信息时,根据需检索数据信息编号对应的索引值,在映射表中找到相应的存储地址,从该地址起查询与该编号一致的信息。由于该检索方法是以每个数据信息编号的索引值大小依次存储。由于在存储数据信息时建立了每个数据信息编号对应的索引值与存储地址的映射表。在检索数据信息时,先通过检索该数据信息编号对应的索引值,再根据该索引值与映射表中的存储地址对应关系找到该索引值相应的存储地址,从该存储地址起查询与该编号一致的数据信息,而不必全面在存储器全面的扫描检索,提高检索效率。可以避免单片机增加外置存储器时,增加嵌入式产品单板的面积,降低控制电路的设计难度和成本;同时也可以避免采用单片机内置FLASH程序存贮器模拟EEPROM的数据存储时,读取配置参数和运行数据时间长,提高系统的实时性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,而描述中的附图是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1是本发明单片机片内置Flash数据快速检索方法流程图。
图2是单片机片内Flash结构示意图。
图3是本发明实施例管理多只电表的集中器存储数据信息流程意示图。
图4是本发明实施例管理多只电表的集中器检索数据流程意示图。
下面结合实施例,并参照附图,对本发明目的的实现、功能特点及优点作进一步说明。
具体实施方式
为了使要发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明一种单片机片内置Flash数据快速检索方法,其包括以下步骤:
S10步骤,建立数据信息编号对应的索引值与存储地址的映射表,将数据信息按索引值的大小依次存储。
具体地说,首先赋予每一个存储的数据信息唯一的编号,通过哈希算法,如采用MD2、MD4、MD5和SHA-1等算法计算每个数据信息编号的1字节的哈希值,并将该哈希值作为索引值。
如表1所示,存储的信息包括索引值、编号、数据信息长度和数据信息。
  索引值   编号   数据信息长度   数据信息
表1
建立和保存数据信息编号对的索引值和存储地址的映射表,即不同数据信总编号对应的索引值与该索引值对应的数据信息存储的存储地址映射关系。
当多个数据信息编号对应同一个索引值时,该索引值对应为最后请求存储的数据信息的存储地址,该索引值对应的其他数据信息编号的数据信息依次向后偏移存储。当该映射表在有新的数据请求存储时按数据信息编号对应的索引值大小顺序自动更新。所述映射表格式如表2所示。
  索引值   存储地址
表2
将数据信息按其编号的索引值的大小依次存储。先定义两个字节的变量作为起始存储地址;通过哈希算法获得每个待存储的数据信息编号的1字节的哈希值,并将该哈希值作为索引值,确定该索引值在映射表中对应的存储地址是否为0XFFFF;当存储地址为0XFFFF时,将该索引值对应的存储地址赋值给待存储数据信息的起始存储地址;当存储地址是0XFFFF时,从数据信息编号的索引值开始向后遍历,确定是否存在有效的存储地址,当存在有效存储地址时查找最近的具有有效存储地址的数据信息编号的索引值,并将最后存储地址后一位赋值给起始存储地址,并将最后存储地址长度增加为数据信息的长度;计算本次请求存储的数据存储的起始存储地址所在页的序号;
从数据信息存储的起始存储地址所在页序号开始增加存储数据信息,将请求插入存储的数据信息编号的索引值对应的存储地址设置为起始存储地址,该起始存储地址之后的数据信息依次向后偏移插入存储的数据信息的长度;即先将起始存储地址之前的数据拷贝到缓存页,将本次请求存储的数据信息写入缓存页,然后从页序号将起始存储地址后的数据信息依次拷贝到缓存页,直到缓存页写满;再将剩余的页序号中数据信息长度先拷贝到RAM中;然后将页序号后一页擦除,最后将缓存页中的数据信息拷回到页序号后一页,从而实现请求存储数据的插入存储,请求存储的数据信息插入存储到起始存储地址时,该起始存储地址之后的数据依次向后偏移。
最后更新映射表完成数据信息存储,即当待插入的存储数据信息对应的索引值在映射表中是0FFFF时,将本次存储的起始存储地址设置为该索引对应的存储地址,将插入存储的数据信息编号的索引值之前的映射表保持不变,将插入存储的数据信息编号的索引值对应的存储地址设置为起始存储地址,将插入存储的数据信息编号的索引值之后存在有效的存储地址长度增加插入存储的数据信息的长度。
S11步骤,检索存储的数据信息时,先根据该数据信息编号对应的索引值,在映射表中找到与该索引值对应的存储地址,再从该存储地址起向后查询与该编号相同的数据信息。
具体地说,检索存储的数据信息时,先根据待检索数据信息的编号通过哈希算法获得对应的索引值,在索引值与存储地址对应关系的映射表中,查找待检索的数据信息编号索引值对应的路由信息的存储地址;再确定待检索的数据信息编号索引值对应的存储地址是否为无效地址,当待检索的数据信息编号索引值对应的存储地址为有效地址时,检索该索引值对应的存储地址,并从该存储地址开始向后遍历,查找与待检索的数据信息编号一致的数据信息,存在与待检索的数据信息编号一致的数据信息时,则检索并返回该数据信息编号对应的数据信息,完成检索。
由于该检索方法先采用哈希算法获得每个数据信息编号的索引值,并以该索引值的大小依次存储,并建立索引值与存储的数据信息映射关系,在对数据信息进行检索时,只需要检索数据信息编号对应的索引值;当检索到需要的数据信息对应的索引值时,再通过该索引值与数据信息存储地址映射关系,在映射表中找到相应的数据信息存储地址,并从该存储地址起向后查询与该编号相同的数据信息信息,而不必全面在存储器全面的扫描检索,提高检索效率。可以避免单片机增加外置存储器时增加嵌入式产品单板的面积,降低控制电路的设计难度和成本;同时也可以避免采用单片机内置FLASH程序存贮器模拟EEPROM的数据存储时,读取配置参数和运行数据时间长,提高系统实时性。
为了更好说明本发明单片机片内置Flash数据快速检索方法,现以管理100只电表的集中器为例说明,其中电表的电表编号为6个字节。(使用本方法检索到指定电表的信息的时间将比传统的方法节省90%以上,管理的数据越多,提高的效率越明显。)
在存储数据信息时保证单片机片内Flash除了程序区域外有足够的区域作为存储区域。
单片机片内Flash是以页来划分,Flash的擦除需要以页为单位,Flash的写入需要写入位置为0XFFFF。根据片内Flash的特性,将机片内Flash划分为如图2所示结构。该Flash包括程序区和非程序区,其中非程序区由缓存页、映射表和数据信息构成的数据存储区以及用于扩展的空白区。
所述非代码区域需要能存储所有电表的信息,需要一页来存储映射表,需要一页作为数据的缓存页,需要存储2字节的当前存储数据信息的最后地址。
映射表中的哈希值0~255对应的存储地址初始化为0XFFFF,当对应电表编号的哈希值有存储请求时,执行完存储操作后,该映射表中相应的哈希值对应的存储地址将更新。
如图3所示,所述单片机片内Flash存储器数据存储流程。
当前存储数据信息的最后地址u16LastAddr在有新数据存储时更新,该值初始化为存储区域的起始位置。
步骤S101,定义两个字节的变量作为待存储数据的起始存储地址,即定义两他字节的长度;具体地说,定义两个字节变量u16InsertAddr为待插入数据信息的起始存储地址,该变量u16InsertAddr作为待插入电表数据信息的起始存储地址,定义要存储的数据信息长度为u8Len;在有数据信息请求存储时,单片机根据请求存储的数据信息长度,按表1的格式打包,计算其存储数据信息的长度为u8Len,单片机定义2字节的变量u16InsertAddr作为存储数据的起始存储地址。
步骤S102,计算待存储的电表编号的索引值;具体地说,通过哈希算法,如采用MD2、MD4、MD5和SHA-1等算法计算电表编号的哈希值u8HashValue;单片机将6字节电表编号通过哈希算法得到1字节的电表编号的哈希值u8HashValue,并将该哈希值作为其存储位置的判断依据,即并将该哈希值作为索引值。
步骤S103,判断步骤S102中获得的索引值在映射表中的对应的存储地址是否为0XFFFF;具体地说,判断电表编号的哈希值u8HashValue在映射表中的对应的存储地址是否为0XFFFF。
步骤S104,检索步骤S103中与该哈希值对应的存储地址赋值给起始存储地址;具体地说,当电表编号的哈希值u8HashValue在映射表中的对应的存储地址不是0XFFFF时,说明已经有该索引值对应的电表编号进行数据存储,将检索的存储地址赋值给起始存储地址u16InsertAddr,将本次请求存储的数据信息保存在该存储地址,并将该数据信息对应的存储地址以后的数据信息依次向后偏移;同时把映射表中从电表编号的哈希值u8HashValue以后的具有有效存储地址的电表编号的哈希值对应的存储地址的长度增加数据信息长度u8Len。
步骤S105,在映射表中从电表编号的哈希值开始向后遍历,判断是否存在有效的存储地址;具体地说,在映射表中从电表编号的哈希值u8HashValue开始向后检查,判断是否存在有效的存储地址,当存储地址为0XFFFF时,说明还没有该电表编号的哈希值对应的电表编号请求过存储,并将与该电表编号对应的数据信息存储在该地址,同时将修改映射表中该哈希值对应的存储地址为本次请求的存储地址;再从映射表中从该电表编号的哈希值u8HashValue往后查找具有有效存储地址的电表编号的哈希值。
步骤S106,在映射表中从电表编号的哈希值向后,查找最近的具有有效行储地址的哈希值;具体地说,在映射表中从哈希值u8HashValue向后,查找最近的具有有效的存储地址的哈希值u8TmpHash,取得有效存储地址的哈希值u8TmpHash对应的存储地址赋值起始存储地址u16InsertAddr;当存在有效的存储地址的哈希值u8TmpHash,将该哈希值对应的存储地址赋值给起始存储地址u16InserAddr。
步骤S107,将最后存储地址后一位赋值给起始存储地址,并将最后存储地址长度增加;具体地说,当不存在有效的存储地址时,即当电表编号的哈希值u8HashValue以后不存在有效的存储地址的哈希值时,将本次请求存储的数据信息保存在当前存储数据信息的最后地址后面;也就是说,将本次请求存储的数据信息保存在最后存储地址u16LastAdd的后一位,同时将最后存储地址u16LastAdd的后一位存储地址长度增加为数据信息的长度u8Len。
步骤S108,计算本次请求存储的数据存储的地址起始存储地址所在的页的序号;具体地说,计算本次请求存储的数据信息存储的起始存储地址u16InsertAdd所在页序号,该页序号PageNum为起始存储地址u16InsertAddr/每页大小Pagesize,其中该PageSize表示单片机片内Flash每页的大小。
步骤S109,从数据信息存储的起始存储地址所在页序号开始增加存储数据信息;具体地说,在页序号PageNum,先将起始存储地址u16InsertAddr之前的数据拷贝到缓存页,将本次请求存储的数据信息写入缓存页,然后从页序号PageNum将起始存储地址u16InserAddr后的数据信息依次拷贝到缓存页,直到缓存页写满。再将剩余的页序号PageNum中存储数据信息的长度u8Len的数据信息先拷贝到RAM中;然后将页序号PageNum后一页擦除,再将缓存页中的数据信息拷回到页序号PageNum后一页,从而实现请求存储数据的插入存储;依次类推,请求存储的数据信息插入存储到起始存储地址u16InsertAddr,该起始存储地址之后的数据依次向后偏移数据信息的长度u8Len的位置。所述数据信息长度与存储地址长度相对应。
步骤S110,更新映射表;具体地说,当待插入的存储数据信息对应的索引值在映射表中是0FFFF时,将本次存储的起始存储地址设置为该索引对应的存储地址,利用缓存页作为数据信息的暂存区,将电表编号的哈希值u8HashValue之前的映射表保持不变,将电表编号的哈希值u8HashValue对应的存储地址设置为起始存储地址u16InsertAddr,将电表编号的哈希值u8HashValue之后存在有效的存储地址长度增加u8Len;即将电表编号的哈希值u8HashValue(包括电表编号的哈希值u8HashValue)之前的数据拷贝到缓存页;再将电表编号的哈希值u8HashValue之后的具有有效地址的哈希值对应的有效地址长度增加为数据信息长度u8Len,并写入到缓存页,擦除原映射表,然后将更新过保存在缓存页的映射表拷贝回映射表所在页。
如图4所示,管理多只电表的集中器检索数据流程。
步骤S201,计算待检索的电表编号的索引值;具体地说,当集中器请求检索指定电表编号的电表信息时,先根据请求的电表的6字节电表编号,计算出1字节的哈希值,并以该哈希值为索引值。
步骤S202,查找索引值对应的路由信息的存储地址;具体地说,在索引值与存储地址对应关系的映射表中,根据步骤S201中的索引值查找对应的存储地址。
步骤S203,确定索引值对应的存储地址为无效地址;具体地说,当步骤S203中的索引值对应的存储地址为无效地址(0XFFFF),表示没有该电表编号对应的数据信息,返回错误信息。
步骤S204,从索引值对应的存储地址开始遍历查找和该表号一致的信息;具体地说,当步骤S203中的索引值对应的存储地址为有效地址(不是0XFFFF),检索该索引值对应的存储地址,并从该存储地址开始向后遍历,查找请求检索的电表编号一致的数据信息。
步骤S205,判断是否找到与检索的电表编号一致的数据信息,若未查找到与检索的电表编号一致的数据信息时,说明数据信息区域还没有存储与当前电表编号一致的数据信息,返回错误信息。
步骤S206,读取相庆的电表信息;具体地说,当有找到与当前电表编号一致的数据信息时,则读取并返回该电表编号对应的数据信息,完成检索。
由于在检索时,先找到检索电表信息对应的哈希值,再从该电表信息对应的哈希值之后的数据信息中查找到所需的电表信息,而不必全面在存储器全面的扫描检索,提高检索效率。可以避免单片机增加外置存储器时增加嵌入式产品单板的面积;同时也可以避免采用单片机内置FLASH程序存贮器模拟EEPROM的数据存储时,读取配置参数和运行数据时间长,数据丢失,降低控制电路的设计难度和成本。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种单片机片内置Flash数据快速检索方法,包括:
建立数据信息编号对应的索引值与存储地址的映射表,将数据信息按索引值的大小依次存储;
检索存储的数据信息时,先根据该数据信息编号对应的索引值,在映射表中找到与该索引值对应的存储地址,再从该存储地址起向后查询与该编号相同的数据信息。
2.根据权利要求1所述的单片机片内置Flash数据快速检索方法,其特征在于,建立数据信息编号对应的索引值与存储地址的映射表,将数据信息按索引值的大小依次存储的步骤包括:
定义两个字节的变量作为待存储数据信息的起始存储地址;
通过哈希算法计算每个待存储的数据信息编号的1字节的哈希值,并将该哈希值作为索引值,当存储地址为不是0XFFFF时,将该索引值对应的存储地址赋值给待存储数据信息的起始存储地址;当存储地址是0XFFFF时,在映射表中从数据信息编号的索引值开始向后遍历,确定是否存在有效的存储地址,当存在有效存储地址时查找最近的具有有效存储地址的数据信息编号的索引值,并将最后存储地址后一位赋值给起始存储地址,并将最后存储地址长度增加为数据信息的长度;
计算本次请求存储的数据存储的起始存储地址所在页的序号;
从数据信息存储的起始存储地址所在页序号开始增加存储数据信息,将请求插入存储的数据信息编号的索引值对应的存储地址设置为起始存储地址,该起始存储地址之后的数据信息依次向后偏移插入存储的数据信息的长度;
更新映射表。
3.根据权利要求2所述的单片机片内置Flash数据快速检索方法,其特征在于:
所述哈希算法包括MD2、MD4、MD5和SHA-1。
4.根据权利要求2所述的单片机片内置Flash数据快速检索方法,其特征在于,计算本次请求数据信息存储的起始存储地址所在页序号的步骤包括:
所述页序号为起始存储地址/每页大小,其中每页大小表示单片机片内Flash每页的大小。
5.根据权利要求2所述的单片机片内置Flash数据快速检索方法,其特征在于,从数据信息存储的起始存储地址所在页序号开始增加存储数据信息,将请求存储的数据信息插入到起始存储地址,该起始存储地址之后的数据依次向后偏移插入存储的数据信息的长度的步骤包括:
先将起始存储地址之前的数据拷贝到缓存页,将本次请求存储的数据信息写入缓存页,然后从页序号将起始存储地址后的数据信息依次拷贝到缓存页,直到缓存页写满;再将剩余的页序号中数据信息长度先拷贝到RAM中;然后将页序号后一页擦除,最后将缓存页中的数据信息拷回到页序号后一页,从而实现请求存储数据的插入存储,请求存储的数据信息插入存储到起始存储地址时,该起始存储地址之后的数据依次向后偏移请求存储的数据信息的长度。
6.根据权利要求5所述的单片机片内置Flash数据快速检索方法,其特征在于,更新映射表的步骤包括:
当待插入的存储数据信息对应的索引值在映射表中是0FFFF时,将本次存储的起始存储地址设置为该索引对应的存储地址,将插入存储的数据信息编号的索引值之前的映射表保持不变,将插入存储的数据信息编号的索引值对应的存储地址设置为起始存储地址,将插入存储的数据信息编号的索引值之后存在有效的存储地址长度增加插入存储的数据信息的长度。
7.根据权利要求1或5所述的单片机片内置Flash数据快速检索方法,其特征在于,检索存储的数据信息时,先根据该数据信息编号对应的索引值,在映射表中找到与该索引值对应的存储地址,再从该存储地址起向后查询与该编号相同的数据信息的步骤包括:
计算待检索的数据信息编号的索引值;
在索引值与存储地址对应关系的映射表中,查找待检索的数据信息编号索引值对应的路由信息的存储地址;
从该存储地址开始向后遍历,查找与待检索的数据信息编号一致的数据信息,存在与待检索的数据信息编号一致的数据信息时,则检索并返回该数据信息编号对应的数据信息,完成检索。
8.根据权利要求7所述的单片机片内置Flash数据快速检索方法,其特征在于,请求检索的数据信息时,先根据请求存储数据信息的编号,计算出1字节的哈希值,并将该哈希值为索引值。
CN201210015157.2A 2012-01-18 2012-01-18 一种单片机片内置Flash数据快速检索方法 Expired - Fee Related CN102629234B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210015157.2A CN102629234B (zh) 2012-01-18 2012-01-18 一种单片机片内置Flash数据快速检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210015157.2A CN102629234B (zh) 2012-01-18 2012-01-18 一种单片机片内置Flash数据快速检索方法

Publications (2)

Publication Number Publication Date
CN102629234A true CN102629234A (zh) 2012-08-08
CN102629234B CN102629234B (zh) 2015-01-21

Family

ID=46587494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210015157.2A Expired - Fee Related CN102629234B (zh) 2012-01-18 2012-01-18 一种单片机片内置Flash数据快速检索方法

Country Status (1)

Country Link
CN (1) CN102629234B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103780508A (zh) * 2014-02-20 2014-05-07 北京经纬恒润科技有限公司 Can总线报文的软件滤波方法、系统及电子控制单元
CN104021203A (zh) * 2014-06-17 2014-09-03 贝壳网际(北京)安全技术有限公司 一种用于访问网页的方法及装置
CN104820641A (zh) * 2015-04-16 2015-08-05 上海冉能自动化科技有限公司 减少flash擦除次数的方法
CN105279442A (zh) * 2015-09-23 2016-01-27 廖斌 一种高效率的电子钥匙权限验证方法
CN105426318A (zh) * 2015-11-12 2016-03-23 宁波伟依特照明电器有限公司 一种pic单片机的ram寻址方法
CN105550345A (zh) * 2015-12-25 2016-05-04 百度在线网络技术(北京)有限公司 文件操作方法和装置
CN106484711A (zh) * 2015-08-26 2017-03-08 北京国双科技有限公司 数据遍历方法及装置
CN109582230A (zh) * 2018-11-20 2019-04-05 深圳松诺技术有限公司 一种基于矩阵式索引的数据存取方法及存取系统
CN111754350A (zh) * 2020-08-28 2020-10-09 支付宝(杭州)信息技术有限公司 并行获取区块链中的交易访问变量的编号的方法和装置
CN112119383A (zh) * 2019-10-12 2020-12-22 深圳市大疆创新科技有限公司 一种数据处理方法、设备、系统及存储介质
US11263623B1 (en) 2020-08-28 2022-03-01 Alipay (Hangzhou) Information Technology Co., Ltd. Method and apparatus for grouping transactions in blockchain
CN116204127A (zh) * 2023-03-01 2023-06-02 钛玛科(北京)工业科技有限公司 一种防止数据在存储过程中发生丢失和错误的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934796B1 (en) * 2002-02-01 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with hashing function
US7058642B2 (en) * 2002-03-20 2006-06-06 Intel Corporation Method and data structure for a low memory overhead database
CN1940922A (zh) * 2005-09-30 2007-04-04 腾讯科技(深圳)有限公司 一种提高搜索信息速度的方法及系统
CN101034412A (zh) * 2007-04-02 2007-09-12 华为技术有限公司 一种信息存储的方法、信息查找的方法及引擎装置
CN102156668A (zh) * 2011-04-14 2011-08-17 松下家电研究开发(杭州)有限公司 一种利用单片机内置flash程序存贮器进行实时数据记忆的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934796B1 (en) * 2002-02-01 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with hashing function
US7058642B2 (en) * 2002-03-20 2006-06-06 Intel Corporation Method and data structure for a low memory overhead database
CN1940922A (zh) * 2005-09-30 2007-04-04 腾讯科技(深圳)有限公司 一种提高搜索信息速度的方法及系统
CN101034412A (zh) * 2007-04-02 2007-09-12 华为技术有限公司 一种信息存储的方法、信息查找的方法及引擎装置
CN102156668A (zh) * 2011-04-14 2011-08-17 松下家电研究开发(杭州)有限公司 一种利用单片机内置flash程序存贮器进行实时数据记忆的方法

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103780508A (zh) * 2014-02-20 2014-05-07 北京经纬恒润科技有限公司 Can总线报文的软件滤波方法、系统及电子控制单元
CN103780508B (zh) * 2014-02-20 2018-10-16 北京经纬恒润科技有限公司 Can总线报文的软件滤波方法、系统及电子控制单元
CN104021203A (zh) * 2014-06-17 2014-09-03 贝壳网际(北京)安全技术有限公司 一种用于访问网页的方法及装置
CN104820641A (zh) * 2015-04-16 2015-08-05 上海冉能自动化科技有限公司 减少flash擦除次数的方法
CN104820641B (zh) * 2015-04-16 2017-10-31 上海冉能自动化科技有限公司 减少flash擦除次数的方法
CN106484711A (zh) * 2015-08-26 2017-03-08 北京国双科技有限公司 数据遍历方法及装置
CN105279442A (zh) * 2015-09-23 2016-01-27 廖斌 一种高效率的电子钥匙权限验证方法
CN105426318B (zh) * 2015-11-12 2018-12-25 宁波伟依特照明电器有限公司 一种pic单片机的ram寻址方法
CN105426318A (zh) * 2015-11-12 2016-03-23 宁波伟依特照明电器有限公司 一种pic单片机的ram寻址方法
US11003625B2 (en) 2015-12-25 2021-05-11 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus for operating on file
CN105550345A (zh) * 2015-12-25 2016-05-04 百度在线网络技术(北京)有限公司 文件操作方法和装置
CN109582230A (zh) * 2018-11-20 2019-04-05 深圳松诺技术有限公司 一种基于矩阵式索引的数据存取方法及存取系统
CN109582230B (zh) * 2018-11-20 2022-04-08 深圳松诺技术有限公司 一种基于矩阵式索引的数据存取方法及存取系统
CN112119383A (zh) * 2019-10-12 2020-12-22 深圳市大疆创新科技有限公司 一种数据处理方法、设备、系统及存储介质
WO2021068267A1 (zh) * 2019-10-12 2021-04-15 深圳市大疆创新科技有限公司 一种数据处理方法、设备、系统及存储介质
CN111754350A (zh) * 2020-08-28 2020-10-09 支付宝(杭州)信息技术有限公司 并行获取区块链中的交易访问变量的编号的方法和装置
CN111754350B (zh) * 2020-08-28 2020-11-24 支付宝(杭州)信息技术有限公司 并行获取区块链中的交易访问变量的编号的方法和装置
US11263623B1 (en) 2020-08-28 2022-03-01 Alipay (Hangzhou) Information Technology Co., Ltd. Method and apparatus for grouping transactions in blockchain
US11354335B2 (en) 2020-08-28 2022-06-07 Alipay (Hangzhou) Information Technology Co., Ltd. Method and apparatus for obtaining number for transaction-accessed variable in blockchain in parallel
CN116204127A (zh) * 2023-03-01 2023-06-02 钛玛科(北京)工业科技有限公司 一种防止数据在存储过程中发生丢失和错误的方法
CN116204127B (zh) * 2023-03-01 2024-04-02 钛玛科(北京)工业科技有限公司 一种防止数据在存储过程中发生丢失和错误的方法

Also Published As

Publication number Publication date
CN102629234B (zh) 2015-01-21

Similar Documents

Publication Publication Date Title
CN102629234A (zh) 一种单片机片内置Flash数据快速检索方法
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
CN102541927B (zh) 一种实现数据缓存的方法和装置
CN109690498B (zh) 内存管理方法和设备
US8271762B2 (en) Mapping management methods and systems
CN101944115B (zh) 一种日志搜索方法和系统
CN105190573A (zh) 存储数据的减少冗余
CN102662606B (zh) Raid配置信息的处理方法和raid控制器
CN105677580A (zh) 访问缓存的方法和装置
CN101504670A (zh) 数据操作方法、系统、客户端和数据服务器
CN104220991A (zh) 用于允许数据在nand闪存上的有效存储的架构
CN105446664B (zh) 一种对存储器进行文件存储方法和存储装置
CN104933051B (zh) 文件存储空间回收方法和装置
CN101719099A (zh) 减小固态硬盘写入放大的方法及装置
CN103019884A (zh) 基于虚拟机快照的内存页去重方法及装置
CN109634873A (zh) 固态盘存储主机系统日志信息方法、装置、设备及介质
CN107168888B (zh) Nand闪存的映射表管理方法及其系统
CN109299190A (zh) 分布式存储系统中处理对象的元数据的方法及装置
CN103677670A (zh) 读数据的方法及装置
CN101571869A (zh) 一种智能卡的文件存储、读取方法及装置
CN103186622A (zh) 一种全文检索系统中索引信息的更新方法以及装置
CN105404691A (zh) 一种文件存储的方法及装置
CN104765754A (zh) 数据存储方法及装置
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
CN102999441B (zh) 一种细粒度内存访问的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171116

Address after: 516000 Guangdong province Huizhou City Zhongkai high tech Development Zone, financial venture building 18 building 1801 room

Patentee after: HUIZHOU IOT MICROELECTRONICS CO.,LTD.

Address before: No. 15, Fuhua Road, Changshou City Changshu economic and Technological Development Zone, Suzhou, Jiangsu Province

Patentee before: M2Micro (Changshu) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190911

Address after: 518000 South Block 509, 5th Floor, Yuanxing Science and Technology Building, No. 1 North Songpingshan Road, North Ring Road, Nanshan High-tech Park, Shenzhen City, Guangdong Province

Patentee after: SHENZHEN M2MICRO CO.,LTD.

Address before: Room 1801, 18th floor, Kerong Pioneer Building, Zhongkai High-tech Development Zone, Huizhou City, Guangdong Province

Patentee before: HUIZHOU IOT MICROELECTRONICS CO.,LTD.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150121