快速读取程序数据的方法和微控制器技术

技术编号:32359356 阅读:18 留言:0更新日期:2022-02-20 03:24
本发明专利技术公开了一种快速读取程序数据的方法及微控制器。该方法包括以下步骤:将预定程序作为常用程序,生成查找表,并保存在寄存器中;每次上电时,利用查找表查找到常用程序的缓存区中的地址,以从动态存储器中快速调取常用程序的程序数据,其中,查找表中包括常用程序在静态存储器中的高速区域的起始地址和终止地址;以及映射到动态存储器中的缓存区的起始地址和终止地址。本发明专利技术在调用程序时直接从缓存区中调取程序数据,可以有效提高程序数据的读取速度。的读取速度。的读取速度。

【技术实现步骤摘要】
快速读取程序数据的方法和微控制器


[0001]本专利技术涉及一种快速读取程序数据的方法,同时涉及相应的微控制器,属于计算机


技术介绍

[0002]单片机、FPGA(现场可编程逻辑门阵列)等微控制器的程序一般事先都已通过写入器固化在片内或片外程序存储器中,用于存储程序的存储器为掉电后数据不消失的静态存储器。
[0003]静态存储器用于保存数据有稳定的优点,但也有缺点。静态存储器属于低速串行存储器件,读取速度较慢,程序在高速的微控制器(例如高速单片机)中执行速度较快,静态存储器的读取速度跟不上代码运行的速度,总体运行速度的瓶颈主要在静态存储器的读取速度。高频使用的程序与低频使用的程序均需要从静态存储器中读取出来,然后被执行。这样的技术方案导致微控制器的执行效率较为低下。
[0004]在申请号为202010587489.2的中国专利技术申请中,公开了一种数据处理的方法。该方法在缓存中构建了一种共享的块索引数据结构,块索引数据结构在跳表数据结构的基础上生成具有层次结构的结构合并树。根据子镜像应用发出的读请求信息检索缓存中的块索引数据结构,当块索引数据结构的块数据满足读请求信息时,将块数据作为读请求数据返回。同时,将块索引数据结构根据响应速度分层次设置在物理存储模块中。在桌面云大批量并发启动以及并发使用场景,常用软件数据几乎必然被加载,访问热点块数据频繁。利用该方法,可以提高启动和应用程序的加载速度,减少了对物理存储模块的访问流量。但是,该方法并不适合在微控制器中使用。

技术实现思路

