- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
沈阳单片机开发网——帮您精确掌握电子器件的使用细节
一种高可靠 MCU 系统监控方案
作者:武汉力源电子股份有限公司 - 熊炜明
1、 目前 MCU 系统监控中的问题
对于单片机系统,一般都需要监控电路来提高系统的可靠性。包括用电压比较器对电源
的监控和看门狗对程序的监控。为防止系统程序受干扰“飞掉”,常用看门狗定时器,这种方
式对于系统进入死循环时很有效,而程序“飞掉”时极有可能跳过一段程序,正好进入另一
条指令的开头。尤其在 RISC 系统中,绝大部分是单周期指令,容易遇到这种情况,此时程序会
继续运行下去,使看门狗失效。跳过的这段程序,可能包括一些接口控制执行指令,或某些数
据的输入输出,或条件判断,整个系统会因此而运行紊乱,或直接产生故障。系统出现这类故
障时很难立即察觉。
(1). 在运用极其广泛的一类 MCU 系统,如分段定时控制系统中,象家用电器的电脑控
制微波炉、洗衣机、电饭煲;电力行业的发电机转速控制;冶金行业的连铸、焊管及流水线系
统等,都可能会在系统运行中遇到分段定时控制或某一区域内运行状态与前段运行状态密切
相关的情况。此时简单地用看门狗电路作系统监控,一旦出现系统死锁而复位,将会使启动以
后的整个运行过程失效,这种方法显然是行不通的。
(2). 对于分时多任务系统,其中的某个或几个任务出现死锁,而又有一个或多个任务
仍正常运行的情况下,看门狗定时器可能会被“蒙蔽”而失去监控作用。
(3). 在一个程序运行周期很短,或系统根据不同运行状况的程序处理时间相差很大的
情况下,看门狗定时周期难以定得合适,此时若出现干扰死机可能因难于及时发现并解决而
造成故障。
如果有一种方法,使系统在运行过程中能够自行感知程序运行状况,出现问题能够随时
察觉;发现故障立即报警、停止运行或复位,甚至可以自动纠错,使程序恢复正确的运行,以实
现对程序的最佳监控,那将是比较理想的。
2、 系统在线自行跟踪基本方法
系统在线运行过程中,如果能够随时将系统运行的过程即系统当前程序的实际流程路线
自动记录下来,就有办法将预期的运行路线与之比较,从而避免程序出现不可预测的死锁。打
个比方,设想有一辆在公路上行驶的汽车,只要知道该汽车在各个岔路口的走向,就可以描绘
出这辆汽车整个的行驶路线,但是难以保证汽车可能会在一条单一路线上行驶时抛锚。如果
每隔一定距离以及重要路段设上“哨卡”,就能更加细致地了解到汽车的行驶情况,一旦出
现问题就能立即知道事故出现的具体路段。同理,在程序运行过程中也可以通过人为设置的
“哨卡”来记录程序当前的运行路线。在多数情况下,这些“哨卡”对系统运行并没有太大
的影响。 实际上,这些“哨卡”就是可以任意插入流程中的简短程序段,每一个“哨卡”有
一个特定的“标志码”以使我们能够知道程序到底运行到何处。将这些标记按出现的顺序记
录在存储器中,就能依此知道 CPU“行驶”的具体路线。当然,对系统的运行状态了解得越细
致,程序的运行时间会越长。应将它们设置在重要的数据读写或接口操作处,各分支路口和相
对独立的程序块入口处,尽量减小对系统的影响。
下面以GMS97C51单片机构成的MCU系统为例说明系统对自身运行路线的跟踪记录方法。
如图 1 所示,设系统 CPU 为 97C51,外接一片 SRAM 6116 来作运行记录,为防止掉电和死机的
影响,将 RAM 用后备电池保护起来(系统上电初始化程序应包括将 6116 清零,清零程序在此
略去)。
1
沈阳单片机开发网——帮您精确掌握电子器件的使用细节
在系统原来程序段中需要设“哨卡”的地方插入语句:
MOV SIGN, #MARK ;#MARK 为标志号,SIGN 定义
LCALL GUIDE ;为存放标志号的寄存器地址
这样,仅插入 6 个字节对原来程序的存储空间并无多大影响,所有的“哨卡”共用一个子程
序。
GUIDE:
PUSH PSW ;保护原来程序可能用到的寄存器,如有必要也可
PUSH ACC ;将 DPTR压栈保护
INC ADDR ;ADDR 为标志号
文档评论(0)