具体实施方式
下面结合附图,对本发明中的嵌入式***设定值设定***、方法及电子装置方法作进一步的详细描述。
请参考图1,本发明一较佳实施方式中的嵌入式***设定值设定***100(以下称为:设定***100),应用于一具有嵌入式***的电子装置200中,该电子装置200包括存储单元10以及处理器20。
该存储单元10中存储有该电子装置200的内存映像(image)文件等开机文件以及开机时需要加载的***设定值和该***出厂时默认的初始设定值,其中,该***设定值中包括用户进行***设置时所输入的设定值。该存储单元10中还建立有一个或多个分区用于存储备份***设定值,该备份***设定值用于对该***设定值进行备份,在***正常运行情况下,当该***设定值有更新时,该备份***设定值与该主***设定值同步更新。该存储单元10中存储的映像文件的版本号根据服务商向电子装置200提供的服务的不同而不同。其中该映像文件中还包括一参考设定值,该参考设定值因映像文件的版本号不同而不同,也就是说,服务商提供的每种服务对应一唯一的参考设定值,服务商能够根据参考设定值为用户提供对应的服务,例如,无线服务对应的映像文件与有线服务对应的映像文件中的参考设定值不同。
在本实施方式中,该***设定值和该备份***设定值中均包括一循环冗余校验码(Cyclic Redundancy Check,CRC),用于做错误侦测,即,当该***设定值中的CRC值正确时说明该***设定值正常,当该***设定值中的CRC值错误则说明该***设定值异常。在其他实施方式中,该循环冗余校验码也可以是其他类型的校验码。在本实施方式中,该存储单元10包含的存储器至少包括Flash存储器、RAM存储器,该内存映像文件等开机文件存储于该Flash存储器中。
该设定***100包括判断模块11、设置模块12以及开机启动模块13。在本实施方式中,该设定***100运行于该处理器20上。在其他实施方式中,该判断模块11、设置模块12以及开机启动模块13也可以是处理器20的组成部分,即固化在处理器20上的硬件单元。
在本实施方式中,该开机启动模块13用于在该具有嵌入式***的电子装置200开机时,将存储于Flash存储器中的内存映像文件等开机文件从Flash存储器中复制、解压到RAM存储器中,再从RAM中启动该开机程序,加载***设定值进行开机操作。
该判断模块11在开机启动模块13将开机文件解压到RAM存储器中之后,首先判断该***设定值中的CRC是否正确并判断该***设定值与该备份***设定值是否一致,该设置模块12根据该判断模块11的判断结果对该***设定值和/或该备份***设定值进行设置,然后再启动后续开机程序。
具体地,该设定***100的工作过程可分为以下几种情况:
第一种情况:当该判断模块11确定该***设定值中的CRC值正确且该***设定值与备份***设定值一致,则设置模块12保持当前对该***设定值和该备份***设定值的设置。
第二种情况:当该判断模块11确定该***设定值中的CRC值正确但该***设定值与备份***设定值不一致时,则该判断模块11继续判断该***设定值是否与初始设定值相同,当该判断模块11确定该***设定值与初始设定值不一致时,即该***设定值为用户设定值时,该设置模块12用该***设定值替换该备份***设定值而对该备份***设定值进行更新。即,上述情况说明是***设定值正常,但是在该***设定值经过用户设定后该备份***设定值没有与该***设定值同步,因此该设置模块12将该***设定值替换该备份***设定值使得备份***设定值与***设定值同步。
第三种情况:当该判断模块11确定该***设定值的CRC值正确但该***设定值与备份***设定值不一致但该***设定值与初始设定值一致时,则该判断模块11继续判断该备份***设定值的CRC值是否正常,当该备份***设定值的CRC值正常时,则该设置模块12将该备份***设定值替换该***设定值而对***设定值进行更新。即,上述情况说明虽然***设定值的CRC值正常,但已经被恢复为初始值,所以与备份***设定值不一致,因此用备份***设定值替换已经恢复为初始值的***设定值,从而可以保护用户的设定值不会丢失。
第四种情况:当该判断模块11确定该***设定值的CRC值正确但该***设定值与备份***设定值不一致但该***设定值与初始设定值一致时,若该备份***设定值的CRC值异常,则该设置模块12将该备份***设定值恢复为初始设定值。即,上述情况说明***设定值已经恢复为初始设定值且备份***设定值异常,因此只能将备份***设定值也恢复为初始设定值。
第五种情况:当该判断模块11确定该***设定值的CRC值异常时,继续判断该备份***设定值的CRC值是否正常,当该备份***设定值的CRC正常时,该判断模块11继续判断该备份***设定值是否与初始设定值相同,当该备份***设定值与初始设定值不同时,则该设置模块12用该备份***设定值替换该***设定值,即,上述情况说明***设定值出现异常,而备份***设定值正常,则用该备份***设定值替换该***设定值以防止用户的设定值丢失。
第六种情况:当该判断模块11确定该***设定值的CRC值异常且该备份***设定值的CRC值正常,同时该备份***设定值与初始设定值相同时,则该设置模块12将该***设定值恢复为初始设定值。
第七种情况:当该判断模块11确定该***设定值的CRC值异常同时备份***设定值的CRC值也异常,则该设置模块12将该***设定值及备份***设定值均恢复为初始设定值。
该设置模块12根据该判断模块11的判断结果对该***设定值和/或该备份***设定值设置完成后,该判断模块11还将该参考设定值与该***设定值进行比较,该开机启动模块13根据判断模块11的比较结果选择与该参考设定值相对应的服务进行加载并完成后续的开机操作,从而***可以正确的选择用户所需的服务。
在本实施方式中,该设定***100还包括一中央控制模块14,该中央控制模块14用于对该嵌入式***中所有进程访问该***设定值或设定***设定值的过程进行控制。该中央控制模块14通过现有技术中的保护锁机制控制在同一时间内只能有一个进程访问该***设定值。由于保护锁机制为本领域中的常用技术,故在此不再赘述。在本实施方式中,该存储单元10中还包括一个公用存储器(图未示),用于存储所有进程由***设定值获取的或对***设定值进行设置的数据。该中央控制模块14首先判断该修改设定值是否会与其他进程的修改发生冲突,若发生冲突,则舍弃该修改设定值;若没有冲突,则该中央控制模块14继续判断该Flash存储器是否有空闲时间,当确定该存储该***设定值的Flash存储器有空闲时间且该修改设定值不会中断***的正常运行时,该中央控制模块14根据该修改设定值修改该Flash存储器中存储的***设定值和备份***设定值。当该Flash存储器的空闲时间不足以该***设定值和备份***设定值全部修改时,该中央控制模块14首先根据该修改设定值修改该***设定值,该备份***设定值则在***启动时再与该***设定值进行同步。
图2为本发明一实施方式中嵌入式***设定值的设定方法流程图,该方法应用于图1所示的电子装置200中。
步骤S201:该判断模块11在开机启动模块13执行开机过程中,执行加载***设定值的步骤之前,该判断模块11首先判断该***设定值的CRC是否正确,若正确,则执行步骤S202,若不正确则执行步骤S209。
步骤S202:该判断模块11判断该***设定值是否与该备份***设定值一致,若是,则执行步骤S203,若否,则执行步骤S204。
步骤S203:该开机启动模块13加载该***设定值执行后续的开机操作(即第一种情况)。
步骤S204:该判断模块11继续判断该***设定值是否与初始设定值一致,若该***设定值与该初始设定值不一致,则执行步骤S205,否则执行步骤S206。
步骤S205:该设置模块12将该***设定值替换该备份***设定值(即第二种情况)。
步骤S206:该判断模块11继续判断该备份***设定值的CRC值是否正确,若正确,则执行步骤S207,若不正确则执行步骤S208。
步骤S207:该设置模块12用该备份***设定值替换该***设定值(即第三种情况)。
步骤S208:该设置模块12将该备份***设定值恢复为初始设定值(即第四种情况)。
步骤S209:该判断模块11判断该备份***设定值的CRC值是否正确,若正确,则执行步骤S210,否则执行步骤S213。
步骤S210:该判断模块11判断该备份***设定值是否与初始设定值一致,若不一致,则执行步骤S211,若一致则执行步骤S212。
步骤S211:该设置模块12用该备份***设定值替换该***设定值(即第五种情况)。
步骤S212:该开机启动模块13将该***设定值恢复为初始设定值(即第六种情况)。
步骤S213:该设置模块12将该***设定值及备份***设定值均恢复为初始设定值(即第七种情况)。
在本实施方式中,该***设定值的设定方法在图2所示的步骤之后,还包括步骤:该中央控制模块14判断该修改设定值是否会与其他进程的修改发生冲突。若发生冲突,则舍弃该修改设定值;若没有冲突,则该中央控制模块14继续判断该Flash存储器是否有空闲时间,当确定该存储该***设定值的Flash存储器有空闲时间且该修改设定值不会中断***的正常运行时,该中央控制模块14根据该修改设定值修改该Flash存储器中存储的***设定值和备份***设定值;当该Flash存储器的空闲时间不足以该***设定值和备份***设定值全部修改时,该中央控制模块14首先根据该修改设定值修改该***设定值,该备份***设定值则在***启动时再与该***设定值进行同步。
尽管对本发明的优选实施方式进行了说明和描述,但是本领域的技术人员将领悟到,以上实施例的说明只是用于帮助理解本发明,对于本领域的技术人员而言,依据本发明的思想,在具体实施方式及应用范围上可以作出各种变化和改进,这些都不超出本发明的真正范围。因此期望,本发明并不局限于所公开的作为实现本发明所设想的最佳模式的具体实施方式,本发明包括的所有实施方式都在所附权利要求书的保护范围内。