本发明涉及嵌入式系统技术领域,特别是涉及一种基于bootrom的嵌入式系统启动方法。
背景技术:
目前,在嵌入式系统及设备中,系统在启动时上电首先默认执行bootrom程序,然后根据bootrom程序执行其他应用程序,这些应用程序包括操作系统程序,硬件设备驱动以及其他应用层程序。应用程序启动的流程的步骤包括:设备上电后,bootrom程序启动并运行,完成系统自检并初始化系统参数设置;bootrom程序从存放其他应用程序的存储器中加载相应的应用程序;bootrom程序解包或解压缩应用程序并对应用程序完整性进行校验;bootrom启动对应的应用程序中的可执行程序,并执行它;嵌入式系统启动过程完毕。
从上述启动步骤中可以看到,对应的应用程序和嵌入式系统或设备启动后需要执行的程序,是设备能够正常工作并对外提供服务的核心。如果没有该应用程序,设备将无法正常使用。所以,在系统上电时,需要使用bootrom程序按照步骤正确加载并启动该应用程序。但是,这个过程就要求bootrom程序需要对应用程序的存储位置,加密算法,是否压缩等信息了解。随着应用程序的升级或新版本发布,bootrom程序亦需伴随进行相应的升级。
然而bootrom程序通常是在芯片出厂时固化在处理器芯片内部的,对其进行升级操作成本极高,同时bootrom的升级过程也是一个危险的过程,如果在升级过程中突然断电或者由于其他突发因素,也可能会导致bootrom程序升级失败,从而造成bootrom程序损坏,进而影响整个嵌入式系统的无法正常启动。在实际的应用中,bootrom程序损坏是一个非常严重的问题,通常需要将嵌入式系统或设备送回厂家进行维修。因此如何在不升级bootrom程序的情况下,顺利地完成对升级后的应用程序的启动是亟待解决的问题。
技术实现要素:
本发明的目的是提供一种基于bootrom的嵌入式系统启动方法,以实现在不升级bootrom程序的情况下,顺利完成对升级后的应用程序的启动。
为解决上述技术问题,本发明提供一种基于bootrom的嵌入式系统启动方法,该方法包括:
系统上电,bootrom程序启动并运行初始化操作;
bootrom程序查找到加载程序,并启动和运行加载程序;
加载程序对应用程序进行解压缩,并对应用程序进行解密;
加载程序启动应用程序中的可执行程序,完成系统启动。
优选的,应用程序作为一个数据段附加在加载程序中。
优选的,所述bootrom程序查找到加载程序,并启动和运行加载程序,包括:
bootrom程序识别加载程序,加载并启动加载程序。
优选的,所述加载程序对应用程序进行解压缩,并对应用程序进行解密,包括:
加载程序识别应用程序的数据结构,为应用程序准备运行环境和运行参数;若应用程序为压缩的加密后的程序,对应用程序进行解压缩和解密。
优选的,所述加载程序启动应用程序中的可执行程序,完成系统启动,包括:
加载程序将应用程序放置到正确的位置,运行应用程序,使嵌入式系统正常运行并对外提供服务,完成系统启动。
优选的,加载程序包括:加载程序文件头、加载程序本身、应用程序文件头以及应用程序本身;应用程序文件头和应用程序本身组成应用程序。
优选的,在加载程序中,加载程序文件头被bootrom程序识别,应用程序文件头被加载程序本身识别。
本发明所提供的一种基于bootrom的嵌入式系统启动方法,系统上电,bootrom程序启动并运行初始化操作bootrom程序查找到加载程序,并启动和运行加载程序;加载程序对应用程序进行解压缩,并对应用程序进行解密;加载程序启动应用程序中的可执行程序,完成系统启动。可见,系统通过在启动过程中依次运行bootrom程序,加载程序,应用程序来完成系统启动。在bootrom程序和可执行的应用程序之间设置一加载程序,在系统或设备启动过程中,bootrom程序先加载并运行加载程序,并将应用程序作为加载程序的一段数据,加载程序负责加载应用程序并为应用程序准备运行环境和运行参数,进而启动应用程序,使得系统最终可以正常运行并对外提供相应的服务,完成系统启动过程。如此通过使用加载程序可以解耦和消除bootrom程序和应用程序之间的密切关系,即当应用程序升级时,不需要升级bootrom程序,避免了bootrom程序由于应用程序的升级而引起的频繁升级和繁琐的操作,从而避免了由于bootrom程序在升级过程中由于突然断电或者其他突发因素,导致升级失败,造成嵌入式系统无法正常工作的情况,减少了维护过程,实现在不升级bootrom程序的情况下,顺利完成对升级后的应用程序的启动。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明所提供的一种基于bootrom的嵌入式系统启动方法的流程图。
具体实施方式
本发明的核心是提供一种基于bootrom的嵌入式系统启动方法,以实现在不升级bootrom程序的情况下,顺利完成对升级后的应用程序的启动。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明所提供的一种基于bootrom的嵌入式系统启动方法的流程图,该方法包括:
s11:系统上电,bootrom程序启动并运行初始化操作;
s12:bootrom程序查找到加载程序,并启动和运行加载程序;
s13:加载程序对应用程序进行解压缩,并对应用程序进行解密;
s14:加载程序启动应用程序中的可执行程序,完成系统启动。
可见,系统通过在启动过程中依次运行bootrom程序,加载程序,应用程序来完成系统启动。在bootrom程序和可执行的应用程序之间设置一加载程序,在系统或设备启动过程中,bootrom程序先加载并运行加载程序,并将应用程序作为加载程序的一段数据,加载程序负责加载应用程序并为应用程序准备运行环境和运行参数,进而启动应用程序,使得系统最终可以正常运行并对外提供相应的服务,完成系统启动过程。
如此通过使用加载程序可以解耦和消除bootrom程序和应用程序之间的密切关系,即当应用程序升级时,不需要升级bootrom程序,避免了bootrom程序由于应用程序的升级而引起的频繁升级和繁琐的操作,从而避免了由于bootrom程序在升级过程中由于突然断电或者其他突发因素,导致升级失败,造成嵌入式系统无法正常工作的情况,减少了维护过程,实现在不升级bootrom程序的情况下,顺利完成对升级后的应用程序的启动。
基于上述方法,具体的,应用程序作为一个数据段附加在加载程序中。
进一步的,步骤s12的过程具体为:bootrom程序识别加载程序,加载并启动加载程序。
进一步的,步骤s13的过程具体为:加载程序识别应用程序的数据结构,为应用程序准备运行环境和运行参数;若应用程序为压缩的加密后的程序,对应用程序进行解压缩和解密。
进一步的,步骤s14的过程具体为:加载程序将应用程序放置到正确的位置,运行应用程序,使嵌入式系统正常运行并对外提供服务,完成系统启动。
其中,加载程序包括:加载程序文件头、加载程序本身、应用程序文件头以及应用程序本身;应用程序文件头和应用程序本身组成应用程序。
其中,在加载程序中,加载程序文件头被bootrom程序识别,应用程序文件头被加载程序本身识别。
详细的,bootrom程序加载并启动加载程序;加载程序本身能够被bootrom程序识别,并加载程序自身可以识别应用程序的数据结构,应用程序作为一个数据段附加在加载程序中;加载程序运行并为应用程序准备运行环境和运行参数;加载程序从自身的数据段中对应用程序进行提取。如果应用程序是压缩的或加密的,加载程序还需对该提取后的进行解压缩或解密;加载程序将应用程序放置到正确的位置。
本方法中,系统通过在启动过程中依次运行bootrom程序,加载程序,应用程序来完成系统启动。本方法在bootrom程序和可执行的应用程序之间设置一加载程序。其中,加载程序被编译成能够被bootrom程序识别,且其自身能够理解应用程序的数据结构。在系统或设备启动过程中,bootrom程序先加载并运行加载程序,并将应用程序作为加载程序的一段数据,加载程序负责加载应用程序并为应用程序准备运行环境和运行参数,进而启动应用程序,使得系统最终可以正常运行并对外提供相应的服务,完成系统启动过程。
本方法中通过bootrom启动加载程序,加载程序为应用程序准备运行环境和运行参数,并最终通过运行应用程序完成嵌入式系统的启动,使其对外提供相应的服务。通过使用加载程序可以解耦和消除bootrom程序和应用程序之间的密切关系,即当应用程序升级时,不需要升级bootrom程序,避免了bootrom程序由于应用程序的升级而引起的频繁升级和繁琐的操作,从而避免了由于bootrom程序在升级过程中由于突然断电或者其他突发因素,导致升级失败,造成嵌入式系统无法正常工作的情况,减少了维护过程,可以在不升级bootrom程序的情况下,顺利地完成对升级后的应用程序的启动。
本方法应用于固化了bootrom程序的嵌入式系统中,该系统运行bootrom程序,应用程序及与其相匹配的加载程序。
基于本方法,具体的,首先bootrom程序上电启动,根据配置在bootrom程序中的默认参数完成系统初始化工作;bootrom程序根据默认的加载参数,找到加载程序,并启动和运行加载程序。其中,加载程序本身由文件头,加载程序本身及应用程序组成。在文件头的生成过程中,包含了加载程序的大小,应用程序的偏移位置,加密算法,加密密钥,应用程序是否压缩的信息。因此加载程序运行时可以根据文件头中的这些信息解析并执行的相应操作完成应用程序的提取,解密及解压缩等操作,并将应用程序放置到正确的可执行位置。
其次为应用程序的运行准备好运行环境和运行参数。最后加载程序执行跳转指令,跳转到应用程序的开始位置,开始执行应用程序,从而完成嵌入式系统的启动过程。其中,加载程序需要满足bootrom的设计规范,可以被bootrom程序识别,加载并运行,同时加载程序本身能够理解应用程序及其包含的数据结构,应用程序本身作为一段数据添加到加载程序。
详细的,系统启动步骤如下:
1、系统上电后,bootrom程序完成系统自检及初始化,完成系统初始运行参数设置;
2、bootrom程序加载并启动加载程序;加载程序本身能够被bootrom程序识别,并加载程序自身可以识别应用程序的数据结构,应用程序作为一个数据段附加在加载程序中;
3、加载程序运行并为应用程序准备运行环境和运行参数;加载程序从自身的数据段中对应用程序进行提取。如果应用程序是压缩的或加密的,加载程序还需对该提取后的进行解压缩或解密;
4、加载程序将应用程序放置到正确的位置;
5、运行应用程序使得嵌入式系统或设备正常运行被对外提供相应的服务;
6、系统启动完成。
现有技术中,由于bootrom程序和应用程序之间存在对应关系,当应用程序升级时,则bootrom程序也需要相应的升级。而在实际应用中,应用程序的升级没有风险且相对较为频繁,新增功能或对原有功能的问题修复等都有可能引起一次应用程序升级操作。但是,对于bootrom程序来说,其本身是非常敏感并且重要的程序,对bootrom程序的频繁升级操作会带来比较大的风险,因此实际场景下要求对bootrom程序的升级次数越少越好,如非必要情况下最好不对bootrom程序进行升级操作。本方法在应用程序升级的前提下,可以不对bootrom程序进行升级,便可以启动升级后的应用程序,从而使得该系统可以正常的工作。
本方法中,在bootrom程序和可执行的应用程序之间设置一加载程序。其中,加载程序被编译成能够被bootrom程序识别,且其自身能够理解应用程序的数据结构。在系统或设备启动过程中,bootrom程序先加载并运行加载程序,并将应用程序作为加载程序的一段数据,加载程序负责加载应用程序并为应用程序准备运行环境和运行参数,进而启动应用程序,使得系统最终可以正常运行并对外提供相应的服务,完成系统启动过程。
本方法的优点包括:通过使用加载程序可以解耦和消除bootrom程序和应用程序之间的密切关系;即当应用程序升级时,不需要升级bootrom程序,避免了bootrom程序由于应用程序的升级而引起的频繁升级和繁琐的操作;避免了由于bootrom程序在升级过程中由于突然断电或者其他突发因素,导致升级失败,造成嵌入式系统无法正常工作的情况;减少了维护维护风险,简化应用程序升级过程。
以上对本发明所提供的一种基于bootrom的嵌入式系统启动方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。