发明名称 微控制器多源看门狗的实现方法
摘要 本发明涉及一种微控制器多源看门狗实现方法。该方法通过在一个看门狗模块内嵌入多个看门狗定时器以及设置专门的标志位寄存器,不仅可以实现传统的看门狗定时器发现并且纠正程序运行错误的目的,而且可以记录错误发生的程序段的位置,这为应用人员排查错误改进设计提供了很大的方便。本发明可应用于MCU领域,亦可应用于其他微处理器领域。
申请公布号 CN101957790B 申请公布日期 2012.11.07
申请号 CN200910199585.3 申请日期 2009.11.26
申请人 上海大学 发明人 胡越黎;周谌;冉峰;徐晓勇;杨奔;杨开
分类号 G06F11/34(2006.01)I;G06F1/24(2006.01)I 主分类号 G06F11/34(2006.01)I
代理机构 上海上大专利事务所(普通合伙) 31205 代理人 何文欣
主权项 一种微控制器多源看门狗实现方法,其特征在于通过一个嵌入在芯片内部多源看门狗模块,在程序的不同位置设置多个看门狗监视器以跟踪程序的运行,专门的标志位寄存器还在微控制器被复位后记录下产生复位的看门狗的信息,以方便发现错误,其具体步骤为:a. 设置n个独立的看门狗定时器模块,每个模块包括一个单独的看门狗初值寄存器;b.设置看门狗频率选择寄存器来配置每一个看门狗的工作频率,以适应不同的应用条件;c. 设置看门狗运行控制寄存器,该寄存器通过控制每一个看门狗的运行使能位来控制其运行情况;d.设置看门狗标志位寄存器,该寄存器可以在看门狗对微控制器发出复位信号前,记录下发出信号的看门狗监视器的身份信息,以供应用人员读出并找出错误的源头;e. 改变原微控制器的复位方式,将多源看门狗模块的复位信号引入到复位模块,使其可以触发微控制器复位;   所述的步骤a中设置n个独立的定时器模块的方法为:每个模块都是一个独立的定时器模块,所有n个模块的结构完全相同;所有的定时器都采用统一的计数方式,即统一采用“加一”或者“减一”的计数方式;每个定时器模块均采用统一的复位信号,当定时器被复位时会处于一个默认的初值状态;在非复位状态,定时器通过用户的控制按照要求进行“加一”或者“减一”的计数运算;每个定时器从默认的计数初值开始计数,或者从一个指定的初值开始计数,这需要用户为每一个定时器配置初值,如果用户不配置定时器会采用默认初值;上述设定初值的方法也就是看门狗监视器所谓的刷新定时器或者“喂狗”的功能,一旦定时器接受到从CPU发出的控制信号,就可以很方便地对定时器初值寄存器进行赋予初值的操作;对每一个看门狗定时器而言,如果不能在设定的时间内刷新初值,看门狗就会复位微控制器;这里的时间指的是在看门狗定时器复位微控制器前最长的工作时间,其计算公式如下:最长的工作时间 = 计数时钟频率倒数 × 计数初值;所述的步骤b中设置看门狗频率选择寄存器的方法为:看门狗频率选择寄存器用来设置每一个看门狗定时器的计数时钟的频率,以影响看门狗定时器复位微控制器前最长的工作时间;超过该时间,看门狗就认为程序没有正常地运行而刷新微控制器;为了能够适应不同条件下的计数时间的长度,给予用户自由选择的空间,所以提供不同的工作频率,具体可视应用的需要来决定;同时考虑到看门狗频率选择寄存器的结构,对于每个看门狗定时器,所设定的可选频率个数应为2m个,m=1,2…,也就是说每个看门狗定时器所占用的看门狗频率选择寄存器的位数是m个,以达到充分利用看门狗频率选择寄存器空间的目的;对每一个看门狗定时器采用如下的配置方式,假设m=2而且该看门狗定时器占据bit0、bit1两位,则对每一个看门狗定时器选择的频率个数是22,它们的定义是:1)bit1 bit0 = 00:看门狗定时器的计数频率为时钟频率的K1倍;2)bit1 bit0 = 01:看门狗定时器的计数频率为时钟频率的K2倍;3)bit1 bit0 = 10:看门狗定时器的计数频率为时钟频率的K3倍;4)bit1 bit0 = 11:看门狗定时器的计数频率为时钟频率的K4倍;对于K1、K2、K3、K4的选取应根据实际的情况选择,以保证覆盖所有的计数范围;如果在复位状态,则看门狗频率选择寄存器所有的内容自动地会被复位为低电平状态,即处于所有看门狗定时器的计数频率为时钟频率的K1倍的状态;所述的步骤c中设置看门狗运行控制寄存器的方法为:看门狗运行控制寄存器用来设置每一个看门狗定时器的运行使能情况,使能位严格地控制每个看门狗定时器能否运行,每一个看门狗定时器的运行都只有在看门狗运行控制寄存器内与之相应的使能位被置位之后才能开始;看门狗运行控制寄存器的位数就是看门狗定时器的个数,假设有n个看门狗定时器就对应于n位的看门狗运行控制寄存器,看门狗运行控制寄存器的定义如下表所示: Bit 0Bit 1……Bit n‑1 上表中,看门狗运行控制寄存器的每一位都是一个看门狗定时器的运行使能位,且都为高电平有效,此外,所有的看门狗定时器都被单独地触发而不受其他看门狗运行状态的影响;如果在复位状态,则看门狗运行控制寄存器自动地会被复位为低电平状态,即所有的看门狗定时器都不运行;所述的步骤d中设置看门狗标志位寄存器的方法为:看门狗标志位寄存器是用来记录具体是哪一个看门狗产生的复位信号的寄存器,以供应用人员发现错误的原因;看门狗标志位寄存器的复位方式采用的是与看门狗频率选择寄存器和看门狗运行控制寄存器都不同的单独复位方式:当CPU向看门狗标志位寄存器发出“写”信号时,看门狗标志位寄存器会自动清零所有的内容以达到复位的目的;而当看门狗频率选择寄存器和看门狗运行控制寄存器共用的复位信号发生作用时,对看门狗标志位寄存器所存储的内容没有任何影响; 看门狗标志位寄存器的结构如下表所示: Bit 0……Bit n‑4Bit n‑3Bit n‑2Bit n‑1 上表中,寄存器的每一位都对应一个看门狗定时器的溢出标志位,且都为高电平有效,看门狗标志位寄存器的位数对应于看门狗定时器的个数;看门狗标志位寄存器的内容可以被读出但不能被写入;当一个看门狗定时器计数达到规定值而没有被复位时,它就会向看门狗标志位寄存器发出信号,使其相对应的溢出标志位置为高定平,该位会一直保持直到清零为止;所述的步骤e中改变原微控制器的复位方式方法为:将由多源看门狗模块产生的复位信号也加入到整个微控制器的复位系统中;多源看门狗的每一个看门狗定时器都具有产生复位信号使整个微控制器复位的能力,所以对于多源看门狗模块的复位信号采用“一热键”模式,避免了系统的竞争,增加了整个多源看门狗模块复位微控制器的可靠性;由多源看门狗产生的复位信号被引入到整个微控制器的复位模块,为了减少对原微控制器源代码的修改,采用简单的逻辑电路将多源看门狗产生的复位信号与原微控制器的复位信号“相与”或者“相或”之后,连接到复位模块,由其产生整个微控制器统一使用的复位信号;该信号对看门狗标志位寄存器无效。
地址 200444 上海市宝山区上大路99号