CN101639786A - 引导嵌入式操作系统启动的方法和装置 - Google Patents
引导嵌入式操作系统启动的方法和装置 Download PDFInfo
- Publication number
- CN101639786A CN101639786A CN200910169919A CN200910169919A CN101639786A CN 101639786 A CN101639786 A CN 101639786A CN 200910169919 A CN200910169919 A CN 200910169919A CN 200910169919 A CN200910169919 A CN 200910169919A CN 101639786 A CN101639786 A CN 101639786A
- Authority
- CN
- China
- Prior art keywords
- guidance code
- starting
- code
- operation system
- guidance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种引导嵌入式操作系统启动的方法和装置,属于嵌入式领域。该方法包括:将启动映像划分成第一引导代码和第二引导代码;中央处理器执行所述第一引导代码;根据所述第二引导代码引导所述嵌入式操作系统启动。该装置包括:启动映像制作模块、执行模块和引导模块。本发明提供的技术方案可以很好的适应启动系统的现场应用,灵活性很强。
Description
技术领域
本发明属于嵌入式领域,特别涉及一种引导嵌入式操作系统启动的方法和装置。
背景技术
在嵌入式领域中,嵌入式操作系统往往需要一个类似于个人计算机(PC,Personal Computer)的基本输入输出系统(BIOS,Basic Input and OutputSystem)一样的启动映像(boot image)来引导启动。启动映像,它的作用是将嵌入式操作系统加载到主板上。boot image只初始化很少的硬件系统如串口,网口等,为加载嵌入式操作系统做准备,当加载完毕后,启动映像的作用即完成。启动映像一般存放在存储芯片,该存储芯片可以是只读存储器(ROM,Read Only Memory),可读写存储器等。启动映像是应用在工厂生产时或者在产品开发调试和测试阶段,常用专用烧写装置烧写。产品出厂后应用到市场上由于烧写器资源有限和烧写操作方法繁琐,大多用引导中央处理器(CPU,Central Processing Unit)采用在线编程的方法把启动映像写入只读存储器(ROM,Read-Only Memory)芯片中。但是在实际操作过程中由于种种原因有时会导致在线编程失败,如果对启动映像在线编程失败,系统将不能启动,现场也无法恢复,进而给项目产品带了重大故障,现场应用灵活性差。
发明内容
本发明要解决的技术问题是提供一种引导嵌入式操作系统启动的方法和装置,以解决现有技术中在线编程失败,现场无法恢复以及在线编程方式对现场应用灵活性差的问题。
为了解决上述问题,本发明提供了一种引导嵌入式操作系统启动的方法和装置,具体的技术方案如下:
一种引导嵌入式操作系统启动的方法,所述方法包括:
将启动映像划分成第一引导代码和第二引导代码;
中央处理器执行所述第一引导代码;
根据所述第二引导代码引导所述嵌入式操作系统启动。
一种引导嵌入式操作系统启动的装置,所述装置包括:
启动映像制作模块,用于制作和存储启动映像,所述启动映像划分成第一引导代码和第二引导代码;
执行模块,用于执行所述第一引导代码;
引导模块,用于根据所述第二引导代码引导所述嵌入式操作系统启动。
在本发明实施例中,通过将启动映像划分成第一引导代码和第二引导代码,执行第一引导代码,并根据第二引导代码引导嵌入式操作系统启动,可以很好的适应启动系统的现场应用,灵活性很强。
附图说明
图1是本发明实施例提供的一种引导嵌入式操作系统启动的方法的流程图;
图2是本发明实施例提供的一种引导嵌入式操作系统启动的方法的详细流程图;
图3是本发明实施例提供的一种启动映像分布和VxWorks image启动的顺序示意图;
图4是本发明实施例提供的一种引导嵌入式操作系统启动的装置。
具体实施方式
本发明的核心思想是:通过将启动映像划分成第一引导代码和第二引导代码,执行第一引导代码,并根据第二引导代码引导嵌入式操作系统启动,可以很好的适应启动系统的现场应用,灵活性很强。
下面结合附图及优选实施方式对本发明的技术方案进行进一步的详细说明。
本发明实施例提供了一种引导嵌入式操作系统的方法,如图1所示,包括:
S101,将启动映像划分成第一引导代码和第二引导代码;
S102,中央处理器执行第一引导代码;
S103,根据第二引导代码引导嵌入式操作系统启动;
进一步地,该第二引导代码为两份,其中一份作为主用第二引导代码,另一份作为备用第二引导代码,相应地,该方法还包括:
当根据主用第二引导代码嵌入式操作系统启动失败时,所述中央处理器重新启动;
中央处理器再次执行第一引导代码;
根据备用第二引导代码引导嵌入式操作系统启动。
进一步地,还包括对第一引导代码和/或第二引导代码进行升级处理的步骤。
进一步地,当第二引导代码经过压缩,在根据启动控制开关的指示将第二引导代码写入RAM之前,该方法还包括:
对第二引导代码进行解压缩的步骤。
进一步地,该方法还包括:在出厂前,将第一引导代码和第二引导代码烧结在一块只读存储器ROM中。
下面以嵌入式操作系统VxWorks为例对上述实施例进行详细的描述,但本发明的保护范围并不限于该实施例,其中,嵌入式操作系统还可以是Linux操作系统等。
针对VxWorks系统编译的启动映像是单独编译的,很容易分离开。启动映像分为引导带代码(BootStrap Programs)和引导代码(Boot Programs),在本实施例中,第一引导代码为引导带代码,第二引导代码为引导代码。其中,引导带代码的作用是完成目标机的最小初始化操作,同时,引导带代码也用于引导CPU将引导代码写入RAM中;引导代码用于引导VxWorks系统启动。其中,对引导代码进行备份,其中一份为主用引导代码,另一份为备用引导代码。在出厂前,将引导带代码、主用引导代码和备用引导代码烧写在一块ROM中。
具体地,结合图2和图3所示,该方法包括:
在CPU寻址范围内的存储空间的1个比特位来做控制开关,并且结合看门狗(watch dog)实现自动切换存储区的自动切换功能,1比特只是为了描述方便,本发明的保护范围并不限于该数值。
CPU上电(S201),CPU的编程计数器(PC,Program Counter)从存储芯片的第一存储分区执行引导带代码,通过执行引导带代码可以完成目标机的最小初始化操作(S202)。使能看门狗,备份启动标记位(boot_flag),使boot_flag_bak=boot_flag(把boot_flag赋值给boot_flag_bak)(S203),并根据boot_flag将引导代码的代码段和数据段从存储芯片写入RAM。判断boot_flag是否为0(S204),当boot_flag为0时,将boot_flag置为1(S205),同时,解压主用引导代码到RAM_HIGH_ADRS(S206),即通过主用引导代码引导嵌入式操作系统启动。如果boot_flag=1(boot_flag为1)时(S207),表示从主用引导代码启动失败时,此时,解压备用引导代码到RAM_HIGH_ADRS(S208),即通过备用引导代码引导嵌入式操作系统启动,如图3所示。
CPU判断PC是否跳转到引导代码的装入点(RAM_HIGH_ADRS)(S209),如图3所示;如果不是,则CPU重新上电启动(S210);如果是,则首先喂看门狗,并关闭看门狗(S211)。将备份的启动标记位再赋给boot_flag,即boot_flag=boot_flag_bak(S212)。然后把VxWorks image写入到RAM的RAM_HIGH_ADRS(S213),最后CPU的pc跳转到VxWorks image装入点(RAM_LOW_ADRS)运行(S214),如图3所示。然后执行静态链接在VxWorks image里的系统初始化代码,最终完成系统初始化操作(S215)。
此外,由于在升级启动映像版本时,升级引导带代码的几率很小,一般只需升级引导代码,因此在升级启动映像版本时,一般只需根据存储芯片的存储分区的划分升级第二存储区的第一存储分区的主用引导代码,以及第二存储分区的备用引导代码,除非特殊情况需要升级第一存储区的引导带代码,此时需要升级整个启动映像。
基于与方法实施例相同的发明构思,本发明实施例提供了一种引导嵌入式操作系统启动的装置,如图4所示,该装置包括:
启动映像制作模块,用于制作和存储启动映像,该启动映像划分成第一引导代码和第二引导代码;
执行模块,用于执行第一引导代码;
引导模块,用于根据第二引导代码引导所述嵌入式操作系统启动。
进一步地,第二引导代码为两份,其中一份作为主用第二引导代码,另一份作为备用第二引导代码,相应地,引导模块,还用于当根据主用第二引导代码嵌入式操作系统启动失败时,装置重新启动;执行模块,还用于再次执行第一引导代码;引导模块,还用于根据备用第二引导代码引导嵌入式操作系统启动。
进一步地,该装置还包括:升级模块,用于对第一引导代码和/或第二引导代码进行升级处理。
进一步地,当第二引导代码经过压缩,在根据第二引导代码引导所述嵌入式操作系统之前,还包括:解压缩模块,用于对第二引导代码进行解压缩。
进一步地,该启动映像制作模块为只读存储器ROM。
在本发明实施例中,通过将启动映像划分成第一引导代码和第二引导代码,执行第一引导代码,并根据第二引导代码引导嵌入式操作系统启动,可以很好的适应启动系统的现场应用,灵活性很强,可以很好的适应启动系统的现场应用,灵活性很强。还可以充分利用存储资源,降低生产成本。同时在升级时,只需升级第二引导代码,工作量小,成本低廉。
本发明所述方案,并不仅仅限于说明书和实施方式中所列运用。对本发明技术所属领域的普通技术人员来说,可根据本发明做出各种相应的改变和变形,而所有这些相应的改变和变形都属于本发明权利要求的保护范围。
Claims (10)
1、一种引导嵌入式操作系统启动的方法,其特征在于,所述方法包括:
将启动映像划分成第一引导代码和第二引导代码;
中央处理器执行所述第一引导代码;
根据所述第二引导代码引导所述嵌入式操作系统启动。
2、如权利要求1所述的方法,其特征在于,所述第二引导代码为两份,其中一份作为主用第二引导代码,另一份作为备用第二引导代码;
当根据所述主用第二引导代码所述嵌入式操作系统启动失败时,所述中央处理器重新启动;
所述中央处理器再次执行所述第一引导代码;
根据所述备用第二引导代码引导所述嵌入式操作系统启动。
3、如权利要求1所述的方法,其特征在于,还包括:对所述第一引导代码和/或所述第二引导代码进行升级处理的步骤。
4、如权利要求1所述的方法,其特征在于,当所述第二引导代码经过压缩,在根据所述第二引导代码引导所述嵌入式操作系统之前,还包括:
对所述第二引导代码进行解压缩的步骤。
5、如权利要求1-4任意一项权利要求所述的方法,其特征在于,还包括,所述第一引导代码和第二引导代码烧结在一块只读存储器ROM中。
6、一种引导嵌入式操作系统启动的装置,其特征在于,所述装置包括:
启动映像制作模块,用于制作和存储启动映像,所述启动映像划分成第一引导代码和第二引导代码;
执行模块,用于执行所述第一引导代码;
引导模块,用于根据所述第二引导代码引导所述嵌入式操作系统启动。
7、如权利要求6所述的装置,其特征在于,所述第二引导代码为两份,其中一份作为主用第二引导代码,另一份作为备用第二引导代码;相应地,
所述引导模块,还用于当根据所述主用第二引导代码所述嵌入式操作系统启动失败时,重新启动所述装置;
所述执行模块,还用于再次执行所述第一引导代码;
所述引导模块,还用于根据所述备用第二引导代码引导所述嵌入式操作系统启动。
8、如权利要求6所述的装置,其特征在于,还包括:升级模块,用于对所述第一引导代码和/或所述第二引导代码进行升级处理。
9、如权利要求6所述的装置,其特征在于,当所述第二引导代码经过压缩,在根据所述第二引导代码引导所述嵌入式操作系统之前,还包括:解压缩模块,用于对所述第二引导代码进行解压缩。
10、如权利要求6-9任意一项权利要求所述的装置,其特征在于,所述启动映像制作模块为只读存储器ROM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910169919A CN101639786A (zh) | 2009-09-08 | 2009-09-08 | 引导嵌入式操作系统启动的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910169919A CN101639786A (zh) | 2009-09-08 | 2009-09-08 | 引导嵌入式操作系统启动的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101639786A true CN101639786A (zh) | 2010-02-03 |
Family
ID=41614779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910169919A Pending CN101639786A (zh) | 2009-09-08 | 2009-09-08 | 引导嵌入式操作系统启动的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101639786A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520992A (zh) * | 2011-12-02 | 2012-06-27 | 瑞斯康达科技发展股份有限公司 | 一种嵌入式系统启动方法及装置 |
CN102999422A (zh) * | 2012-11-06 | 2013-03-27 | 太仓市同维电子有限公司 | 一种高效嵌入式系统调试方法 |
CN103425507A (zh) * | 2013-05-27 | 2013-12-04 | 林永宗 | 一种替换zigbee协议栈的zigbee固件更新方法 |
CN104778060A (zh) * | 2015-04-07 | 2015-07-15 | 珠海全志科技股份有限公司 | 一种嵌入式Linux系统快速安全启动方法 |
CN104951328A (zh) * | 2014-03-31 | 2015-09-30 | 国基电子(上海)有限公司 | 嵌入式设备及其启动方法 |
CN105378663A (zh) * | 2013-07-31 | 2016-03-02 | 惠普发展公司,有限责任合伙企业 | 更新引导代码 |
CN106155752A (zh) * | 2016-08-03 | 2016-11-23 | 北京蛙视通信技术股份有限公司 | 一种嵌入式操作系统启动的方法及装置 |
CN110018852A (zh) * | 2018-01-10 | 2019-07-16 | 中兴通讯股份有限公司 | 一种系统二级引导方法、设备及存储介质 |
-
2009
- 2009-09-08 CN CN200910169919A patent/CN101639786A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520992A (zh) * | 2011-12-02 | 2012-06-27 | 瑞斯康达科技发展股份有限公司 | 一种嵌入式系统启动方法及装置 |
CN102999422A (zh) * | 2012-11-06 | 2013-03-27 | 太仓市同维电子有限公司 | 一种高效嵌入式系统调试方法 |
CN102999422B (zh) * | 2012-11-06 | 2015-11-25 | 太仓市同维电子有限公司 | 一种高效嵌入式系统调试方法 |
CN103425507A (zh) * | 2013-05-27 | 2013-12-04 | 林永宗 | 一种替换zigbee协议栈的zigbee固件更新方法 |
CN105378663A (zh) * | 2013-07-31 | 2016-03-02 | 惠普发展公司,有限责任合伙企业 | 更新引导代码 |
CN105378663B (zh) * | 2013-07-31 | 2019-01-15 | 惠普发展公司,有限责任合伙企业 | 用于更新引导代码的系统和方法 |
CN104951328A (zh) * | 2014-03-31 | 2015-09-30 | 国基电子(上海)有限公司 | 嵌入式设备及其启动方法 |
CN104778060A (zh) * | 2015-04-07 | 2015-07-15 | 珠海全志科技股份有限公司 | 一种嵌入式Linux系统快速安全启动方法 |
CN106155752A (zh) * | 2016-08-03 | 2016-11-23 | 北京蛙视通信技术股份有限公司 | 一种嵌入式操作系统启动的方法及装置 |
CN110018852A (zh) * | 2018-01-10 | 2019-07-16 | 中兴通讯股份有限公司 | 一种系统二级引导方法、设备及存储介质 |
CN110018852B (zh) * | 2018-01-10 | 2021-10-15 | 中兴通讯股份有限公司 | 一种系统二级引导方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101639786A (zh) | 引导嵌入式操作系统启动的方法和装置 | |
CN100507773C (zh) | 实现固化程序在线升级的方法和装置 | |
US5269022A (en) | Method and apparatus for booting a computer system by restoring the main memory from a backup memory | |
US9189248B2 (en) | Specialized boot path for speeding up resume from sleep state | |
CN100377085C (zh) | 嵌入式操作系统硬件镜像启动优化的实现方法 | |
US20110302572A1 (en) | Embedded network device and firmware upgrading method | |
US20020078338A1 (en) | Method and apparatus for fast computer initialization | |
CN101373451B (zh) | 保护双基本输出入系统程序的计算机系统及其控制方法 | |
CN100504782C (zh) | 避免基本输出入系统程序更新失败的计算机系统 | |
CN102207881A (zh) | 一种基于Android的操作系统快速启动方法 | |
CN110413230B (zh) | 一种嵌入式系统构建方法及存储介质 | |
CN103299276A (zh) | 嵌入式装置的软件更新过程 | |
CN104360877A (zh) | 基于Bootloader自更新的ECU固件更新方法 | |
CN101308470A (zh) | 主动恢复、备份及更新bios的电脑系统 | |
CN109408122B (zh) | 一种设备启动方法、电子设备和计算机存储介质 | |
CN111857776A (zh) | Dsp板卡类的应用程序的在线升级方法 | |
CN105739961A (zh) | 一种嵌入式系统的启动方法和装置 | |
CN104866324A (zh) | 一种便携操作系统构建方法及便携存储器 | |
CN101140537A (zh) | 嵌入式操作系统的备份与恢复操作方法 | |
CN103092659A (zh) | 脱离仿真器支持环境的dsp软件升级系统及其升级方法 | |
CN101241442A (zh) | 具有双开机程序代码区的计算机系统及其启动方法 | |
CN111796882A (zh) | 电子设备系统处理方法、装置及电子设备 | |
CN102968319A (zh) | VxWorks映像的加载方法 | |
CN104866397A (zh) | 计算机系统与控制方法 | |
CN116501357A (zh) | 一种单片机的在线升级方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100203 |