一种嵌入式设备的内存扩展方法技术

技术编号:34833280 阅读:12 留言:0更新日期:2022-09-08 07:27
本发明专利技术提供一种嵌入式设备的内存扩展方法,属于嵌入式应用开发内存管理领域。所述嵌入式设备设置有第一存储器和第二存储器,所述内存扩展方法包括:在第一存储器内获取第一内存块,并将当前数据的头部数据存入第一内存块,头部数据用于记录当前数据的存储信息;获取当前数据的数据长度;判断第一存储器内是否存在满足当前数据的数据长度的第二内存块;若存在,向第一存储器申请第二内存块,并将当前数据存入第二内存块;若不存在,向第二存储器申请一满足当前数据的数据长度的存储空间,并将当前数据存入存储空间;根据当前数据的存储状态更新头部数据。本发明专利技术提供的嵌入式设备的内存扩展方法,能够利用嵌入式设备进行大量数据的快速存储和读写。据的快速存储和读写。据的快速存储和读写。

【技术实现步骤摘要】
一种嵌入式设备的内存扩展方法


[0001]本专利技术涉及嵌入式应用开发内存管理领域,尤其涉及一种嵌入式设备的内存扩展方法。

技术介绍

[0002]目前嵌入式设备逐年增多,尤其是中低端嵌入式设备例如单片机设备的出货量巨大。嵌入式设备在进行单片机选型时会着重考虑成本问题,所以会选择存储资源少一些的单片机作为主控芯片,因此大部分开发人员会面临缺内存的问题。而当内存不足时,目前采用的方法大多是通过更换存储资源更多的单片机或是外挂RAM存储器来解决,但与之带来的就是成本的提升。
[0003]因此,如何提供一种嵌入式设备的内存扩展方法,以克服现有技术中存在的上述缺陷,日益成为本领域技术人员亟待解决的技术问题之一。

技术实现思路

