CN101625647A - 加快嵌入式软件系统启动速度的方法 - Google Patents

加快嵌入式软件系统启动速度的方法 Download PDF

Info

Publication number
CN101625647A
CN101625647A CN200910162171A CN200910162171A CN101625647A CN 101625647 A CN101625647 A CN 101625647A CN 200910162171 A CN200910162171 A CN 200910162171A CN 200910162171 A CN200910162171 A CN 200910162171A CN 101625647 A CN101625647 A CN 101625647A
Authority
CN
China
Prior art keywords
embedded software
kernel
speed
file system
flash
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.)
Pending
Application number
CN200910162171A
Other languages
English (en)
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.)
Qingdao Hisense Electronics Co Ltd
Original Assignee
Qingdao Hisense Electronics 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 Qingdao Hisense Electronics Co Ltd filed Critical Qingdao Hisense Electronics Co Ltd
Priority to CN200910162171A priority Critical patent/CN101625647A/zh
Publication of CN101625647A publication Critical patent/CN101625647A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种加快嵌入式软件系统启动速度的方法,所述加快嵌入式软件系统启动速度的方法,包括:将从Flash读取嵌入式软件内核到内存的速度加速设置;压缩设置在内存中解压并运行嵌入式软件内核的时间;将嵌入式软件根文件系统及应用程序加载到内存,对嵌入式软件根文件系统启动脚本运行速度加速设置;顺序启动应用程序中的各任务。本发明适用于基于Linux的嵌入式软件系统。

Description

