CN102270145A - 基于wince的快速冷启动方法 - Google Patents
基于wince的快速冷启动方法 Download PDFInfo
- Publication number
- CN102270145A CN102270145A CN2010101936877A CN201010193687A CN102270145A CN 102270145 A CN102270145 A CN 102270145A CN 2010101936877 A CN2010101936877 A CN 2010101936877A CN 201010193687 A CN201010193687 A CN 201010193687A CN 102270145 A CN102270145 A CN 102270145A
- Authority
- CN
- China
- Prior art keywords
- wince
- cold start
- memory
- page
- guidance system
- 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
Links
Images
Abstract
本发明揭示了一种基于wince的快速冷启动方法,该方法包括步骤:Wince收到快速冷启动指令后,设置快速冷启动标志为true,让系统进入待机模式,随后进入引导系统;引导系统判断快速冷启动标志设置为true后,搜索需要备份的内存页面,搜索空余内存页面的链表信息,并将这些链表信息保存到索引表,引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,进入快速冷启动模式;设备恢复供电时,引导系统根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据到其原来的内存地址中,恢复空余内存页面的链表信息到原来的内存地址,引导系统唤醒Wince;Wince从内存中恢复待机模式时备份的软硬件数据,恢复到待机前的运行状态。
Description
【技术领域】
本发明提供一种快速冷启动方法,尤指一种基于wince的快速冷启动方法。
【背景技术】
Wince是一种广泛用于便携式通讯,娱乐,导航设备的嵌入式操作系统。该操作系统的镜像文件保存在外部存储介质上,设备上电启动时,引导系统要先把操作系统的镜像先从外部存储介质上先拷贝到物理内存,然后跳转到操作系统的内核开始一步步执行初始化流程,这些流程包括初始化设备的硬件中断,CPU寄存器;加载所有的设备驱动程序;加载用户交互图形接口;加载服务程序等一系列过程;接着加载用户应用程序的过程,最后才能提供用户可以操作的接口。这一过程需要耗费比较长的一段时间,时间长短和系统复杂性有关,比如设备驱动的多少和应用程序的复杂与否会直接影响启动过程。除了启动过程需要耗费大量时间之外,用户还要进行一些操作才能进入自己需要的功能接口,比如让地图软件进入用户指定的导航状态,这也会耗费用户的时间和精力。
很多用户为了避免每次启动系统带来的时间和精力的浪费,往往在不使用设备的时候让它进入待机状态,以便在下次使用的时候可以快速唤醒设备进入使用状态。但是这种方法需要电池对设备的持续供电,虽然供电电流小,但是长时间待机会消耗大量电池电流甚至用尽,所以用户只能在短时间会恢复系统的情况下采用此方法,大大制约了用户使用上的便利和效率。
有鉴于此,实有必要提供一种基于wince的快速冷启动方法,可以实现在关机后快速冷启动,从而避免为了快速启动而待机需要消耗电池电量的问题。
【发明内容】
本发明的目的在于提供一种基于wince的快速冷启动方法,可以实现在关机后快速冷启动,从而避免为了快速启动而待机需要消耗电池电量的问题。
为达上述目的,本发明基于wince的快速冷启动方法,该方法应用于一使用wince系统的设备,该方法包括步骤:
Wince收到快速冷启动(STF-suspend to flash)指令后,设置快速冷启动标志为true,让系统进入待机模式,随后进入引导系统(Bootloader);
引导系统判断快速冷启动标志设置为true后,搜索需要备份的内存页面,搜索空余内存页面的链表信息,并将这些链表信息保存到索引表,引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,进入快速冷启动模式;
设备恢复供电时,引导系统首先从外部非易失存储设备恢复上述索引表, 然后根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据到其原来的内存地址中,并根据索引表恢复空余内存页面的链表信息到原来的内存地址,引导系统唤醒Wince;
Wince从内存中恢复待机模式时备份的软硬件数据,恢复到待机前的运行状态。
相较于现有技术,利用本发明wince的快速冷启动方法,由于可以在极短时间内根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据及恢复空余内存页面的链表信息到原来的内存地址,因此可以实现在关机后快速冷启动;同时由于引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,从而避免为了快速启动而待机需要消耗电池电量的问题。
为对本发明的目的、构造特征及其功能有进一步的了解,兹配合附图详细说明如下:
【附图说明】
图1绘示为本发明的wince的快速冷启动方法的流程图。
图2绘示为本发明的快速冷启动方法的内存分布示意图。
图3绘示为wince空余内存页面中的双向链表结构。
【具体实施方式】
请参阅图1,图1绘示为本发明的wince的快速冷启动方法的流程图。
为达上述目的,本发明基于wince的快速冷启动方法,该方法应用于一使用wince系统的设备,该方法包括步骤:
Wince收到快速冷启动(STF-suspend to flash)指令后,设置快速冷启动标志为true,让系统进入待机模式,随后进入引导系统(Bootloader);(步骤100)
引导系统判断快速冷启动标志设置为true后,搜索需要备份的内存页面,搜索空余内存页面的链表信息,并将这些链表信息保存到索引表,引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,进入快速冷启动模式;(步骤200)
设备恢复供电时,引导系统首先从外部非易失存储设备恢复上述索引表,然后根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据到其原来的内存地址中,并根据索引表恢复空余内存页面的链表信息到原来的内存地址,引导系统唤醒Wince;(步骤300)
Wince从内存中恢复待机模式时备份的软硬件数据,恢复到待机前的运行状态。(步骤400)
一、步骤100的具体实现如下:
1、设置STF标志
由于STF的主要工作都是在Bootloader中完成,所以在Wince下收到的STF指令需要用某种途径让Bootloader得到,Wince可以将标志保存到一个固定的 位置让Bootloader可以得到,比如写到SOC的特殊寄存器中,或保存到Nand的特定位置等等,此方法不限定。
2、系统进入待机模式
待机模式是Wince默认支持的一种省电模式,Wince进入待机模式时会自行保存唤醒时所需的大量软硬件信息,然后Wince停止运行等待系统唤醒。在这个时候,只要系统维持供电,内存中保持的数据就可以让系统实现快速唤醒,但是如果系统在此刻断电,内存数据将全部丢失,系统无法唤醒,只能冷启动。
3、跳转进入Bootloader
在Wince进入待机模式后停止运行,内存中Wince相关的数据在断电前不会丢失,此时可以跳转到Bootloader中进行STF操作,但是Bootloader的运行空间一定要控制其运行空间不能和Wince的运行空间重叠,以免破坏需要备份的Wince内存数据。在传统模式下Bootloader由于和Wince分时段运行,所以在运行空间上经常有重叠发生,因此在这里需要提前在内存中单独划分一个区域用来进行Bootloader的运行。
二、步骤200的具体实现如下:
1、Bootloader判断STF标示为TRUE
Bootloader通过用和Wince保存STF标示同样的固定方式得到STF标示,如果为FALSE则开始普通的冷启动过程,否则执行下面步骤进入STF流程。
2、搜索需要备份的内存页面
请参阅图2,图2绘示为本发明的快速冷启动方法的内存分布示意图。可见,于本发明中,Wince和Bootloader对物理内存的使用需要彻底划分开,以防止Bootloader在执行STF操作的时候破坏Wince的内存数据。Wince对物理内存又大体可以划分为CE Ramimage,RAM和Reserved三部分。CE Ramimage是Wince内核和比较核心的驱动所占用的内存空间,必须要全部保存,Reserved部分保存的是一些用户自定义的特殊数据,也是必须要保存的数据。RAM部分又分为Object store和Program Ram(也可以称为page pool)两个部分,其中Objectstore的数据包括Ramdisk的文件和注册表,是需要保存的数据,只有在ProgramRam部分,有大量的没有使用的内存数据可以不需要保存。
Wince对于Program RAM部分的管理是以4K bytes大小的页面(page)为单位的,每个页面可以分成Used(使用中),dirty(使用过还未释放),Free(空余)三种页面。其中Used和Dirty页面都是含有有用数据的页面,需要保存。图2中箭头所指向的区域都是需要保存的,整个物理内存除了Free页面和bootloader的内存不需要保存外,其余的内存都需要保存。虽然需要保存的数据名目较多,但是其实际总数据大小一般会比Free页面的总数据大小要小很多,所以跳过对Free页面的保存可以节约大量的数据读写操作。
Wince的虚拟内存管理虽然非常复杂,但是虚拟内存归根到底是要映像到物 理内存上的,所以我们以此为依据可以肯定,仅仅需要对物理内存管理进行分析,即可知道Wince的哪些内存数据是需要保存的。
Wince是开源的操作系统,其对于物理内存的管理的实现在其源physmem.c中。通过解读Wince的物理内存管理,得出如下方法来搜索Free页面。
a、找到MEMORYINFO结构体
MEMORYINFO结构体固定位于Wince的KDataStrut结构体(固定位于0xFFFFC800)偏移0x308的位置,其作用是保存CE中所有的page pool的section信息。Bootloader在Wince进入待机模式后可以直接访问此区域。之所以有多个sections,是因为Wince有可能支持多片物理内存,除了第一块物理内存之外的内存都会以extension的RAM导入Wince,成为Wince的另外的可用RAM区域,Wince最多支持16个section,每个section的细节信息保存在FREEINFO结构体。
b、遍历FREEINFO数组
通过遍历MEMORYINFO的pFi指标,我们可以检索所有sections的FREEINFO结构体,确保不会遗漏。
c、解析FREEINFO结构体,搜寻Free页面。
3、搜索空余内存页面的链表信息
请参阅图3,图3绘示为wince空余内存页面中的双向链表结构。每个Free页面有4096字节,虽然绝大部分字节为0,但是Wince还是用了每个free页面的前两个DWORD来保存一个双向链表。
链表保存的是前一个和后一个free页面的物理地址,通过遍历此表,也可以找到所有的Free页面的地址,但是由于其链表的头保存在Wince内核中的一个未对外公布的全局变量g_cleanPageList中,不修改内核代码将无法获得,所以我们还是使用遍历FREEINFO的方法来找寻Free页面的地址。
默认的情况,Wince的内核会用链表的方法来搜索可用的页面,这个链表只有在冷启动的时候可以重建,由于STF启动不会走冷启动流程,我们必须保持和恢复每个Free页面的前两个DWORD的资料,否则Wince内核会因为找不到或找错Free页面的地址而死机。
4、保存到索引表
为了保存前面所遍历到的信息,可以在临时分配的内存空间中创建一个结构体作为索引表。在这个索引表中,用变量保存一些统计数据,用数组保存详细的页面地址和链表指针。它可以暂时位于Bootloader的内存空间,以不破坏Wince的内存空间为原则。在后续的操作中,索引表需要保存到非易失存储设备中,因为索引表需要在冷启动时第一时间恢复。
5、Bootloader保存索引表和需要备份的内存页面数据到非易失存储设备
通过上面的步骤后,我们已经收集到需要保存数据的信息,所有需要写入 内存的数据有索引表,page pool和CE ramimage,Object store,reserved部分。接下来就是把这些数据写入断电后还能维系数据的非易失内存。以NAND为例,但不限定。因为需要保存的page pool部分的页面数据可能不是连续的,所以需要先汇总到一个buffer中再集中写入到NAND等内存中将可以节约空间和提高读写效率。128M内存生成的索引表大小一般在512K左右,可以保存在NAND的一个block(区块)中。
6、设备断电,进入STF模式
保存好数据后,Bootloader可以通过拉GPIO等方法切断自身电源,实现彻底断电以节约电池电量。
三、步骤300的具体实现如下:
1、恢复索引表
设备上电后首先运行的是Bootloader,Bootloader开始检查非易失内存索引表位置的数据是否是合法的索引表,可以以此作为判断是STF启动还是正常冷启动。找到合法的索引表后,即可将其从内存中读出在内存中重建该表。
2、根据索引表恢复内存数据到原来地址
根据重建的索引表,Bootloader可以知道一共有多少页面是需要恢复,以及需要恢复到什么物理地址。可以按照顺序,先恢复Ramimage和object store,然后恢复page pool里面非Free的页面数据,最后恢复Reserved的数据。由于只需要恢复非Free的页面资料,所以可以跳过对大量Free的页面数据的读取,该过程可以在较短时间之内完成,为快速启动提供了条件。
3、恢复空余内存页面的链表信息
根据重建的索引表,Bootloader可以知道每个Free页面的地址及其其前两个DWORD数据,通过遍历索引表的方法可以在极短的时间内恢复。
4、唤醒Wince
Bootloader做完恢复的动作后,即可跳转到Wince的入口地址Startup()进行系统唤醒。
四、步骤300的具体实现如下:
设置唤醒标志后进入Wince的第一个函数Startup(),然后系统会自动进入suspend/resume的线程开始跑唤醒流程,这个过程将会恢复上次待机时保存的软硬件信息,最后恢复到用户上次操作的接口。
综上,可见,利用本发明wince的快速冷启动方法,由于可以在极短时间内根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据及恢复空余内存页面的链表信息到原来的内存地址,因此可以实现在关机后快速冷启动;同时由于引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,从而避免为了快速启动而待机需要消耗电池电量的问题。
Claims (11)
1.一种基于wince的快速冷启动方法,该方法应用于一使用wince系统的设备,其特征在于,该方法包括步骤:
步骤一:Wince收到快速冷启动指令后,设置快速冷启动标志为true,让系统进入待机模式,随后进入引导系统;
步骤二:引导系统判断快速冷启动标志设置为true后,搜索需要备份的内存页面,搜索空余内存页面的链表信息,并将这些链表信息保存到索引表,引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,进入快速冷启动模式;
步驟三:设备恢复供电时,引导系统首先从外部非易失存储设备恢复上述索引表,然后根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据到其原来的内存地址中,并根据索引表恢复空余内存页面的链表信息到原来的内存地址,引导系统唤醒Wince;
步驟四:Wince从内存中恢复待机模式时备份的软硬件数据,恢复到待机前的运行状态。
2.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤一中Wince将快速冷启动标志保存到一个固定的位置让引导系统得到。
3.如权利要求2所述的基于wince的快速冷启动方法,其特征在于,该固定的位置为SOC的特殊寄存器或Nand的特定位置。
4.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤一中内存中引导系统是在内存中与vince分开的一个区域中运行的。
5.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中Wince内存包括CE Ramimage、RAM和Reserved三部分,RAM又分为Objectstore和Program Ram两个部分,Wince对于Program RAM部分的管理是以页面为单位的,页面可以分成使用中、使用过还未释放、空余三种页面,CE Ramimage、Reserved、Object store、Program RAM中的使用中及使用过还未释放的页面是需要保存的。
6.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中搜索空余内存页面包括以下步骤:
找到MEMORYINFO结构体;
遍历FREEINFO数组;
解析FREEINFO结构体,搜寻空余内存页面。
7.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中Wince用每个空余内存页面的前两个DWORD来保存一个双向链表,该双向链表保存的是前一个和后一个空余内存页面的物理地址,保持和恢复每个空余内存页面的前两个DWORD的资料。
8.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中是在临时分配的内存空间中创建一个结构体作为索引表,在这个索引表中,用变量保存一些统计数据,用数组保存详细的页面地址和链表指针,该索引表暂时位于引导系统的内存空间。
9.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中引导系统保存索引表和需要备份的内存页面数据到NAND闪存一个区块中。
10.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中引导系统通过拉GPIO来进行设备断电。
11.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤三中先恢复Ramimage和object store,然后恢复Program Ram里面非空余的页面数据,最后恢复Reserved的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101936877A CN102270145A (zh) | 2010-06-07 | 2010-06-07 | 基于wince的快速冷启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101936877A CN102270145A (zh) | 2010-06-07 | 2010-06-07 | 基于wince的快速冷启动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102270145A true CN102270145A (zh) | 2011-12-07 |
Family
ID=45052456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101936877A Pending CN102270145A (zh) | 2010-06-07 | 2010-06-07 | 基于wince的快速冷启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102270145A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513746A (zh) * | 2012-06-26 | 2014-01-15 | 安凯(广州)微电子技术有限公司 | 一种超低功耗待机方法及电路 |
CN105162765A (zh) * | 2015-07-30 | 2015-12-16 | 国家电网公司 | 一种基于断尾求生的云数据安全实现方法 |
CN109885340A (zh) * | 2019-01-10 | 2019-06-14 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动加速方法、装置、电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336161B1 (en) * | 1995-12-15 | 2002-01-01 | Texas Instruments Incorporated | Computer configuration system and method with state and restoration from non-volatile semiconductor memory |
CN1467625A (zh) * | 2002-07-08 | 2004-01-14 | 尹启凤 | 一种快速启动的计算机系统 |
CN1540503A (zh) * | 2003-04-23 | 2004-10-27 | 华为技术有限公司 | 能识别冷热启动的系统及加快系统启动速度的方法 |
CN101620539A (zh) * | 2008-07-01 | 2010-01-06 | 联想(北京)有限公司 | 开关机方法和计算机 |
-
2010
- 2010-06-07 CN CN2010101936877A patent/CN102270145A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336161B1 (en) * | 1995-12-15 | 2002-01-01 | Texas Instruments Incorporated | Computer configuration system and method with state and restoration from non-volatile semiconductor memory |
CN1467625A (zh) * | 2002-07-08 | 2004-01-14 | 尹启凤 | 一种快速启动的计算机系统 |
CN1540503A (zh) * | 2003-04-23 | 2004-10-27 | 华为技术有限公司 | 能识别冷热启动的系统及加快系统启动速度的方法 |
CN101620539A (zh) * | 2008-07-01 | 2010-01-06 | 联想(北京)有限公司 | 开关机方法和计算机 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513746A (zh) * | 2012-06-26 | 2014-01-15 | 安凯(广州)微电子技术有限公司 | 一种超低功耗待机方法及电路 |
CN103513746B (zh) * | 2012-06-26 | 2016-08-31 | 安凯(广州)微电子技术有限公司 | 一种超低功耗待机方法及电路 |
CN105162765A (zh) * | 2015-07-30 | 2015-12-16 | 国家电网公司 | 一种基于断尾求生的云数据安全实现方法 |
CN105162765B (zh) * | 2015-07-30 | 2018-08-03 | 国家电网公司 | 一种基于断尾求生的云数据安全实现方法 |
CN109885340A (zh) * | 2019-01-10 | 2019-06-14 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动加速方法、装置、电子设备 |
CN109885340B (zh) * | 2019-01-10 | 2022-06-10 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动加速方法、装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9317299B2 (en) | Method and device for cold starting android mobile terminal | |
US11635800B2 (en) | System on chip for reducing wake-up time, method of operating same, and computer system including same | |
US9189248B2 (en) | Specialized boot path for speeding up resume from sleep state | |
TWI546818B (zh) | 一種具有綠能資料持續模式的裝置驅動器 | |
KR101668507B1 (ko) | 프로세서를 위한 정지 상태 유지 모드 | |
US8028177B2 (en) | Method for changing power states of a computer | |
CN101246389A (zh) | 提供从休眠状态瞬时接通恢复的计算系统节电方法和装置 | |
CN104850435B (zh) | 电源管理控制器与方法 | |
US20070006000A1 (en) | Using fine-grained power management of physical system memory to improve system sleep | |
US9606913B2 (en) | Electronic circuit for and method of executing an application program stored in a one-time-programmable (OTP) memory in a system on chip (SoC) | |
CN109885343A (zh) | 一种控制器低功耗启动方法、装置、计算机设备及存储介质 | |
CN103959234A (zh) | 计算系统的快速平台休眠与恢复 | |
JP2003196096A (ja) | コンピュータシステム、その起動制御方法及びプログラム | |
CN102866934A (zh) | 基于非易失随机存储器的嵌入式设备的休眠及唤醒系统 | |
US20160062691A1 (en) | Method for controlling memory device to achieve more power saving and related apparatus thereof | |
CN103999042A (zh) | 加载引导数据 | |
US20170168852A1 (en) | Method for initializing peripheral devices and electronic device using the same | |
EP2518626A2 (en) | Electronic device and booting method thereof | |
CN111506351A (zh) | 片上系统的深度休眠方法、唤醒方法和休眠与唤醒方法 | |
CN102736928B (zh) | 快速唤醒计算机系统方法与计算机系统 | |
CN102270145A (zh) | 基于wince的快速冷启动方法 | |
CN103218031A (zh) | 电子装置以及休眠方法 | |
US7401200B2 (en) | Information processing apparatus, memory managing program, and memory managing method | |
KR101864831B1 (ko) | 가상 캐시를 포함하는 메모리 및 그 관리 방법 | |
US8108581B2 (en) | Information processing apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111207 |