CN104503799A - 在系统启动过程中对外设不间断控制的方法 - Google Patents
在系统启动过程中对外设不间断控制的方法 Download PDFInfo
- Publication number
- CN104503799A CN104503799A CN201410841495.0A CN201410841495A CN104503799A CN 104503799 A CN104503799 A CN 104503799A CN 201410841495 A CN201410841495 A CN 201410841495A CN 104503799 A CN104503799 A CN 104503799A
- Authority
- CN
- China
- Prior art keywords
- hardware
- control
- peripheral hardware
- interrupt
- peripherals
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
一种在不增加硬件成本和不改变系统架构的前提下,确保系统在启动时仍能对所需外设进行不间断控制的方法。包括如下步骤:1)在系统上电启动后,打开实时中断,将系统的中断模块代码和系统硬件驱动和控制代码作为紧急加载部分预先加载到系统中;2)执行紧急加载部分中的中断异常处理和硬件驱动和控制代码;3)紧急加载完成后,只需执行系统开放出的钩子函数来完成对应外设的控制。4)启动完毕后,通过系统中相应的应用程序解除掉启动过程中紧急加载部分中对外设的控制代码,由系统接管对相应外设的控制。仅需要调整系统的可执行程序的布局,不用修改系统的功能与架构;在没有增加硬件的前提下,解决系统启动中对需紧急控制外设的不间断控制。
Description
技术领域
本发明涉及一种计算机操作系统的控制方法,特别涉及一种嵌入式计算机作系统在启动过程中对外设不间断控制的方法。
背景技术
通常,在嵌入式计算机操作系统中,对于外部设备(以下简称外设)的控制基本上是在系统加载完毕后再由系统接管控制。对于那些需要在系统启动时或者需要系统在启动过程中进行不间断控制的外设(例如:在工控领域,很多设备是一上电就需要对外设进行可靠控制,而不是等待OS启动完毕,比方电力测控装置,其在OS启动前就应该对出口外设有足够的控制能力,否则会很容易误发各种开出信号,导致开关断开从而导致停电甚至整个变电站崩溃)来说,上述方法便无法解决在系统启动过程中对该类外设的控制。
一般而言,整个嵌入式系统完全启动需要一定的时间(即可执行程序加载和应用程序的初始化需要耗用一定的时间),对于那些需要在系统启动阶段就需要控制的外设,现有技术中的工作方式,有如下几种:
1)在系统启动代码中穿插外设控制代码,该方法虽然可以做到在系统启动过程中对外设的控制,但是其缺点也相当明显:穿插添加的代码不仅组织凌乱,管理也非常的复杂;对于开源系统而言,该方法可以很好的完成,但是对于那些不开源的系统,该方法根本无法使用。
2)将急需控制的外设禁止掉,当系统加载完毕后再打开,由相关应用调用驱动进行系统性控制。该方法确实可以避免系统启动过程中由于无法控制外设而造成的损失,对系统加载时间短的嵌入式系统而言,该方法确实有效,但是对于那些比较大的系统而言,该方法无法实施(即是说:对于大型OS而言,其加载和启动过程时间相对较长,对于那些需要立即响应的外设而言,显然不可能接受)。更现实的情况是,有些外设需要上电的前一段时间就要做一些功能性操作。
3)系统在启动过程中先由其他逻辑设备来控制外设,当系统启动完毕以后,再由系统接管这些逻辑设备控制的外设,并对其进行系统性的控制。该方法是目前使用比较广泛的,在实际应用中确实可以解决系统在启动过程中,即可对外设进行有效控制,又不会影响系统启动速度的问题。但是其缺点也比较明显,即所述逻辑设备会额外增加硬件投资成本,同时对于硬件的设计和整个产品的架构都产生了影响,给实施带来一定的困难(例如:增加硬件,必然增加硬件成本,增加维护难度;同时,增加硬件对于产品布局和产品体积必然会造成影响;在硬件性能方面,会加大硬件通过一些测试、认证的难度,比方EMC实验等)。
发明内容
本发明要解决的技术问题是提供一种在不增加硬件成本和不改变系统架构的前提下,确保系统在启动时仍能对所需外设进行不间断控制的方法。
为了解决上述技术问题,本发明采用的技术方案为:
本发明的在系统启动过程中对外设不间断控制的方法,包括如下步骤:
1)在系统上电启动后,打开实时中断,将系统的中断模块代码和系统硬件驱动和控制代码作为紧急加载部分预先加载到系统中;
2)在系统启动过程中执行所述紧急加载部分中的中断异常处理和硬件驱动和控制代码;
3)在系统紧急加载完成后,只需执行系统开放出的钩子函数来完成对应外设的控制;
4)当系统启动完毕后,通过系统中相应的应用程序解除掉启动过程中紧急加载部分中对外设的控制代码,由系统接管对相应外设的控制。
所述中断模块代码由编译器的编译和链接器的链接并经操作系统引导程序加载到链接指定的运行地址,该运行地址存储在记忆性的存储介质中。
在操作系统引导程序的引导过程中,优先加载中断管理和需要提前执行的代码,然后进行中断管理模块的初始化以及硬件驱动和控制代码。
与现有技术相比,本发明的方法仅需要调整系统的可执行程序的布局,不用修改系统的功能与架构;而且在没有增加硬件的前提下,解决了系统启动中对需要紧急控制的外设的不间断控制。
附图说明
图1为本发明方法的流程图。
图2为本发明方法中普通中断和实时中断关系示意图。
具体实施方式
如图1所示,本发明的在系统启动过程中对外设不间断控制的方法是在启动阶段如果需要控制一些外设,则必须要有相应的中断异常处理和相应的硬件驱动程序。
操作系统的执行功能一般可以分为五个部分:中断异常处理、硬件驱动管理(驱动模型及其组织方式)、内存管理、任务调度管理、应用程序;其中前两项和硬件(CPU及其具体外设)紧密相关。本方案是将整个操作系统按照其执行功能分为两部分:紧急处理功能和系统通用功能,其中紧急处理功能包括中断异常处理、硬件驱动管理;系统通用功能包括内存管理、任务调度管理、应用程序。
采用在启动过程中启动硬件定时器,在硬件定时器的中断服务函数中实现我们的硬件看门狗的复位(读写某个硬件寄存器或者IO端口),而传统OS启动过程中一般都是禁止中断发生。因此实现的难点和关键就在于:如何在系统启动过程中实现硬件定时器启动而又不破坏系统的整个OS的启动过程。首先我们重新构造我们的中断管理模块,中断分为实时中断和普通中断(如图2所示),普通中断即为传统OS的中断模块,而实时中断则为紧急处理中断,是可以打断普通中断的。整个中断管理模块如图2所示。因此配置硬件定时器为实时中断,在启动过程中关闭普通中断总开关而打开中断总开关,可以让硬件定时器中断可以产生定时中断,从而实现在定时器中断呢函数中复位看门狗,避免启动过程中看门狗复位系统导致不断的系统重启。其次,在硬件看门狗的中断服务函数中,记录复位硬件看门狗的次数,超过指定次数就不再复位硬件看门狗,该指定次数根据系统正常加载和启动时间来决定,当系统在加载和启动过程中出现意外导致不能正常启动时,由于超过指定的复位看门狗次数导致不再复位看门狗,从而由硬件看门狗进行复位系统并重新启动。再次,关于中断管理我们使用实时中断这段代码必须提前加载到指定的运行时地址并执行。代码在经过编译器的编译和链接器的链接之后才成为真正的可执行代码,但是这部分可执行代码一般的存储在记忆性的存储介质中,必须加载到链接指定的运行时地址上才可以正确运行,而这部分工作通常由引导程序完成。为了保证中断管理模块以及使用实时中断的硬件定时器代码能够提前加载并运行,必须在链接的时候通过脚本文件配置该部分代码到指定的位置。最后,在引导程序中,优先加载中断管理和需要提前执行的代码(硬件定时器的初始化和中断服务函数),然后进行中断管理模块的初始化以及硬件定时器初始化,并将硬件定时器的中断服务函数设置为复位硬件看门狗,完成之后再继续进行系统的加载和系统的启动。当系统正常启动后,则由需要监视的任务来接管看门狗的复位工作。上述方法能够在系统启动过程中,不需要专门的硬件来复位看门狗,也不需要再系统代码中等时间间隔的插入复位看门狗的代码,就可以实现硬件看门狗对系统启动过程的监视。
整个系统的可执行程序按照这两个部分加以分割(这个在编译的时候通过人为设置编译连接文件是可以做到的,即:对于可执行程序的生成,一般是链接器通过链接脚本来分配自己的执行地址,只需要将相应的模块的执行地址分配在一起就可以将两部分的执行代码分隔开),一般而言,紧急处理功能部分的可执行程序的大小远小于系统通用功能部分的可执行程序的大小,表现为在系统启动过程中其加载时间非常短。当紧急功能部分的可执行程序加载完毕后,该操作系统即具有处理中断异常的能力,而且也具备了管理硬件的能力,其流程如图1所示。
当系统的紧急功能加载完毕后,关于中断异常、驱动等可执行程序就可以正确执行了(已经从存储地址加载到了对应的运行时地址)。换句话说,在系统的紧急功能部分加载完毕后,需要控制的外设即可得到及时有效的控制,前提是我们将对应的外设的控制可执行程序放在紧急加载中。在紧急加载完成后,只需要执行系统开放出的钩子函数来完成对应外设的控制,此时拥有的方法有定时器、中断等,对于一般外设的需求应该是足够。
当系统启动完毕后,则通过被控制外设的相关应用程序来解除掉启动过程中对该外设的控制(解除相关定时器中断等),从而实现自己对对应外设的接管。当系统在正常运行过程中需要热重启或者软复位等情况时,由于紧急功能也属于系统的一部分,因此该部分也会重新执行,而我们在启动过程中对所述外设的控制是在紧急加载中实现的,因此必然能够重新控制对应外设。即是说,对于一个外设而言,其肯定受控于某个或者某几个应用任务,否则该硬件就没有存在的必要了;因此,该处的应用程序是指需要控制指定外设(需要全程监控的外设)的任务。
从整个系统启动到运行来看,所有的外设都可以纳入到系统的管理范围内。只有在紧急功能加载过程中外设是属于失控状态,但是紧急功能相对于通用功能的加载启动而言,其时间几乎可以忽略不计,因此该方案基本实现了系统在启动过程中对外设的控制。
Claims (3)
1.一种在系统启动过程中对外设不间断控制的方法,其特征在于:包括如下步骤:
1)在系统上电启动后,打开实时中断,将系统的中断模块代码和系统硬件驱动和控制代码作为紧急加载部分预先加载到系统中;
2)在系统启动过程中执行所述紧急加载部分中的中断异常处理和硬件驱动和控制代码;
3)在系统紧急加载完成后,只需执行系统开放出的钩子函数来完成对应外设的控制;
4)当系统启动完毕后,通过系统中相应的应用程序解除掉启动过程中紧急加载部分中对外设的控制代码,由系统接管对相应外设的控制。
2.根据权利要求1所述的方法,其特征在于:所述中断模块代码由编译器的编译和链接器的链接并经操作系统引导程序加载到链接指定的运行地址,该运行地址存储在记忆性的存储介质中。
3.根据权利要求2所述的方法,其特征在于:在操作系统引导程序的引导过程中,优先加载中断管理和需要提前执行的代码,然后进行中断管理模块的初始化以及硬件驱动和控制代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841495.0A CN104503799A (zh) | 2014-12-29 | 2014-12-29 | 在系统启动过程中对外设不间断控制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841495.0A CN104503799A (zh) | 2014-12-29 | 2014-12-29 | 在系统启动过程中对外设不间断控制的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104503799A true CN104503799A (zh) | 2015-04-08 |
Family
ID=52945200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410841495.0A Pending CN104503799A (zh) | 2014-12-29 | 2014-12-29 | 在系统启动过程中对外设不间断控制的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104503799A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943259A (zh) * | 2016-10-13 | 2018-04-20 | 普天信息技术有限公司 | 基于VxWorks系统的掉电复位方法和装置 |
CN109982136A (zh) * | 2017-12-28 | 2019-07-05 | Tcl集团股份有限公司 | 音量调节的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196836A (zh) * | 2007-12-29 | 2008-06-11 | 上海华为技术有限公司 | 一种控制看门狗电路复位的方法和装置 |
JP2008225807A (ja) * | 2007-03-13 | 2008-09-25 | Yaskawa Electric Corp | 制御装置およびそのプログラム暴走監視方法 |
CN101770398A (zh) * | 2008-12-26 | 2010-07-07 | 罗侍田 | 一种操作系统内核 |
CN103365747A (zh) * | 2013-07-10 | 2013-10-23 | 深圳市共进电子股份有限公司 | 一种嵌入式电子设备配置自动还原的方法及配置自动还原系统 |
-
2014
- 2014-12-29 CN CN201410841495.0A patent/CN104503799A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008225807A (ja) * | 2007-03-13 | 2008-09-25 | Yaskawa Electric Corp | 制御装置およびそのプログラム暴走監視方法 |
CN101196836A (zh) * | 2007-12-29 | 2008-06-11 | 上海华为技术有限公司 | 一种控制看门狗电路复位的方法和装置 |
CN101770398A (zh) * | 2008-12-26 | 2010-07-07 | 罗侍田 | 一种操作系统内核 |
CN103365747A (zh) * | 2013-07-10 | 2013-10-23 | 深圳市共进电子股份有限公司 | 一种嵌入式电子设备配置自动还原的方法及配置自动还原系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943259A (zh) * | 2016-10-13 | 2018-04-20 | 普天信息技术有限公司 | 基于VxWorks系统的掉电复位方法和装置 |
CN109982136A (zh) * | 2017-12-28 | 2019-07-05 | Tcl集团股份有限公司 | 音量调节的方法及装置 |
CN109982136B (zh) * | 2017-12-28 | 2020-09-04 | Tcl科技集团股份有限公司 | 音量调节的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10002003B2 (en) | Method for presenting initialization progress of hardware in server, and server | |
CN103207797B (zh) | 基于通用可扩展固件接口固件系统的胶囊式定制更新方法 | |
TW201802694A (zh) | 具有非揮發性雙列記憶體模組之非同步式dram再新之正常關機 | |
CN105159719A (zh) | 一种主备用基本输入输出系统的启动方法及装置 | |
JP6971016B2 (ja) | 制御装置、制御方法およびプログラム | |
CN103885847A (zh) | 一种基于嵌入式系统的喂狗方法及装置 | |
US10564707B2 (en) | System management controller | |
US8954800B1 (en) | Recovery button for automatically entering recovery mode | |
CN105917306A (zh) | 系统固件配置数据 | |
CN104503859A (zh) | 在启动过程中监控计算机操作系统的方法 | |
CN101739305A (zh) | 操作系统内核级实时看门狗监控装置及其监控方法 | |
CN106990985A (zh) | 基于bmc更新及备份系统uefi固件的设备和方法 | |
CN105740139A (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
WO2016033941A1 (zh) | Boot在线升级装置及方法 | |
CN104503799A (zh) | 在系统启动过程中对外设不间断控制的方法 | |
JP4488676B2 (ja) | プロセッサのアイドル状態 | |
CN102880479B (zh) | 一种远程修改bios属性参数的方法及装置 | |
CN103729219A (zh) | 一种uefi bios架构方法及系统 | |
CN105556461A (zh) | 用于预os镜像重写以提供跨架构支持、安全性自省和性能优化的技术 | |
JP2008040698A (ja) | プログラマブルコントローラの異常監視方式 | |
CN111767174A (zh) | 一种bios刷新控制方法及服务器、存储介质 | |
US20180059752A1 (en) | Virtual ac cycling within an information handling system | |
CN109344107A (zh) | 一种Linux系统控制台设置的方法和装置 | |
CN108052353B (zh) | 一种提高bios控制模块同步速度的方法及设备 | |
CN104142870A (zh) | 虚拟bios开机系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150408 |
|
RJ01 | Rejection of invention patent application after publication |