[0004]本专利技术的目的在于提供一种嵌入式设备的内存扩展方法,以解决现有技术存在的嵌入式设备内存不足,以及通过外挂RAM存储器导致成本增加的问题。
[0005]为了达到上述目的,本专利技术提供了一种嵌入式设备的内存扩展方法,所述嵌入式设备设置有第一存储器和第二存储器,所述内存扩展方法,包括:在所述第一存储器内获取第一内存块,并将当前数据的头部数据存入所述第一内存块,所述头部数据用于记录所述当前数据的存储信息;获取所述当前数据的数据长度;判断所述第一存储器内是否存在满足所述当前数据的数据长度的第二内存块;若存在,向所述第一存储器申请所述第二内存块,并将所述当前数据存入所述第二内存块;若不存在,向所述第二存储器申请一满足所述当前数据的数据长度的存储空间,并将所述当前数据存入所述存储空间;根据所述当前数据的存储状态更新所述头部数据。
[0006]可选的,所述头部数据在所述第一存储器内的存储信息包括:所述头部数据的起始地址、所述第二内存块的引用次数、所述第二内存块的存在时间、所述第二内存块的存储长度、所述当前数据的映射状态和所述当前数据的存储位置;所述头部数据在所述第二存储器内的存储信息包括:所述当前数据的存储位置、所述存储空间是否使用状态、所述存储空间的存储长度、所述存储空间是否全存储、所述头部数据的起始地址、所述存储空间的引用次数和所述存储空间的存在时间。
[0007]可选的,所述当前数据的映射状态包括:映射状态0、映射状态1和映射状态2;其中,所述映射状态0为所述头部数据和所述当前数据均存放在所述第一存储器内;
所述映射状态1为所述头部数据存放在所述第一存储器内,所述当前数据存放在所述第二存储器内;所述映射状态2为所述头部数据和所述当前数据均存放在所述第二存储器内;当对所述嵌入式设备进行读写操作时,根据所述当前数据的映射状态进行读写操作:当所述当前数据处于映射状态0时,调用第一存储器读写接口进行第一存储器内所述当前数据的读写;当所述当前数据处于映射状态1或映射状态2时,调用第二存储器读写接口进行所述第二存储器内所述当前数据的读写。
[0008]可选的,还包括:建立第一内存管理链表和第二内存管理链表;其中,向所述第一存储器每申请一内存块,将该内存块添加至所述第一内存管理链表;向所述第二存储器每申请一存储空间,将该存储空间添加至所述第二内存管理链表。
[0009]可选的,还包括以下方式进行内存管理:根据所述第一存储器内的所述头部数据获取所述当前数据的映射状态以及计算所述当前数据的使用频率;当所述当前数据的使用频率高于第一预设值,按照第一管理规则,根据所述当前数据的映射状态,将所述当前数据和所述头部数据转存至所述第一存储器,或保留所述当前数据和所述头部数据在所述第一存储器内的原始存储位置;当所述当前数据的使用频率低于所述第一预设值且高于第二预设值时,按照第二管理规则,根据所述当前数据的映射状态,将所述当前数据转存至所述第二存储器和将所述头部数据转存至所述第一存储器,或保留所述当前数据在所述第二存储器内的原始存储位置和所述头部数据在所述第一存储器内的原始存储位置;当所述当前数据的使用频率低于所述第二预设值时,按照第三管理规则,根据所述当前数据的映射状态,将所述当前数据和所述头部数据转存至所述第二存储器,或保留所述当前数据和所述头部数据在所述第二存储器内的原始存储位置。
[0010]可选的,所述根据所述头部数据计算所述当前数据的使用频率,包括:实时遍历第一内存管理链表和第二内存管理链表,获取所述当前数据的头部数据;根据下式计算得到所述当前数据的使用频率:k=n/t式中,k为所述当前数据的使用频率,n为所述当前数据在所述第一存储器内和在所述第二存储器内的引用次数的和,t为所述当前数据在所述第一存储器内和在所述第二存储器内的存在时间的和。
[0011]可选的,所述第一管理规则包括:获取所述当前数据的映射状态,当所述当前数据处于所述映射状态1时,将所述当前数据由所述第二存储器转存至所述第一存储器内,所述头部数据的原始存储位置不改变,并更新所述当前数据为所述映射状态0;当所述当前数据处于所述映射状态2时,将所述当前数据和所述头部数据均由所述第二存储器转存至所述
第一存储器内,并更新所述当前数据为所述映射状态0;所述第二管理规则包括:获取所述当前数据的映射状态,当所述当前数据处于所述映射状态0时,将所述当前数据由所述第一存储器转存至所述第二存储器,所述头部数据的原始存储位置不改变,并更新所述当前数据为所述映射状态1;当所述当前数据处于所述映射状态2时,将所述头部数据由所述第二存储器转存至所述第一存储器,所述当前数据的原始存储位置不改变,并更新所述当前数据为所述映射状态1;所述第三管理规则包括:获取所述当前数据的映射状态,当所述当前数据处于所述映射状态0时,将所述当前数据和所述头部数据由所述第一存储器转存至所述第二存储器,并更新所述当前数据为所述映射状态2;当所述当前数据处于所述映射状态1时,将所述头部数据由所述第一存储器转存至所述第二存储器,所述当前数据的原始存储位置不改变,并更新所述当前数据为所述映射状态2。
[0012]可选的,当所述当前数据和/或所述头部数据的存储位置改变后,将同步更新第一内存管理链表和第二内存管理链表。
[0013]可选的,当将所述当前数据转存至所述第一存储器内时,所述第一存储器内需具有满足所述当前数据的数据长度的内存块,否则,所述当前数据保留在所述第二存储器内的原始存储位置;当将所述当前数据转存至所述第二存储器内时,所述第二存储器内需具有满足所述当前数据的数据长度的存储空间,否则,所述当前数据保留在所述第一存储器内的原始存储位置。
[0014]可选的,还包括采用以下方式释放内存块:根据所述头部数据获取所述当前数据的映射状态;当所述当前数据处于所述映射状态0时,先释放存储所述当前数据的内存块,再释放存储所述头部数据的内存块,并更新第一内存管理链表;当所述当前数据处于所述映射状态1时,先将第二内存管理链表中所述当前数据的使用状态更新为未使用状态,再释放存储所述头部数据的内存块,并同步更新第一内存管理链表;当所述当前数据处于所述映射状态2时,将第二内存管理链表中所述头部数据的使用状态更新为未使用状态。
[0015]与现有本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式设备的内存扩展方法,其特征在于,所述嵌入式设备设置有第一存储器和第二存储器,所述内存扩展方法,包括:在所述第一存储器内获取第一内存块,并将当前数据的头部数据存入所述第一内存块,所述头部数据用于记录所述当前数据的存储信息;获取所述当前数据的数据长度;判断所述第一存储器内是否存在满足所述当前数据的数据长度的第二内存块;若存在,向所述第一存储器申请所述第二内存块,并将所述当前数据存入所述第二内存块;若不存在,向所述第二存储器申请一满足所述当前数据的数据长度的存储空间,并将所述当前数据存入所述存储空间;根据所述当前数据的存储状态更新所述头部数据。2.如权利要求1所述的一种嵌入式设备的内存扩展方法,其特征在于,所述头部数据在所述第一存储器内的存储信息包括:所述头部数据的起始地址、所述第二内存块的引用次数、所述第二内存块的存在时间、所述第二内存块的存储长度、所述当前数据的映射状态和所述当前数据的存储位置;所述头部数据在所述第二存储器内的存储信息包括:所述当前数据的存储位置、所述存储空间是否使用状态、所述存储空间的存储长度、所述存储空间是否全存储、所述头部数据的起始地址、所述存储空间的引用次数和所述存储空间的存在时间。3.如权利要求2所述的一种嵌入式设备的内存扩展方法,其特征在于,所述当前数据的映射状态包括:映射状态0、映射状态1和映射状态2;其中,所述映射状态0为所述头部数据和所述当前数据均存放在所述第一存储器内;所述映射状态1为所述头部数据存放在所述第一存储器内,所述当前数据存放在所述第二存储器内;所述映射状态2为所述头部数据和所述当前数据均存放在所述第二存储器内;当对所述嵌入式设备进行读写操作时,根据所述当前数据的映射状态进行读写操作:当所述当前数据处于映射状态0时,调用第一存储器读写接口进行第一存储器内所述当前数据的读写;当所述当前数据处于映射状态1或映射状态2时,调用第二存储器读写接口进行所述第二存储器内所述当前数据的读写。4.如权利要求3所述的一种嵌入式设备的内存扩展方法,其特征在于,还包括:建立第一内存管理链表和第二内存管理链表;其中,向所述第一存储器每申请一内存块,将该内存块添加至所述第一内存管理链表;向所述第二存储器每申请一存储空间,将该存储空间添加至所述第二内存管理链表。5.如权利要求3

4任一项所述的一种嵌入式设备的内存扩展方法,其特征在于,还包括以下方式进行内存管理:根据所述第一存储器内的所述头部数据获取所述当前数据的映射状态以及计算所述当前数据的使用频率;当所述当前数据的使用频率高于第一预设值,按照第一管理规则,根据所述当前数据的映射状态,将所述当前数据和所述头部数据转存至所述第一存储器,或保留所述当前数
据和所述头部数据在所述第一存储器内的原始存储位置;当所述当前数据的使用频率低于所述第一预设值且高于第二预设值时,按照第二管理规则,根据所述当前数据的映射状态,将所述当前数据转存至所述第二存储器和将所述头部数据转存至所述第一存储器,或保留所述当前数据在所述第二存储器内的原始存储位置和所述头部数据在所述第一存储器内的原始存储位置;当所述当前数据的使用频率低于所述第二预设值时,按照第三管理规则,根据所述当前数据的映射状态,将所...

【专利技术属性】
技术研发人员:井洪业张琳张善睿邓波
申请(专利权)人:北谷电子无锡有限公司泺谷科技上海有限公司北谷电子有限公司上海分公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1