微控制器多源看门狗的实现方法

文档序号:6582200阅读:112来源:国知局
专利名称:微控制器多源看门狗的实现方法
技术领域
本发明涉及一种微控制器(MCU,Microcontroller Unit)多源看门狗的实现方法, 该方法主要用于微控制器(MCU)运行状态的监视以及对运行错误的纠正,也可应用于其他 的芯片级的处理器领域。
背景技术
看门狗监视器在微控制器(MCU)的应用上非常普遍,在工业控制上尤其如此。在 大型的工业流水线上,许多机器在MCU的控制下按照预定的程序有序地运行着。如果由于 未能预料的原因,如脉冲干扰等,造成程序跑飞,系统无法正常地工作而进入死循环,这时 系统就必须立刻被重新复位,否则就会对生产活动造成影响。因此,必需由操作人员在机器 旁边照看,如果出现死循环,就手动复位。这种方法既浪费了资源,也不是非常有效。而看 门狗监视器的出现,解决了这类的问题。一旦程序发生跑飞进入死循环状态,看门狗监视器 就能够监视到程序运行异常的发生,自动产生一个复位信号,在人工不干预的情况下也能 对系统进行复位。但是,传统的看门狗监视器也有其缺点。虽然它能够发现程序跑飞的问题并进行 纠正,却无法告知用户程序跑飞的位置与发生的原因。在具体操作中,技术人员需要凭借经 验花费大量的时间查找错误的源头,这也一直是运用传统看门狗监视器的一个遗憾。

发明内容
本发明的目的在于提供一种微控制器多源看门狗的实现方法,相比传统的看门狗 电路,它不仅具有系统自动复位的功能,而且该方法通过多个看门狗的协调工作以及设置 专门的寄存器,能够保存发生错误时CPU所在程序段的位置信息,这样就能使系统工作人 员快速找出程序的出错点,从而减少了系统工作人员在系统出现程序跑飞问题后的仿真时 间,简化了仿真和检错的过程,极大地提高了工作的效率。该方法在应用上可以通过硬件电路方便地实现,并且可以作为功能模块来嵌入到 芯片内部以提高系统集成度。为达到上述目的,本发明的构思如下构建一个集成在MCU内部的多源看门狗模块,该模块内部由多个看门狗监视器组 成,整个设计通过多个看门狗的协调工作以及设置专门的寄存器来达到设计的要求。每个看门狗的工作方式与传统的看门狗监视器基本一致,即根据主程序会循环运 行的原理,在程序中设置看门狗定时器的程序。启动看门狗定时器后,在正常情况下每当程 序循环运行到看门狗定时器相应的程序时,就会对看门狗定时器进行赋值操作(也称为刷 新看门狗或者“喂狗”)。如果出现程序跑飞的故障则主程序的循环无法进行,也就无法实 现刷新操作,则看门狗定时器会一直计数直到某一个临界值并发出复位信号使整个MCU复 位,也就纠正了程序跑飞造成的影响。多源看门狗模块内嵌多个上述的看门狗监视器,并且为该模块配置了专门的标志位寄存器来存放各看门狗的状态,多个看门狗的协同作用就可以知道程序发生跑飞的位 置,

