[发明专利]使用超级状态存储加快嵌入式软件启动过程的方法有效
申请号: | 201310643663.0 | 申请日: | 2013-12-05 |
公开(公告)号: | CN103617060B | 公开(公告)日: | 2017-01-18 |
发明(设计)人: | 周文俊;刘国华;丛春涛;杨冰;孙发恩;贺强;孟庆媛;朱晓磊;宋先慧;袁文广 | 申请(专利权)人: | 积成电子股份有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 济南舜源专利事务所有限公司37205 | 代理人: | 刘玉玲 |
地址: | 250100 山东省济*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 使用 超级 状态 存储 加快 嵌入式 软件 启动 过程 方法 | ||
技术领域
本发明涉及嵌入式软件技术领域,尤其涉及一种使用超级状态存储加快嵌入式软件启动过程的方法。
背景技术
在某些场合下,对于嵌入式设备的启动时间有很高的要求。这里所说的启动时间,是指从装置上电到功能可以正常工作的状态所需要的时间。例如,用于监控、保护的设备在因故障重启后,要求尽快进入工作状态。
嵌入式设备的启动过程大致可分为硬件初始化、操作系统启动和业务软件启动三个步骤。一般来说,硬件初始化和操作系统启动耗费时间很短(一般在1秒内),业务软件启动的时间很大程度上决定了整个嵌入式系统的启动时间。
目前,加快嵌入式软件启动的手段主要有:
1) 改进硬件性能
通过使用性能更好的硬件来提高整体的速度,软件启动的时间也会相应缩短。例如:使用更快的处理器,存取更快的存储芯片或者更大的RAM等。这种方式一般都能奏效,但是会显著增加嵌入式设备的硬件成本,而且硬件性能的提升和最终启动时间的缩短是线性关系的,很难实现大幅度的提升。
2) 裁剪软件功能
根据具体使用的情况对嵌入式软件进行裁剪,只保留必要的部分。在嵌入式软件功能比较复杂,而在各种应用场合下都只是使用其中一个部分的情况下,通过量身定制的裁剪,可以节省掉未使用功能的启动时间而提升软件启动的速度。这种方法的局限在于,如果软件的大部分功能都是不可裁剪的则不使用。另一方面,大量量身定制的裁剪会给软件或配置文件版本维护带来很大的困难。
3) 保存中间数据
有些嵌入式软件在启动过程中,需要读取比较复杂的配置文件,并根据配置文件生成相应的内存结构供后续功能使用。一般配置文件都是文本格式的,比较典型的是XML文件。由于文本文件的格式比较复杂,解析时需要进行大量的错误判断,因此解析过程相当慢。为了提高解析的速度,可以把解析生成的内存结构以二进制文件的形式保存起来。在程序启动时,先检查一下当前的二进制文件版本和配置文件版本是否一致,不一致则重新解析并保存,一致的话,就直接解析二进制文件。因为二进制文件与内存数据结构是一致的,解析时间相对于直接解析文本的配置文件会大大缩短。这种方式目前应用比较广泛。
4) 内存完整转储
这种方式是在装置断电前,将整个内存的数据以及CPU等硬件状态全部转储到永久存储的设备上,下次装置上电直接将内存数据恢复,然后设置CPU及硬件状态让装置继续从断电时的状态运行的一种方法。这种方法的特点是不需要软件程序做任何修改,但是需要保存整个内存的完整镜像,在内存容量比较大的情况下,需要占用外部存储设备的空间比较大,保存和读取的时间也比较长。一般在规模比较大的操作系统上提供这些功能,例如嵌入式Windows、嵌入式Linux等。
上述几种手段基本都存在一定问题,无法在成本较低的情况下快速提高软件启动速度。
发明内容
针对上述问题,本发明通过将动态内存静态化,提供一种使用超级状态存储加快嵌入式软件启动过程的方法。
一个程序所使用的内存区域,大致可分为四个部分:静态区、常量区、堆区、栈区,其中静态区用于存放程序的全局变量和静态变量,常量区存放程序中定义的常量数据,堆区用于运行时动态从中分配内存,栈区则保存函数调用的参数和返回值以及局部变量等。在程序开始启动到启动完成这两个状态,发生变化的数据都在静态区、堆区、栈区几个区域。静态区中的变量每次程序启动都会放在相同的位置,只有值会变化;堆区中分配的动态内存,每次运行都会有新的情况,因此其位置和数据都可能发生变化;栈区中的数据其实体现的是函数的调用关系和内部状态,与程序的整体运行状态没有太大关系。因此,影响程序启动速度的关键在于静态区中的静态内存和堆区中的动态内存。
对于静态内存,从程序启动开始到启动完成的状态之间,发生变化的只有内存中的全局或静态数据值及程序的执行位置。因此,只要将启动完成时的全局或静态数据保存到外部存储器,在程序每次启动时,直接从外部存储器读入内存中的静态内存区并保存在原来的位置,并将程序跳至上次启动完成的位置执行,就可以一步完成启动。其启动所需的时间仅仅是从外部存储将其全局与静态变量区域读取到内存中所需的时间。由于程序使用的全局与静态变量数量有限,整个启动过程需要的时间很短。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于积成电子股份有限公司,未经积成电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310643663.0/2.html,转载请声明来源钻瓜专利网。