加快嵌入式软件系统启动速度的方法
技术领域
本发明涉及嵌入式软件技术领域,尤其涉及一种加快嵌入式软件系统启动速度的方法。
背景技术
目前,嵌入式软件系统作为一种集成度高、实时性强的软件系统,逐渐受到用户的青睐。在各种嵌入式软件系统中,系统的启动速度是用户对系统性能最直观和最先体验到的一项技术指标,因此,加快系统的启动速度对于提升用户体验有着很重要的意义。此外,在有些场合,对嵌入式软件系统的启动速度本身就有着很苛刻的要求,在这些场合下,加快系统的启动速度具有更重要的意义。
Linux以其开源的特点广泛应用于嵌入式软件系统中,但基于Linux的嵌入式软件系统自身也有其缺点,其中,最突出的一个缺点就是启动时间过长,用户的体验质量不高。
发明内容
本发明的实施例提供一种加快嵌入式软件系统启动速度的方法,能够加快嵌入式软件系统的启动速度,提高用户的体验质量。
本发明实施例采用的技术方案为:
一种加快嵌入式软件系统启动速度的方法,包括:
将从Flash读取嵌入式软件内核到内存的速度加速设置;
压缩设置在内存中解压并运行嵌入式软件内核的时间;
将嵌入式软件根文件系统及应用程序加载到内存,对嵌入式软件根文件系统启动脚本运行速度加速设置;
顺序启动应用程序中的各任务。
其中,所述将从Flash读取嵌入式软件内核到内存的速度加速设置,具体可以包括:
根据所使用的Flash的用户手册,修改该Flash的参数配置,使该Flash的读写速度达到最快。
裁剪该嵌入式软件的内核,在编译内核时,将与承载所述嵌入式软件的硬件平台无关的硬件驱动、文件系统、调试信息去掉。
将所述嵌入式软件内核中、与启动所述嵌入式软件内核无关的模块编译成单独的模块,在内核启动之后再装载所述单独的模块。
其中,所述压缩设置在内存中解压并运行嵌入式软件内核的时间,具体可以包括:
在对所述嵌入式软件内核调试稳定之后,屏蔽掉printk函数的输出,去掉在运行嵌入式软件内核时的所有调试输出信息,其中,所述printk函数用于将调试输出的结果送到内核的缓冲区。
其中,所述嵌入式软件根文件系统采用cramfs格式。
所述对嵌入式软件根文件系统启动脚本运行速度加速设置,具体可以包括:
用动态库代替静态库,缩小应用程序的体积,所述嵌入式软件的函数库包括动态库和静态库,所述静态库在程序编译时被调用,所述动态库在程序运行时被调用。
对所述嵌入式软件根文件系统启动脚本中的任务进行删减,去掉所有与承载所述嵌入式软件的硬件平台所实现的功能无关的任务。
将所述嵌入式软件根文件系统启动脚本中彼此之间没有依赖关系的多个任务做成并行执行。
其中,所述各任务包括:主任务和至少一个分支任务,所述顺序启动应用程序中的各任务,具体可以包括:
将所述应用程序中的主任务先运行起来以后,再在后台运行分支任务。
本发明实施例加快嵌入式软件系统启动速度的方法,通过对嵌入式软件系统启动中的每一步进行运行速度的加速设置或运行时间的压缩设置,或者将各任务的执行顺序进行设置,将各步中所采用的设置进行合理的组合,从而能够减少嵌入式软件系统的启动时间,加快嵌入式软件系统的启动速度,提高用户的体验质量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的加快嵌入式软件系统启动速度的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。
本发明的实施例提供一种加快嵌入式软件系统启动速度的方法,能够加快嵌入式软件系统的启动速度,提高用户的体验质量。
如图1所示,所述加快嵌入式软件系统启动速度的方法,包括:
101、将从Flash读取嵌入式软件内核到内存的速度加速设置。其中,所述嵌入式软件内核包括四大核心组件:内存管理、进程管理、文件系统、设备驱动。
其中,所述将从Flash读取嵌入式软件内核到内存的速度加速设置,具体可以包括:
101a、根据该嵌入式软件系统所使用的Flash的用户手册,修改该Flash的参数配置,使该Flash的读写速度尽可能地达到最快。
101b、裁剪该嵌入式软件的内核,减小内核的体积,在编译内核时,将与承载所述嵌入式软件的硬件平台无关的硬件驱动、文件系统、调试信息去掉,使该嵌入式软件的内核体积尽可能地达到最小。
101c、将所述嵌入式软件内核中、与启动所述嵌入式软件内核无关的模块编译成单独的模块,在内核启动之后再装载所述单独的模块,从而减小所述嵌入式软件的内核体积。
其中,可以同时采用101a、101b和101c,也可以只采用101a、101b和101c中的一个或两个。
102、压缩设置在内存中解压并运行嵌入式软件内核的时间。
在对所述嵌入式软件内核调试稳定之后,完全屏蔽掉printk函数的输出,去掉运行嵌入式软件内核时的所有调试输出信息,从而能够缩短解压并运行内核的时间,加快在内存中运行嵌入式软件内核的速度。其中,所述printk函数用于将调试输出的结果送到内核的缓冲区,在编写驱动程序或其他内核程序时,要尽量少用printk函数,更不能在运行时的循环程序内使用printk,否则会减缓嵌入式软件的启动速度,从而降低嵌入式软件系统的整体性能。
103、将嵌入式软件根文件系统及应用程序加载到内存,对嵌入式软件根文件系统启动脚本运行速度加速设置。
其中,所述嵌入式软件根文件系统采用cramfs格式。
其中,嵌入式软件系统中的文件系统有许多,例如:romfs,ramfs,jffs2,cramfs,yaffs等,经过对各种文件系统进行测试对比,最后确定使用cramfs文件系统,该文件系统在从Flash加载到内存中的速度比较理想。
cramfs是一种可压缩只读文件系统,在cramfs文件系统中,每一页被单独压缩,可以随机页访问,其压缩比高达2∶1,为嵌入式软件系统节省大量的Flash存储空间。cramfs文件系统以压缩方式存储,在运行时解压缩,所有的应用程序要求被拷到RAM里去运行,但这并不代表比ramfs需求的RAM空间要大一点,因为cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。此外,cramfs文件系统的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。
其中,所述对嵌入式软件根文件系统启动脚本运行速度加速设置,具体可以包括:
103a、用动态库代替静态库,缩小应用程序的体积,所述嵌入式软件的函数库包括动态库和静态库,所述静态库在程序编译时被调用,所述动态库在程序运行时被调用。
所述函数库是一组处于可以“拿来就用”状态下的二进制目标代码。当有程序需要用的函数库中的某个函数的时候,就会通过include语句引用对此函数做出声明的头文件。静态库也叫归档文件,英文archive,后缀名是a,比如libc.a和libX11.a等。动态库可以动态地加载函数库,在运行时刻链接,方便用户二次开发,不用重新编译整个程序,只需编译改动部分,就能升级系统。
103b、为加快嵌入式软件根文件系统启动脚本的运行,对所述嵌入式软件根文件系统启动脚本中的任务进行最大限度地删减,去掉所有与承载所述嵌入式软件的硬件平台所实现的功能无关的任务。
103c、将所述嵌入式软件根文件系统启动脚本中彼此之间没有依赖关系的多个任务做成并行执行,从而能够加快加载嵌入式软件根文件系统启动脚本中各任务的速度。
其中,可以同时采用103a、103b和103c,也可以只采用103a、103b和103c中的一个或两个。
104、顺序启动应用程序中的各主任务。
其中,应用程序中的任务包括主任务和至少一个分支任务。在运行主程序时,需要调整应用程序中各任务的启动时机,把所述应用程序中的主任务先运行起来,在主任务运行起来以后,再在后台运行各分支任务。
其中,可以同时采用101-104,也可以只采用101-104中的一个或者多个的组合。
本发明实施例提供的加快嵌入式软件系统启动速度的方法,通过对嵌入式软件系统启动中的每一步进行运行速度的加速设置或运行时间的压缩设置,或者将各任务的执行顺序进行设置,将各步中所采用的设置进行合理的组合,从而能够减少嵌入式软件系统的启动时间,加快嵌入式软件系统的启动速度,提高用户的体验质量。
本发明适用于基于Linux的嵌入式软件系统,但不仅限于此。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (10)