图1是多源看门狗思想的工作示意图。如图1所示,当程序跑飞的现象发生以后,发生 状况的程序段之前的看门狗定时器已经被赋值,而由于程序跑飞,发生状况的程序段之后 的看门狗定时器无法得到赋值,则其中距发生状况的程序段最近的看门狗定时 器就会首先 发生复位。在看门狗定时器发出复位信号的同时,标志位寄存器内相应的标志位会被置位。 这样,通过在程序的不同位置嵌入多个看门狗进行监视,一旦发生复位,只要查看标志寄存 器就可以知道发生复位的看门狗位置,从而确定程序跑飞发生的位置。这对检查错误产生 的位置以及产生的原因都带来极大的方便。根据上述构思,本发明采用下述技术方案一种MCU多源看门狗实现方法,其特征在于通过一个嵌入在芯片内部多源看门狗 模块,可以在程序的不同位置设置多个看门狗监视器以跟踪程序的运行,专门的标志位寄 存器还可在MCU被复位后记录下产生复位的看门狗的信息,以方便发现错误。其具体步骤 为a.设置η个独立的看门狗定时器模块,每个模块包括一个单独的看门狗初值寄存 器;b.设置看门狗频率选择寄存器来配置每一个看门狗的工作频率,以适应不同的应 用条件;c.设置看门狗运行控制寄存器,该寄存器通过控制每一个看门狗的运行使能位来 控制其运行情况;d.设置看门狗标志位寄存器,该寄存器可以在看门狗对MCU发出复位信号前,记 录下发出信号的看门狗监视器的身份信息,以供应用人员读出并找出错误的源头。e.改变原MCU的复位方式,将多源看门狗模块的复位信号引入到复位模块,使其 可以触发MCU复位上述设置η个独立的定时器模块的方法为每个模块都是一个独立的定时器模块,所有η个模块的结构完全相同。所有的定 时器都采用统一的计数方式,即统一采用“加一”或者“减一”的计数方式。每个定时器模 块均采用统一的复位信号,当定时器被复位时会处于一个默认的初值状态。在非复位状态, 定时器可以通过用户的控制按照要求进行“加一”或者“减一”的计数运算。每个定时器不仅可以从默认的计数初值开始计数,而且可以从一个指定的初值开 始计数。这需要用户为每一个定时器配置初值,如果用户不配置定时器会采用默认初值,上 述设定初值的方法也就是一般看门狗监视器所谓的刷新定时器或者“喂狗”的功能。一旦 定时器接受到从CPU发出的控制信号,就可以很方便地对定时器初值寄存器进行赋予初值 的操作。对每一个看门狗定时器而言,如果不能在设定的时间内刷新初值,看门狗就会复 位MCU。这里的时间指的是在看门狗定时器复位MCU前最长的工作时间为,其计算公式如 下最长的工作时间=计数时钟频率倒数X计数初值上式中的初值如前文所言由用户通过配置初值寄存器而设定,而计数时钟频率则 是用户根据实际的需要而设置的,其设置方式是通过对频率选择寄存器的设置来实现的,具体的内容参看“设置看门狗频率选择寄存器”。在所有寄存器完成其配置以后,需要对看门狗运行控制寄存器进行读写操作才能 真正地启动看门狗的运行,有关这方面的内容参照“设置看门狗运行控制寄存器”的内容。 上述设置看门狗频率选择寄存器的方法为该寄存器用来设置每一个看门狗定时器的计数时钟的频率,以影响看门狗定时器 复位MCU前最长的工作时间。超过该时间,看门狗就应该认为程序没有正常地运行而刷新 MCU。为了能够适应不同条件下的计数时间的长度,应该给予用户自由选择的空间,所 以应该提供不同的工作频率,具体可视应用的需要来决定。同时考虑到寄存器的结构,一般 对于每个看门狗定时器,所设定的可选频率个数应为2n(n = 1,2···)个,也就是说每个看门 狗定时器所占用的寄存器的位数是η个,以达到充分利用寄存器空间的目的。假设有寄存 器的位数是m位而每个看门狗占据η位数据,寄存器的分配示意图如图2所示。对每一个看门狗定时器可以采用如下的配置方式,假设η = 2而且该看门狗定时 器占据bit0、bitl两位,则对每一个看门狗定时器可以选择的频率个数是22,它们的定义 是Dbitl bitO = 00 看门狗定时器的计数频率为时钟频率的Kl倍;2)bitl bitO = 01 看门狗定时器的计数频率为时钟频率的K2倍;3)bitl bitO = 10 看门狗定时器的计数频率为时钟频率的K3倍;4)bitl bitO = 11 看门狗定时器的计数频率为时钟频率的K4倍;对于Kl、K2、K3、K4的选取应根据实际的情况选择,以保证覆盖所有的计数范围。 如果在复位状态,则该寄存器所有的内容自动地会被复位为低电平状态,即处于所有看门 狗定时器的计数频率为时钟频率的Ki倍的状态。上述设置看门狗运行控制寄存器的方法为该寄存器用来设置每一个看门狗定时器的运行使能情况,使能位严格地控制每个 看门狗定时器能否运行,每一个看门狗定时器的运行都只有在该寄存器内与之相应的使能 位被置位之后才能开始。寄存器的位数就是看门狗定时器的个数,假设有η个看门狗定时器就对应于η位 的寄存器。寄存器的定义如下表所示
Bit 0 I Bit 1 ............Bitn-I上表中,寄存器的每一位都是一个看门狗定时器的运行使能位,且都为高电平有 效。此外,所有的看门狗定时器都可以被单独地触发而不受其他看门狗运行状态的影响。如 果在复位状态,则该寄存器自动地会被复位为低电平状态,即所有的看门狗定时器都不运 行。上述设置看门狗标志位寄存器的方法为看门狗标志位寄存器是用来记录具体是哪一个看门狗产生的复位信号的寄存器, 以供应用人员发现错误的原因。看门狗标志位寄存器的复位方式采用的是与其他寄存器都不同的单独复位方式 当CPU向该寄存器发出“写”信号时,该寄存器会自动清零所有的内容以达到复位的目的。而当其他所有寄存器共用的复位信号发生作用时,对该寄存器所存储的内容没有任何影 响。这样就保证当某个看门狗定时器发出复位信号并且被看门狗标志位寄存器记录以后, 该寄存器的内容不会因为MCU的复位而被擦除。该复位机制需要依靠软件的帮助来实现复 位,但在具体实现上依然方便可靠。看门狗标志位寄存器的结构如下表所示
权利要求
一种微控制器多源看门狗实现方法。其特征在于通过一个嵌入在芯片内部多源看门狗模块,在程序的不同位置设置多个看门狗监视器以跟踪程序的运行,专门的标志位寄存器还在微控制器被复位后记录下产生复位的看门狗的信息,以方便发现错误,其具体步骤为a.设置n个独立的看门狗定时器模块,每个模块包括一个单独的看门狗初值寄存器;b.设置看门狗频率选择寄存器来配置每一个看门狗的工作频率,以适应不同的应用条件;c.设置看门狗运行控制寄存器,该寄存器通过控制每一个看门狗的运行使能位来控制其运行情况;d.设置看门狗标志位寄存器,该寄存器可以在看门狗对微控制器发出复位信号前,记录下发出信号的看门狗监视器的身份信息,以供应用人员读出并找出错误的源头;e.改变原微控制器的复位方式,将多源看门狗模块的复位信号引入到复位模块,使其可以触发微控制器复位。
2.根据权利要求1所述的微控制器多源看门狗实现方法,其特征在于所述的步骤a中 设置η个独立的定时器模块的方法为每个模块都是一个独立的定时器模块,所有η个模块的结构完全相同;所有的定时器 都采用统一的计数方式,即统一采用“加一”或者“减一”的计数方式;每个定时器模块均采 用统一的复位信号,当定时器被复位时会处于一个默认的初值状态;在非复位状态,定时器 通过用户的控制按照要求进行“加一”或者“减一”的计数运算;每个定时器从默认的计数初值开始计数,或者从一个指定的初值开始计数。这需要用 户为每一个定时器配置初值,如果用户不配置定时器会采用默认初值;上述设定初值的方 法也就是一般看门狗监视器所谓的刷新定时器或者“喂狗”的功能,一旦定时器接受到从 CPU发出的控制信号,就可以很方便地对定时器初值寄存器进行赋予初值的操作;对每一个看门狗定时器而言,如果不能在设定的时间内刷新初值,看门狗就会复位微控制 器;这里的时间指的是在看门狗定时器复位微控制器前最长的工作时间,其计算公式如下最长的工作时间=计数时钟频率倒数X计数初值。
3.根据权利要求1所述的微控制器多源看门狗实现方法,其特征在于所述的步骤b中 设置看门狗频率选择寄存器的方法为该寄存器用来设置每一个看门狗定时器的计数时钟的频率,以影响看门狗定时器复位 微控制器前最长的工作时间;超过该时间,看门狗就应该认为程序没有正常地运行而刷新 微控制器;为了能够适应不同条件下的计数时间的长度,应该给予用户自由选择的空间,所以应 该提供不同的工作频率,具体可视应用的需要来决定。同时考虑到寄存器的结构,一般对于 每个看门狗定时器,所设定的可选频率个数应为2n(n = 1,2···)个,也就是说每个看门狗定 时器所占用的寄存器的位数是η个,以达到充分利用寄存器空间的目的;对每一个看门狗定时器采用如下的配置方式,假设η = 2而且该看门狗定时器占据 bit0、bitl两位,则对每一个看门狗定时器选择的频率个数是22,它们的定义是Dbitl bitO = 00 看门狗定时器的计数频率为时钟频率的Kl倍;2)bitl bitO = 01 看门狗定时器的计数频率为时钟频率的K2倍;3)bitlbitO = 10 看门狗定时器的计数频率为时钟频率的K3倍;4)bitlbitO = 11 看门狗定时器的计数频率为时钟频率的K4倍;对于Kl、K2、K3、K4的选取应根据实际的情况选择,以保证覆盖所有的计数范围;如果 在复位状态,则该寄存器所有的内容自动地会被复位为低电平状态,即处于所有看门狗定 时器的计数频率为时钟频率的Kl倍的状态。
4.根据权利要求1所述的微控制器多源看门狗实现方法,其特征在于所述的步骤c中 设置看门狗运行控制寄存器的方法为该寄存器用来设置每一个看门狗定时器的运行使能情况,使能位严格地控制每个看门 狗定时器能否运行,每一个看门狗定时器的运行都只有在该寄存器内与之相应的使能位被 置位之后才能开始;寄存器的位数就是看门狗定时器的个数,假设有η个看门狗定时器就对应于η位的寄 存器。寄存器的定义如下表所示Bit 0Bit 1Bit n-1上表中,寄存器的每一位都是一个看门狗定时器的运行使能位,且都为高电平有效。此 外,所有的看门狗定时器都被单独地触发而不受其他看门狗运行状态的影响;如果在复位 状态,则该寄存器自动地会被复位为低电平状态,即所有的看门狗定时器都不运行。
5.根据权利要求1所述的微控制器多源看门狗实现方法,其特征在于所述的步骤d中 设置看门狗标志位寄存器的方法为看门狗标志位寄存器是用来记录具体是哪一个看门狗产生的复位信号的寄存器,以供 应用人员发现错误的原因;看门狗标志位寄存器的复位方式采用的是与其他寄存器都不同的单独复位方式当 CPU向该寄存器发出“写”信号时,该寄存器会自动清零所有的内容以达到复位的目的;而 当其他所有寄存器共用的复位信号发生作用时,对该寄存器所存储的内容没有任何影响; 看门狗标志位寄存器的结构如下表所示Bit n-4Bit n-3Bit n-2Bitn-I上表中,寄存器的每一位都对应一个看门狗定时器的溢出标志位,且都为高电平有效, 该寄存器的位数对应于看门狗定时器的个数。该寄存器的内容可以被读出但不能被写入; 当一个看门狗定时器计数达到规定值而没有被复位时,它就会向看门狗标志位寄存器发出 信号,使其相对应的溢出标志位置为高定平,该位会一直保持直到清零为止。
6.根据权利要求1所述的微控制器多源看门狗实现方法,其特征在于所述的步骤e中 改变原微控制器的复位方式方法为将由多源看门狗模块产值生的复位信号也加入到整个微控制器的复位系统中。 多源看门狗的每一个看门狗定时器都具有产生复位信号使整个微控制器复位的能力, 所以对于多源看门狗模块的复位信号应该采用“一热键”模式,避免了系统的竞争,增加了 整个多源看门狗模块复位微控制器的可靠性;由多源看门狗产生的复位信号应该被引入到整个微控制器的复位模块,为了减少对原 微控制器源代码的修改,采用简单的逻辑电路将多源看门狗产生的复位信号与原微控制器 的复位信号“相与”或者“相或”之后,连接到复位模块,由其产生整个微控制器统一使用的 复位信号;该信号对看门狗标志位寄存器无效。
全文摘要
本发明涉及一种微控制器多源看门狗实现方法。该方法通过在一个看门狗模块内嵌入多个看门狗定时器以及设置专门的标志位寄存器,不仅可以实现传统的看门狗定时器发现并且纠正程序运行错误的目的,而且可以记录错误发生的程序段的位置,这为应用人员排查错误改进设计提供了很大的方便。本发明可应用于MCU领域,亦可应用于其他微处理器领域。
文档编号G06F11/34GK101957790SQ20091019958
公开日2011年1月26日 申请日期2009年11月26日 优先权日2009年11月26日
发明者冉峰, 周谌, 徐晓勇, 杨奔, 杨开, 胡越黎 申请人:上海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1