一种保护软件启动参数区的方法

文档序号:6557532阅读:263来源:国知局
专利名称:一种保护软件启动参数区的方法
技术领域
本发明涉及一种单板启动程序(BOOT)参数区数据的保护方法,尤其涉及嵌入式开发中单板复位时对BOOT参数区的保存和维护。
背景技术
目前嵌入式系统的开发应用非常广泛。为了保证软件可以比较方便的升级,目前各种单板上的软件版本启动有两个过程,第一个过程是BOOT引导系统正常启动,第二个过程是版本软件正常运行。BOOT启动过程中要根据参数区的配置数据来决定版本的运行模式。BOOT参数区的内容在软件调试过程中有时会被异常地修改,如何保证每次BOOT启动过程中参数区的数据合法和有效是一个比较突出的问题。
目前系统中一般采用的是单板在每次重启过程中通过人机命令界面获取适当的启动参数,用此参数把BOOT启动参数区重新初始化一次,其流程图如图1所示。这就需要调试人员在每次单板复位后重新输入需要的配置参数。这种方法严重影响调试效率。并且在多个配置参数用手工输入的情况下很容易导致错误,严重的可能影响单板的正常启动。

发明内容
本发明即是针对上述现有技术中存在的问题而提出的一种保护软件启动参数区的方法,该方法能够有效地对单板的BOOT启动参数区内容进行保存,提高了单板调试的效率。
本发明是通过下述技术方案来实现的一种保护软件启动参数区的方法,应用于嵌入式操作系统中,包括下述步骤
(a)在嵌入式操作系统中设置一块对操作系统不可见的存储区,存储当前启动程序启动参数以及校验值;(b)在启动程序启动引导过程中,判断根据当前启动程序启动参数计算得到的校验值是否与存储区中存储的校验值一致,如果是,直接以当前启动程序启动参数启动系统,如果否,执行步骤(c);(c)用缺省的启动程序启动参数更新存储区内的当前启动程序启动参数并保存,同时计算新的校验值,并保存在存储区,利用更新后的启动程序启动参数启动系统。
进一步地,所述的步骤(a)中设置一块对操作系统不可见的存储区域是通过下述方法来实现的通过在底层软件配置过程中把部分存储区域变的让操作系统不可见的存储区域。
进一步地,所述的步骤(a)中设置一块对操作系统不可见的存储区域是通过下述方法来实现的将操作系统不初始化的存储区域作为对操作系统不可见的存储区域。
进一步地,所述的校验值是BOOT启动参数采用循环冗余校验方法计算得到。
进一步地,软件启动过程中,如用户通过人机界面输入新的BOOT启动参数,则用该新的BOOT启动参数更新存储区内的当前BOOT启动参数,并根据新的BOOT启动参数计算出新的校验值且保存在所述存储区,以更新后的BOOT启动参数启动系统。
与现有技术相比,本发明所提出的方法能够有效地对单板的BOOT启动参数区数据进行保存和校验,降低了BOOT启动后启动参数区数据配置次数,提高了单板调试的效率,同时也极大地提高了BOOT启动效率。