[0005]本专利技术所要解决的技术问题在于提供一种快速读取程序数据的方法。
[0006]本专利技术所要解决的另一技术问题在于提供一种快速读取程序数据的微控制器。
[0007]为了实现上述目的,本专利技术采用以下的技术方案:
[0008]根据本专利技术实施例的第一方面,提供一种快速读取程序数据的方法,包括以下步骤:
[0009]将预定程序作为常用程序,生成查找表,并保存在寄存器中;
[0010]每次上电时,利用查找表查找到常用程序的缓存区中的地址,以从动态存储器中快速调取常用程序的程序数据,
[0011]其中,查找表中包括常用程序在静态存储器中的高速区域的起始地址和终止地址;以及映射到动态存储器中的缓存区的起始地址和终止地址。
[0012]其中较优地,对缓存区进行分区,为高速区域地址分配对应的缓存区地址,建立映射关系,生成查找表,并将查找表保存到寄存器中;其中,缓存区的起始地址和终止地址是连续的。
[0013]其中较优地,各个缓存区与对应的各高速区域的数量、大小分别相同。
[0014]其中较优地,每次上电时,利用查找表查找到常用程序的缓存区中的地址,以从动态存储器中快速调取常用程序的程序数据的步骤,包括以下子步骤:
[0015]S1:微控制器上电后自动运行启动代码;
[0016]S2:读取静态存储器中的查找表;
[0017]S3:根据常用程序的高速区域地址,从查找表中获得对应的缓存区地址;
[0018]S4:根据高速区域地址和缓存区地址,将常用程序的数据存储到相应的缓存区。
[0019]其中较优地,所述方法还包括以下步骤:
[0020]S5:接收待调用程序在静态存储器中的地址;
[0021]S6:将步骤S5中得到的地址与查找表中的高速区域地址范围进行比较;
[0022]若位于高速区域内,则进入步骤S7;否则进入步骤S8;
[0023]S7:跳转到缓存区地址读取待调用程序的程序数据;
[0024]S8:到静态存储器中读取待调用程序的程序数据;
[0025]S9:执行读取待调用程序,然后出栈到原地址;
[0026]S10:返回步骤S5,再次读取新指令,直至完成。
[0027]其中较优地,步骤S7中待调用程序为常用程序;步骤S8中待调用程序不是常用程序。
[0028]其中较优地,将步骤S5中得到的地址与查找表中的高速区域地址范围进行比较,是指将步骤S5中得到的地址与查找表中的各个高速区域的初始地址和终止地址逐一比较,从而判断出是否属于一组初始地址和终止地址之间。
[0029]根据本专利技术实施例的第二方面,提供一种快速读取程序数据的微控制器,该微控制器读取存储器中的程序数据,用于执行上述快速读取程序数据的方法。
[0030]与现有技术相比较,本专利技术将常用程序的程序数据预先存储到动态存储器的缓存区中,在需要调用该常用程序时,直接从该缓存区中调取程序数据,可以有效提高程序数据的读取速度。
附图说明
[0031]图1为本专利技术的实施例中,配置查找表的流程示意图;
[0032]图2为本专利技术的实施例中,动态存储器分区形成的缓存区与静态存储器的高速区域的对应关系示意图;
[0033]图3为本专利技术的实施例中,程序调取流程示意图;
[0034]图4A为对比实验1中测试程序所占存储器空间的示意图;
[0035]图4B为本专利技术的第一实施例中,实验2中的测试程序所占存储器空间的示意图;
[0036]图4C为本专利技术的第二实施例中,实验3中的测试程序所占存储器空间的示意图。
具体实施方式
[0037]下面结合附图和具体实施例对本专利技术的
技术实现思路
进行详细具体的说明。
[0038]本专利技术提供的快速读取程序数据的方法,主要适用于单片机。该单片机包括微控制器和静态存储器,并且微控制器(例如,ARM公司的高速单片机)内部集成有动态存储器。
静态存储器位于微控制器之外,可以是Flash,E2PROM等掉电后数据不丢失的存储器;动态存储器的数据掉电后会丢失,但是读写速度比静态存储器快。
[0039]本专利技术提供的快速读取程序数据的方法的技术原理是:将预定的一个或多个程序作为常用程序,将常用程序的程序数据预先存储到动态存储器的缓存区中,在需要调用常用程序时直接从该缓存区中调取程序数据,从而提高程序数据的读取速度。具体地说,该方法包括查找表配置流程和程序调用流程,具体包括以下步骤:先利用查找表配置流程,用户自定义多个程序作为常用程序,生成查找表,并保存在寄存器中;然后每次上电时,利用预先配置的查找表,微控制器查找到待调用的程序的缓存区中的地址,以从动态存储器中快速调取该程序的程序数据。
[0040]查找表的内容如表1所示,至少包括高速区域地址和缓存区地址,其中高速区域地址中包括多对起始地址和终止地址,并且每一对起始地址和终止地址所定义的地址范围内存储有一个程序数据;缓存区地址中包括多对起始地址和终止地址,并且每一对起始地址和终止地址所定义的地址范围的大小与高速区域地址中对应的每一对起始地址和终止地址所定义的地址范围的大小相同,以存储相同的程序。简言之,高速区域地址和缓存区地址中的地址具有映射关系,每一对起始地址和终止地址所定义的地址范围内存储有一个程序。
[0041]查找表是用户一次性配置好(或者说,生成查找表)本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种快速读取程序数据的方法,其特征在于包括以下步骤:将预定程序作为常用程序,生成查找表,并保存在寄存器中;每次上电时,利用所述查找表查找到所述常用程序的缓存区中的地址,以从动态存储器中快速调取所述常用程序的程序数据,其中,所述查找表中包括所述常用程序在静态存储器中的高速区域的起始地址和终止地址;以及映射到动态存储器中的缓存区的起始地址和终止地址。2.如权利要求1所述的快速读取程序数据的方法,其特征在于:对所述缓存区进行分区,为所述高速区域地址分配对应的缓存区地址,建立映射关系,生成所述查找表,并将所述查找表保存到寄存器中;其中,所述缓存区的起始地址和终止地址是连续的。3.如权利要求2所述的快速读取程序数据的方法,其特征在于:各个所述缓存区与对应的各所述高速区域的数量、大小分别相同。4.如权利要求1~3中任意一项所述的快速读取程序数据的方法,其特征在于:每次上电时,利用所述查找表,查找到所述常用程序的缓存区中的地址,以从动态存储器中快速调取所述常用程序的程序数据的步骤,包括以下子步骤:S1:微控制器上电后自动运行启动代码;S2:读取所述静态存储器中的所述查找表;S3:根据所述常用程序的所述高速区域地址,从所述查找表中获得对应的所述缓存区地址;S4:根据所述高速区域地址和所述缓存区地址,将...

【专利技术属性】
技术研发人员:刘帅何代明杨磊贾莹莹李成武
申请(专利权)人:天津兆讯电子技术有限公司
类型:发明
国别省市:

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

1