1、一种加快嵌入式软件系统启动速度的方法,其特征在于,包括:
将从Flash读取嵌入式软件内核到内存的速度加速设置;
压缩设置在内存中解压并运行嵌入式软件内核的时间;
将嵌入式软件根文件系统及应用程序加载到内存,对嵌入式软件根文件系统启动脚本运行速度加速设置;
顺序启动应用程序中的各任务。
2、根据权利要求1所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述将从Flash读取嵌入式软件内核到内存的速度加速设置包括:
根据所使用的Flash的用户手册,修改该Flash的参数配置,使该Flash的读写速度达到最快。
3、根据权利要求1或2所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述将从Flash读取嵌入式软件内核到内存的速度加速设置还包括:
裁剪该嵌入式软件的内核,在编译内核时,将与承载所述嵌入式软件的硬件平台无关的硬件驱动、文件系统、调试信息去掉。
4、根据权利要求3所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述将从Flash读取嵌入式软件内核到内存的速度加速设置还包括:
将所述嵌入式软件内核中、与启动所述嵌入式软件内核无关的模块编译成单独的模块,在内核启动之后再装载所述单独的模块。
5、根据权利要求1所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述压缩设置在内存中解压并运行嵌入式软件内核的时间包括:
在对所述嵌入式软件内核调试稳定之后,屏蔽掉printk函数的输出,去掉在运行嵌入式软件内核时的所有调试输出信息,其中,所述printk函数用于将调试输出的结果送到内核的缓冲区。
6、根据权利要求1所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述嵌入式软件根文件系统采用cramfs格式。
7、根据权利要求1或6所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述对嵌入式软件根文件系统启动脚本运行速度加速设置包括:
用动态库代替静态库,缩小应用程序的体积,所述嵌入式软件的函数库包括动态库和静态库,所述静态库在程序编译时被调用,所述动态库在程序运行时被调用。
8、根据权利要求7所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述对嵌入式软件根文件系统启动脚本运行速度加速设置还包括:
对所述嵌入式软件根文件系统启动脚本中的任务进行删减,去掉所有与承载所述嵌入式软件的硬件平台所实现的功能无关的任务。
9、根据权利要求8所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述对嵌入式软件根文件系统启动脚本运行速度加速设置还包括:
将所述嵌入式软件根文件系统启动脚本中彼此之间没有依赖关系的多个任务做成并行执行。
10、根据权利要求1所述的加快嵌入式软件系统启动速度的方法,其特征在于,所述各任务包括:主任务和至少一个分支任务,所述顺序启动应用程序中的各任务包括:
将所述应用程序中的主任务先运行起来以后,再在后台运行分支任务。
CN200910162171A 2009-08-06 2009-08-06 加快嵌入式软件系统启动速度的方法 Pending CN101625647A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910162171A CN101625647A (zh) 2009-08-06 2009-08-06 加快嵌入式软件系统启动速度的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910162171A CN101625647A (zh) 2009-08-06 2009-08-06 加快嵌入式软件系统启动速度的方法

Publications (1)