图1是现有技术中使用BOOT启动参数区数据启动系统的流程图。
图2是本发明具体实施例中使用BOOT启动参数区数据启动系统的流程图。
具体实施例方式
下面结合附图和具体实施例对本发明作进一步的介绍,但不作为对本发明的限定。
在vxworks等嵌入式操作系统的启动过程中,某些存储区域是不做处理的,并且操作系统的可用存储区域的大小和地址范围也是可以通过底层软件进行配置的,因而在实际应用中可以通过在底层软件配置过程中把部分存储区域变的让操作系统不可见或者利用操作系统不初始化的存储区域把BOOT参数区的内容放在这个区域。同时在BOOT系统的代码中提供对这些重要数据的维护程序,就可以做到有效的保护BOOT启动参数区的数据。
实现本发明所提出的保护软件启动参数区的方法,首先在BOOT设计的时候开辟一块对操作系统不可见的存储区,且将存储区分为两部分,第一部分存储BOOT启动参数区的数据,第二部分存储校验值;参考图2所示,每次单机系统启动时执行以下步骤步骤101计算BOOT启动参数区数据的校验值,对该参数区数据的正确性可以采用各种校验方法,其中CRC(循环冗余校验)校验较为常用;步骤102BOOT启动的时候,判断计算的BOOT启动参数区数据的校验值和存储区的存储校验值是否相同,如果校验值相同,说明BOOT启动参数区数据正常有效,不需要重新加载,执行步骤105,如果校验值不同,则表明BOOT启动参数区数据已经丢失或者被破坏,需要重新加载缺省的BOOT启动参数,执行步骤103;步骤103向BOOT启动参数区写入缺省的数据;步骤104计算BOOT启动参数区数据的校验值并保存在存储区的特定位置,保存的目的是为了下一次启动的时候用新计算的校验值与本次保存的校验值进行比较从而达到校验的目的;步骤105判断BOOT启动参数区数据是否需要修改,如果是,执行步骤106,如果否,执行步骤109;
步骤106通过人机界面获取新的参数;步骤107向BOOT启动参数区写入用户输入的参数,并保存;步骤108计算BOOT启动参数区数据的校验值并保存在存储区的特定位置,保存的目的是为了下一次启动的时候用新计算的校验值与本次保存的校验值进行比较从而达到校验的目的;步骤109使用BOOT启动参数区的数据进行系统启动。
需要指出的是,如果是单板第一次上电的时候,并且用户没有选择输入新的参数,BOOT启动参数区存放的是缺省的初始化数据,否则存放的是用户输入的新的参数数据。
还需要指出的是,缺省的初始化数据为在代码中预先设置好的参数数据。
从上述步骤中,可以看出,如果在BOOT启动引导过程中用户对BOOT启动参数做了修改,就把相应的改动保存到BOOT启动参数区并且重新计算校验值并保存。这样每次BOOT启动的时候都先对当前启动参数区的数据做合法性检测,如果数据合法,也即校验值相同,就启动,如果不合法就将BOOT启动参数区的数据初始化为缺省的数据并使用缺省的数据启动。这样如果用户对BOOT启动参数区的数据做一次修改后单板复位再启动就不必重新配置参数,系统会自动做数据检测并且正常启动。
本发明所提出的保护软件启动参数区的方法可以在嵌入式系统中广泛应用。通过对系统启动参数的保存和校验可以使得每次系统都可以准确、自动、可靠地以前一次的启动方式启动,不用每次手工输入启动参数,提高了调试效率。
权利要求
1.一种保护软件启动参数区的方法,应用于嵌入式操作系统中,包括下述步骤(a)在嵌入式操作系统中设置一块对操作系统不可见的存储区,存储当前启动程序启动参数以及校验值;(b)在启动程序启动引导过程中,判断根据当前启动程序启动参数计算得到的校验值是否与存储区中存储的校验值一致,如果是,直接以当前启动程序启动参数启动系统,如果否,执行步骤(c);(c)用缺省的启动程序启动参数更新存储区内的当前启动程序启动参数并保存,同时计算新的校验值,并保存在存储区,利用更新后的启动程序启动参数启动系统。
2.如权利要求1所述的一种保护软件启动参数区的方法,其特征在于,所述的步骤(a)中设置一块对操作系统不可见的存储区域是通过下述方法来实现的通过在底层软件配置过程中把部分存储区域变的让操作系统不可见的存储区域。
3.如权利要求1所述的一种保护软件启动参数区的方法,其特征在于,所述的步骤(a)中设置一块对操作系统不可见的存储区域是通过下述方法来实现的将操作系统不初始化的存储区域作为对操作系统不可见的存储区域。
4.如权利要求1所述的一种保护软件启动参数区的方法,其特征在于,所述的校验值是启动程序启动参数的数据采用循环冗余校验方法计算得到。
5.如权利要求1所述的一种保护软件启动参数区的方法,其特征在于,软件启动过程中,如用户通过人机界面输入新的启动程序启动参数,则用该新的启动程序启动参数更新存储区内的当前启动程序启动参数,并根据新的启动程序启动参数计算出新的校验值且保存在所述存储区,以更新后的启动程序启动参数启动系统。
全文摘要
本发明公开了一种保护软件启动参数区的方法,包括下述步骤(a)在嵌入式操作系统中设置一块对操作系统不可见的存储区,存储当前BOOT启动参数以及校验值;(b)在BOOT启动引导过程中,判断根据当前BOOT启动参数计算得到的校验值是否与存储的校验值一致,如果是,以当前BOOT启动参数启动系统,如果否,执行步骤(c);(c)将缺省的BOOT启动参数更新存储区内当前BOOT启动参数并保存,计算新的校验值并保存,利用更新后的BOOT启动参数启动系统。本发明所提出的方法能够对单板的BOOT参数区内容进行保存和校验,降低了BOOT启动后参数设置区配置次数,提高了单板调试的效率,提高了BOOT启动效率。
文档编号G06F9/445GK101042652SQ200610064998
公开日2007年9月26日 申请日期2006年3月20日 优先权日2006年3月20日
发明者吴安军, 赵少伟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1