基于wince的快速冷启动方法

文档序号:6603682阅读:239来源:国知局
专利名称:基于wince的快速冷启动方法
基于wince的快速冷启动方法
技术领域
本发明提供一种快速冷启动方法,尤指一种基于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 标示为 TRUEBootloader通过用和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和ftOgram Ram(也可以称为page pool) 两个部分,其中Objectstore的数据包括Ramdisk的文件和注册表,是需要保存的数据,只有在ProgramRam部分,有大量的没有使用的内存数据可以不需要保存。Wince对于Program RAM部分的管理是以4K bytes大小的页面(page)为单位的, 每个页面可以分成使用中),dirty (使用过还未释放),Free (空余)三种页面。其中Used和Dirty页面都是含有有用数据的页面,需要保存。图2中箭头所指向的区域都是需要保存的,整个物理内存除了 Free页面和bootloader的内存不需要保存外,其余的内存都需要保存。虽然需要保存的数据名目较多,但是其实际总数据大小一般会比Free页面的总数据大小要小很多,所以跳过对Free页面的保存可以节约大量的数据读写操作。Wince的虚拟内存管理虽然非常复杂,但是虚拟内存归根到底是要映像到物理内存上的,所以我们以此为依据可以肯定,仅仅需要对物理内存管理进行分析,即可知道 Wince的哪些内存数据是需要保存的。Wince是开源的操作系统,其对于物理内存的管理的实现在其源physmem. c中。通过解读Wince的物理内存管理,得出如下方法来搜索Free页面。a、找到 MEM0RYINF0 结构体MEM0RYINF0结构体固定位于Wince的KDataStrut结构体(固定位于0xFFFFC800) 偏移0x308的位置,其作用是保存CE中所有的page pool的section信息。Bootloader在 Wince进入待机模式后可以直接访问此区域。之所以有多个sections,是因为Wince有可能支持多片物理内存,除了第一块物理内存之外的内存都会以extension的RAM导入Wince, 成为Wince的另外的可用RAM区域,Wince最多支持16个section,每个section的细节信息保存在FREEINF0结构体。b、遍历 FREEINF0 数组通过遍历MEM0RYINF0的pFi指标,我们可以检索所有sections的FREEINF0结构体,确保不会遗漏。C、解析FREEINF0结构体,搜寻Free页面。3、搜索空余内存页面的链表信息请参阅图3,图3绘示为wince空余内存页面中的双向链表结构。每个Free页面有4096字节,虽然绝大部分字节为0,但是Wince还是用了每个free页面的前两个DWORD 来保存一个双向链表。链表保存的是前一个和后一个free页面的物理地址,通过遍历此表,也可以找到所有的Free页面的地址,但是由于其链表的头保存在Wince内核中的一个未对外公布的全局变量g—clear^ageList中,不修改内核代码将无法获得,所以我们还是使用遍历 FREEINF0的方法来找寻Free页面的地址。默认的情况,Wince的内核会用链表的方法来搜索可用的页面,这个链表只有在冷启动的时候可以重建,由于STF启动不会走冷启动流程,我们必须保持和恢复每个Free页面的前两个DWORD的资料,否则Wince内核会因为找不到或找错Free页面的地址而死机。4、保存到索引表为了保存前面所遍历到的信息,可以在临时分配的内存空间中创建一个结构体作为索引表。在这个索引表中,用变量保存一些统计数据,用数组保存详细的页面地址和链表指针。它可以暂时位于Bootloader的内存空间,以不破坏Wince的内存空间为原则。在后续的操作中,索引表需要保存到非易失存储设备中,因为索引表需要在冷启动时第一时间恢复。5、Bootloader保存索引表和需要备份的内存页面数据到非易失存储设备通过上面的步骤后,我们已经收集到需要保存数据的信息,所有需要写入内存的数据有索引表,page pool禾口 CE ramimage, Object store, reserved部分。接下来就是把这些数据写入断电后还能维系数据的非易失内存。以NAND为例,但不限定。因为需要保存的page pool部分的页面数据可能不是连续的,所以需要先汇总到一个buffer中再集中写入到NAND等内存中将可以节约空间和提高读写效率。U8M内存生成的索引表大小一般在 51 (左右,可以保存在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、唤醒 WinceBootloader做完恢复的动作后,即可跳转到Wince的入口地址Martup ()进行系统唤醒。四、步骤300的具体实现如下设置唤醒标志后进入Wince的第一个函数Martup (),然后系统会自动进入 suspend/resume的线程开始跑唤醒流程,这个过程将会恢复上次待机时保存的软硬件信息,最后恢复到用户上次操作的接口。综上,可见,利用本发明wince的快速冷启动方法,由于可以在极短时间内根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据及恢复空余内存页面的链表信息到原来的内存地址,因此可以实现在关机后快速冷启动;同时由于引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,从而避免为了快速启动而待机需要消耗电池电量的问题。
权利要求
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对于ftOgram RAM部分的管理是以页面为单位的,页面可以分成使用中、使用过还未释放、空余三种页面,CE Ramimage、Reserved、Object store>Program RAM中的使用中及使用过还未释放的页面是需要保存的。
6.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中搜索空余内存页面包括以下步骤找到MEM0RYINF0结构体;遍历FREEINF0数组;解析FREEINF0结构体,搜寻空余内存页面。
7.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中Wince用每个空余内存页面的前两个DWORD来保存一个双向链表,该双向链表保存的是前一个和后一个空余内存页面的物理地址,保持和恢复每个空余内存页面的前两个DWORD的资料。
8.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中是在临时分配的内存空间中创建一个结构体作为索引表,在这个索引表中,用变量保存一些统计数据,用数组保存详细的页面地址和链表指针,该索引表暂时位于引导系统的内存空间。
9.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中引导系统保存索引表和需要备份的内存页面数据到NAND闪存一个区块中。
10.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤二中引导系统通过拉GPIO来进行设备断电。
11.如权利要求1所述的基于wince的快速冷启动方法,其特征在于,步骤三中先恢复Ramimage和object store,然后恢复I^ogram Ram里面非空余的页面数据,最后恢复 Reserved的数据。
全文摘要
本发明揭示了一种基于wince的快速冷启动方法,该方法包括步骤Wince收到快速冷启动指令后,设置快速冷启动标志为true,让系统进入待机模式,随后进入引导系统;引导系统判断快速冷启动标志设置为true后,搜索需要备份的内存页面,搜索空余内存页面的链表信息,并将这些链表信息保存到索引表,引导系统保存上述索引表和上述需要备份的内存页面数据到外部非易失存储设备,然后设备断电,进入快速冷启动模式;设备恢复供电时,引导系统根据索引表从外部非易失存储设备恢复上述需要备份的内存页面数据到其原来的内存地址中,恢复空余内存页面的链表信息到原来的内存地址,引导系统唤醒Wince;Wince从内存中恢复待机模式时备份的软硬件数据,恢复到待机前的运行状态。
文档编号G06F1/32GK102270145SQ20101019368
公开日2011年12月7日 申请日期2010年6月7日 优先权日2010年6月7日
发明者曾慧鹏 申请人:环达电脑(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1