Publication Number Publication Date
CN101625647A true CN101625647A (zh) 2010-01-13

Family

ID=41521503

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910162171A Pending CN101625647A (zh) 2009-08-06 2009-08-06 加快嵌入式软件系统启动速度的方法

Country Status (1)

Country Link
CN (1) CN101625647A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013163903A1 (zh) * 2012-05-04 2013-11-07 惠州Tcl移动通信有限公司 基于Android系统的应用程序启动方法和系统
CN103645898A (zh) * 2013-12-13 2014-03-19 浪潮电子信息产业股份有限公司 一种自动化脚本工具
CN103927207A (zh) * 2014-04-10 2014-07-16 安一恒通(北京)科技有限公司 软件加速方法和装置
CN104090783A (zh) * 2014-05-22 2014-10-08 西安电子科技大学 利用启动加速器提高Linux服务器启动速度的方法
CN104572140A (zh) * 2013-10-10 2015-04-29 深圳中电长城信息安全系统有限公司 一种操作系统移植的方法、装置及系统
CN104717557A (zh) * 2014-11-25 2015-06-17 四川长虹电器股份有限公司 一种基于机顶盒读取Flash数据的方法
WO2015085755A1 (zh) * 2013-12-10 2015-06-18 华为技术有限公司 一种操作系统恢复方法、装置及终端设备
CN104778066A (zh) * 2015-04-21 2015-07-15 北京凌阳益辉科技有限公司 一种嵌入式操作系统的快速启动方法及其装置
CN105760201A (zh) * 2016-02-29 2016-07-13 华为技术有限公司 一种嵌入式装置的启动方法和装置
US9600369B2 (en) 2013-12-10 2017-03-21 Huawei Technologies Co., Ltd. Operating system recovery method and apparatus, and terminal device
CN107924316A (zh) * 2015-08-31 2018-04-17 三菱电机株式会社 应用程序执行装置以及应用程序执行方法
CN109634669A (zh) * 2018-11-20 2019-04-16 锐捷网络股份有限公司 嵌入式系统的启动方法及装置
CN110018859A (zh) * 2019-04-15 2019-07-16 珠海全志科技股份有限公司 设备启动方法、装置、计算机设备和存储介质
CN110413336A (zh) * 2019-06-18 2019-11-05 平安科技(深圳)有限公司 开发项目启动方法、装置、服务器及存储介质
CN111061516A (zh) * 2018-10-15 2020-04-24 华为技术有限公司 加速应用的冷启动的方法、装置和终端

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013163903A1 (zh) * 2012-05-04 2013-11-07 惠州Tcl移动通信有限公司 基于Android系统的应用程序启动方法和系统
CN104572140A (zh) * 2013-10-10 2015-04-29 深圳中电长城信息安全系统有限公司 一种操作系统移植的方法、装置及系统
CN104572140B (zh) * 2013-10-10 2018-11-27 深圳中电长城信息安全系统有限公司 一种操作系统移植的方法、装置及系统
US9600369B2 (en) 2013-12-10 2017-03-21 Huawei Technologies Co., Ltd. Operating system recovery method and apparatus, and terminal device
WO2015085755A1 (zh) * 2013-12-10 2015-06-18 华为技术有限公司 一种操作系统恢复方法、装置及终端设备
TWI608345B (zh) * 2013-12-10 2017-12-11 華為技術有限公司 Operating system recovery method, device and terminal equipment
CN103645898A (zh) * 2013-12-13 2014-03-19 浪潮电子信息产业股份有限公司 一种自动化脚本工具
CN103645898B (zh) * 2013-12-13 2017-04-12 浪潮电子信息产业股份有限公司 一种自动化脚本工具
CN103927207A (zh) * 2014-04-10 2014-07-16 安一恒通(北京)科技有限公司 软件加速方法和装置
CN103927207B (zh) * 2014-04-10 2017-07-25 安一恒通(北京)科技有限公司 软件加速方法和装置
CN104090783A (zh) * 2014-05-22 2014-10-08 西安电子科技大学 利用启动加速器提高Linux服务器启动速度的方法
CN104090783B (zh) * 2014-05-22 2017-05-03 西安电子科技大学 利用启动加速器提高Linux服务器启动速度的方法
CN104717557A (zh) * 2014-11-25 2015-06-17 四川长虹电器股份有限公司 一种基于机顶盒读取Flash数据的方法
CN104717557B (zh) * 2014-11-25 2018-09-14 四川长虹电器股份有限公司 一种基于机顶盒读取Flash数据的方法
CN104778066B (zh) * 2015-04-21 2018-01-23 北京凌阳益辉科技有限公司 一种嵌入式操作系统的快速启动方法及其装置
CN104778066A (zh) * 2015-04-21 2015-07-15 北京凌阳益辉科技有限公司 一种嵌入式操作系统的快速启动方法及其装置
CN107924316A (zh) * 2015-08-31 2018-04-17 三菱电机株式会社 应用程序执行装置以及应用程序执行方法
US11080066B2 (en) 2016-02-29 2021-08-03 Huawei Technologies Co., Ltd. Method for starting embedded apparatus, and apparatus
CN105760201A (zh) * 2016-02-29 2016-07-13 华为技术有限公司 一种嵌入式装置的启动方法和装置
CN105760201B (zh) * 2016-02-29 2019-05-28 华为技术有限公司 一种嵌入式装置的启动方法和装置
US12093726B2 (en) 2018-10-15 2024-09-17 Huawei Technologies Co., Ltd. Method, apparatus, and terminal for accelerating cold startup of an application
CN111061516B (zh) * 2018-10-15 2021-09-14 华为技术有限公司 加速应用的冷启动的方法、装置和终端
CN111061516A (zh) * 2018-10-15 2020-04-24 华为技术有限公司 加速应用的冷启动的方法、装置和终端
CN109634669B (zh) * 2018-11-20 2021-08-17 锐捷网络股份有限公司 嵌入式系统的启动方法及装置
CN109634669A (zh) * 2018-11-20 2019-04-16 锐捷网络股份有限公司 嵌入式系统的启动方法及装置
CN110018859A (zh) * 2019-04-15 2019-07-16 珠海全志科技股份有限公司 设备启动方法、装置、计算机设备和存储介质
CN110018859B (zh) * 2019-04-15 2022-04-22 珠海全志科技股份有限公司 设备启动方法、装置、计算机设备和存储介质
CN110413336A (zh) * 2019-06-18 2019-11-05 平安科技(深圳)有限公司 开发项目启动方法、装置、服务器及存储介质
CN110413336B (zh) * 2019-06-18 2024-03-15 平安科技(深圳)有限公司 开发项目启动方法、装置、服务器及存储介质

