资源描述:
《wince系统启动时是否cleanboot》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WINCE系统启动时是否cleanboot*******************************LoongEmbedded************************作者:LoongEmbedded时间:2010.12.09类别:WINCE嵌入式系统.Aft.平平平不不不不平平平平于不不不不不不不不平于于于不不不不不不不不]cc“or卜mhac厂lari不不乎不不平不不不不平乎不不平平平不不不不不不这里的cleanboot可以理解为清除system.hv和user.hv本系统基于nandflash岀去NK.bin之外的空间mou
2、nt成盘符ResidentFlash,其中system.hv和user.hv就保存在这个文件夹中,也即是保存在nandflash中,看下图8)9)A)B)C)D)E)F)L)R)U)KITLConfiguration:ENABLEDFormatBootMediaEraseAllBlocksMarkBadBlockatCleanBootOptionForBinFSBlockReedFALSEDownloadimagenowEraseReseruedBlockLow-leuelFormattheSmartLAUNCHexistingBootMe
3、diaReadConfigurationnQjj^LOAD〈严ggn?hi(ll£R)WriteConfigurationRightEnteryourselection:Mhdiacarde如呆改为TRUE后选择W保存,那么保存在ResidentFlash的文件在重启时被淸除掉图1in如果cleanbootoption的值是FALSE,那么保存在ResidentFlash文件夹的内容在重启之后不会丢失;而如果cleanbootoption的值是TRUE,那么保存在ResidentFlash文件夹的内容在重启之后就会丢失,这是因为系统在启动的
4、时候,Filesys.dll通过删除hive-base注册表的数据所保存在的文件并且重新创建它们来执行cleanboot(因为基于Hive的注册表把注册表数据存放在文件系统的文件上,也就是保存在永久性存储介质中,在这里是nandflash),那具体是怎么实现这个动作的呢?Filesys.dll在初始化基于hive的注册表的时候,Filesys.dll调用OEMIoControl来查询是否需要清除保存在block设备上的hv文件,其CODE代码为IOCTL_HAL_GET_HIVE_CLEAN_FLAG,它的输入参数IpInBuf
5、古
6、定为H
7、IVECLEANFLAG_SYSTEM或HIVECLEANFLAG_USERS,Filesys.dll会分别用这两种参数调用两次IOCTLHALGETHIVECLEANFLAG,第一次用HIVECLEANFLAG_SYSTEM来问OEM是否需要清除system.hv,第二次用HIVECLEANFLAG_USERS做参数来查询是否要清除user.hv,如果返回的IpOutBuf中的值为TRUE则做清除操作(这样,保存在nandflash的hv文件就会被清除掉),如果为False则保留block设备上的注册表文件。这两次调用实际上就是调用了函数
8、OALIoCtlHalGetHiveCleanFlag,这个函数被调用的依据见bspsrcincioctl_tab.h中的内容,见下图00021://IOCTLCODE,FlagsHandlerFunction00023:OCTLETHIVECLEAN500022://LIoCtTHalGetHWEntropy},,OALIoCtlHalQueryFormatPartition},0,OALIoCtlHalGetCPUID},0002(j'jJ25:{IO_JGETZRWENTROFY,00026:{ioctlZhal_query_f
9、ormat_partiti00027:{IOCTL-HAL-GET.CPUID,00029:#mdude通过这Tcode.OEMIoControl哼巒会调用到00030:OALIoCtlHalGetHiveCleanFlag函数00031://RequiredTermination00032:{0,0,NULL图2卜•面我们就来看看OALIoCtlHalGetHiveCleanFla的函数体0f060伽610006200C6300064000650006600C6700C68000690007000071000
10、7200073000740007500076000770007800079000800008100C8200C8300C84000850008600C870008800C8900