Similar Documents

Publication Publication Date Title
CN101625647A (zh) 加快嵌入式软件系统启动速度的方法
US7797693B1 (en) NAND mobile devices capable of updating firmware or software in a manner analogous to NOR mobile devices
US6601235B1 (en) Method and apparatus for dynamically deoptimizing compiled activations
EP2175370B1 (en) System and method of using pooled thread-local character arrays
CA2329522C (en) Patching rebased and realigned executable files
EP1926022B1 (en) Apparatus and method for efficient memory use in portable terminal
EP1145120B1 (en) Generating compiled programs for interpretive runtime environments
US6493730B1 (en) Efficient object faulting with generational garbage collection
CN1302016A (zh) 快速启动装置和方法
CN101937376A (zh) 一种数据管理方法及数据存储装置
CN1238500A (zh) 用于进行静态初始化的方法和系统
CN102141923B (zh) 内存文件系统加载方法及装置
CN103077043A (zh) 一种快速启动及运行Linux的方法
US20190187965A1 (en) Reduced Memory Consumption of Compiler-Transformed Asynchronous Methods
Harding et al. Distributed genetic programming on GPUs using CUDA
CN115113814B (zh) 一种神经网络模型上线方法和相关装置
CN112328319A (zh) 一种支持ram文件系统的星载app动态加载方法
CN114416031B (zh) 面向AIoT场景支持RISC-V处理器的操作系统
CN111240765B (zh) 一种linux压缩应用程序的加载方法
CN114546581A (zh) 一种无服务容器启动方法及相关设备
CN113791870B (zh) 一种WebAssembly虚拟机分布式系统细粒度迁移方法及系统
Strumpen Compiler technology for portable checkpoints
CN103559119B (zh) 文件操作请求处理方法及装置
JP5051961B2 (ja) モジュール式ガーベッジコレクタを実現するための方法および装置
CN114490023A (zh) 一种基于arm和fpga的高能物理可计算存储设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20100113