一种高可靠MCU系统监控方案

上传人:ldj****22 文档编号:35066030 上传时间:2018-03-08 格式:PDF 页数:9 大小:236KB
返回 下载 相关 举报
一种高可靠MCU系统监控方案_第1页
第1页 / 共9页
一种高可靠MCU系统监控方案_第2页
第2页 / 共9页
一种高可靠MCU系统监控方案_第3页
第3页 / 共9页
一种高可靠MCU系统监控方案_第4页
第4页 / 共9页
一种高可靠MCU系统监控方案_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《一种高可靠MCU系统监控方案》由会员分享,可在线阅读,更多相关《一种高可靠MCU系统监控方案(9页珍藏版)》请在金锄头文库上搜索。

1、沈阳单片机开发网帮您精确掌握电子器件的使用细节 一种高可靠 MCU 系统监控方案 作者:武汉力源电子股份有限公司 - 熊炜明 1、 目前MCU 系统监控中的问题 对于单片机系统,一般都需要监控电路来提高系统的可靠性。包括用电压比较器对电源 的监控和看门狗对程序的监控。 为防止系统程序受干扰“飞掉”,常用看门狗定时器,这种方 式对于系统进入死循环时很有效,而程序“飞掉”时极有可能跳过一段程序,正好进入另一 条指令的开头。 尤其在 RISC 系统中,绝大部分是单周期指令,容易遇到这种情况,此时程序会 继续运行下去,使看门狗失效。跳过的这段程序,可能包括一些接口控制执行指令,或某些数 据的输入输出

2、,或条件判断,整个系统会因此而运行紊乱,或直接产生故障。系统出现这类故 障时很难立即察觉。 (1). 在运用极其广泛的一类 MCU 系统,如分段定时控制系统中,象家用电器的电脑控 制微波炉、洗衣机、电饭煲;电力行业的发电机转速控制;冶金行业的连铸、焊管及流水线系 统等,都可能会在系统运行中遇到分段定时控制或某一区域内运行状态与前段运行状态密切 相关的情况。 此时简单地用看门狗电路作系统监控,一旦出现系统死锁而复位,将会使启动以 后的整个运行过程失效,这种方法显然是行不通的。 (2). 对于分时多任务系统,其中的某个或几个任务出现死锁,而又有一个或多个任务 仍正常运行的情况下,看门狗定时器可能会

3、被“蒙蔽”而失去监控作用。 (3) . 在一个程序运行周期很短,或系统根据不同运行状况的程序处理时间相差很大的 情况下,看门狗定时周期难以定得合适,此时若出现干扰死机可能因难于及时发现并解决而 造成故障。 如果有一种方法,使系统在运行过程中能够自行感知程序运行状况,出现问题能够随时 察觉;发现故障立即报警、 停止运行或复位,甚至可以自动纠错,使程序恢复正确的运行,以实 现对程序的最佳监控,那将是比较理想的。 2、 系统在线自行跟踪基本方法 系统在线运行过程中,如果能够随时将系统运行的过程即系统当前程序的实际流程路线 自动记录下来,就有办法将预期的运行路线与之比较,从而避免程序出现不可预测的死锁

4、。 打 个比方,设想有一辆在公路上行驶的汽车,只要知道该汽车在各个岔路口的走向,就可以描绘 出这辆汽车整个的行驶路线,但是难以保证汽车可能会在一条单一路线上行驶时抛锚。如果 每隔一定距离以及重要路段设上“哨卡”,就能更加细致地了解到汽车的行驶情况,一旦出 现问题就能立即知道事故出现的具体路段。同理,在程序运行过程中也可以通过人为设置的 “哨卡”来记录程序当前的运行路线。在多数情况下,这些“哨卡”对系统运行并没有太大 的影响。 实际上,这些“哨卡”就是可以任意插入流程中的简短程序段,每一个“哨卡”有 一个特定的“标志码”以使我们能够知道程序到底运行到何处。 将这些标记按出现的顺序记 录在存储器中

5、,就能依此知道 CPU“行驶”的具体路线。当然,对系统的运行状态了解得越细 致,程序的运行时间会越长。 应将它们设置在重要的数据读写或接口操作处,各分支路口和相 对独立的程序块入口处,尽量减小对系统的影响。 下面以GMS97C51单片机构成的MCU系统为例说明系统对自身运行路线的跟踪记录方法。 如图 1 所示,设系统 CPU 为 97C51,外接一片 SRAM 6116 来作运行记录,为防止掉电和死机的 影响,将 RAM 用后备电池保护起来(系统上电初始化程序应包括将 6116 清零,清零程序在此 略去) 。 1沈阳单片机开发网帮您精确掌握电子器件的使用细节 在系统原来程序段中需要设“哨卡”

6、的地方插入语句: MOV SIGN, #MARK ;#MARK 为标志号,SIGN 定义 LCALL GUIDE ;为存放标志号的寄存器地址 这样,仅插入 6 个字节对原来程序的存储空间并无多大影响,所有的“哨卡”共用一个子程 序。 GUIDE: PUSH PSW ;保护原来程序可能用到的寄存器,如有必要也可 PUSH ACC ;将 DPTR压栈保护 INC ADDR ;ADDR 为标志号存放单元, 上电后需清零 MOV A,ADDR ;假设只用RAM 中的256个单元来做记录 JZ OUT ;若存储空间用完则停止存储记录 MOV DPL,ADDR ;设 6116存储地址为 7FH MOV D

7、PH,#7FH MOVX DPTR,A OUT: POP ACC ;存储记录 POP PSW RET 假设总共“哨卡”数量少于 256 个,用一个字节来作标志,每一个“哨卡”都会有一个 独立的标志号,通过查询 RAM 记录内容就可知道程序的实际运行路线了。这里我们还发现程 序自行跟踪的一个额外的作用,即只需一个读 RAM 的简单装置,此方法就可用来作程序开发 过程中的仿真调试而无须 PC 机及仿真器。 若系统无法用到并行总线,可将 6116 换成串行存储器,如美国 Xicor 公司的非易失性 RAM X24C45,程序则应作相应改动。插入“哨卡”后应考虑对原系统运行时间上的影响。 3、 利用自

8、行跟踪方式对系统的实时监控 在作系统监控的应用中,系统必须对自身运行状况作实时监控。 利用上面的方式,在系统2沈阳单片机开发网帮您精确掌握电子器件的使用细节 中加上监控程序,系统对自身运行情况亦可作自行监测。 但这样一来,不仅会对原来程序造成 较大影响,而且会因为系统本身可能受到干扰或其它原因而瘫痪,因而是不可靠的。 对于高可 靠性要求的系统,有必要另加一套监控系统来对原系统及监控系统自身作专门监护,从后面 的讨论中可知,这外加的系统可以是廉价、小巧、安全可靠和高效的。 在实时监控过程中,可以省掉对程序运行路线的存储记录而直接判断。系统电路如图 2 所示。它进一步减小了对原系统的影响而又提高

9、了运行效率。在监控系统运行过程中,应从 以下三个方面来考虑: (1). 监控系统对原系统的精确跟踪; (2). 利用软件狗防止主系统死锁; (3). 对监控系统自身的监控。 系统非正常运行除硬件与电源系统的问题之外,难以琢磨的主要是软件系统。程序受到 干扰产生故障有两种情况: 一是 CPU 没有按既定程序运行,系统指针“飞”到其它指令代码地址处,好象非法执行 了一个跳转语句。 这种情况存在很大的潜在危险性,利用看门狗技术难以察觉,可能带来难以 预料的事故,且无论哪一类结构的指令系统都无法排除。此时利用在线跟踪技术发挥其监控 作用是一个有效方法。可以在程序运行的各个路口和重要的操作前后插入“哨卡

10、”,并将 “哨卡”在系统程序中均匀分布,用专门的监控 CPU 实时跟踪,与已预存在监控系统中的正 确路线比较,可及时排除原系统软件产生的故障,有时还可以使系统从其产生误操作之前的 一个“哨卡”处恢复系统的正常运行。 二是 CPU 没有按既定程序运行,系统指针“飞”到非指令代码地址处。此时最易产生死 机,程序完全失去控制。 用看门狗可以最终发现此问题,但若不及时排除故障有可能因时间的 延误或程序执行无法预知的操作扰乱数据和信号,产生故障。 在多任务系统中,其中某一个任务死锁,用看门狗可能无法感知,因为其它任务仍在不时 发出“喂狗”信号。 在采用监控 CPU 自行跟踪的系统中,监控 CPU 可以对

11、每一个任务分别设置软件看门狗, 利用“哨卡”发出“喂狗”信号。 因“哨卡”可人为地依时间均匀设置,一旦系统死锁,或下 一个“哨卡”信号未到而超时,即可及时发现故障在哪一“哨卡”附近发生,并可能及时排 除故障,继续按原路线运行正确的系统程序。 对于以上两种情况,若 CPU 监控系统本身出现故障。又有以下两个方面: 3沈阳单片机开发网帮您精确掌握电子器件的使用细节 (1)在主系统中的监控配合程序(即“哨卡”程序)自身出现问题,此时监控系统会认 为是原系统程序的问题,包括在上述两种情况之中,逃不出对原系统程序的监测,可用同样的 方法在监控程序中同时解决。 (2)监控 CPU 的监控程序出现问题,又

12、分别有两种可能: 、监控程序代码执行顺序错误。即监控系统指针未按预定程序运行。此时监控 CPU 会认为是主 CPU 而非自身程序出现了问题。监控程序会很快循环一周而处 于等待状态,程序本身不会混乱。此时监控系统会将原系统或整个系统强行复 位,或将原系统程序从前一“哨卡”处恢复运行。 、监控系统程序指针“飞入”非程序指令代码处而造成死机。由于监控系统是可 以预知的单一任务系统,此时可用 CPU 片外的硬件看门狗作监控 CPU 的硬件监 控,而将整个系统复位,或根据主系统情况恢复监控系统本身的运行。 在设计过 程中应使这种情况尽可能少发生。 虽然监控系统可能出现问题,但从以上讨论来看,所有问题都可

13、得到解决。 整体而言采用 监控系统的自行跟踪方式可以大大提高整个系统的可靠性。 然而也要求监控系统本身具有高 的稳定性与可靠性,以提高整个系统的性能。另外,监控系统最好要有独立稳定的供电电源。 4、 自行跟踪监控系统的实现 接口电路参见图 2,将安插在原来程序的“哨卡”所发出的信号称作“路标特征码”或 “路标码”。监控 CPU 可以直接从与主系统的接口处得到这些“路标码”,而不必将它们存 入存储器中。对于并行总线结构可以方便地用锁存器,如 74HC273,将“路标码”传送给监控 CPU。对于片内总线结构的 CPU,可以用串口或移位寄存器,甚至单一的 I/O 口线来传送信号。 这里以并行总线结构

14、的 MCS-51 系列单片机 GMS97C51 为例说明。 4.1 监控系统的软件准备数据结构 设主系统有如图 3 所示的部分程序结构,它包括了大部分程序可能出现的结构。在程序 中插入“哨卡”的“路标码”如图中数字所标,程序经过这些“哨卡”时会将相应的“路标 码”实时反映在接口处,监控 CPU 收到“路标码”信息后将其与系统固有的程序结构进行比 较。 图 3 结构可以简化成图 4 形式。 为了比较这些代码出现的位置,这里考虑一种数据结构, 将原系统的整个流程图通过这种数据结构存放在监控 CPU 的 ROM 中,形成一个存放原来程序 结构的数据库。从某段程序的入口开始,一直到遇见分支,设置一个连

15、续数据区。不同的连续 程序段形成的连续数据区之间,由这种数据结构中的地址字节来连接。自然每个“路标码” 还会有一个绝对存放地址。 在这个数据结构中给每个“路标码”后带一个字节的相对转移地 址,用来存放当前“路标码”出现后下一个“路标码”在此数据库中的相对地址。假设原系 统程序设置的“哨卡”少于 256 个,数据区之间的地址不会相距太远,则每一个数据项由 “路标码”与相对地址码两个字节组成,转移地址在128+127 字节范围内可以找到。在 散转或判断语句中,可能并列出现的下一“哨卡”数据项连续排列在一起,以立即数#0 作为 结束,它们之间表示“或”的关系,在程序的某一次运行之中只有其中的一个数据项对应的 语句会被遇到,数据项结构如图 5 所示。256 个“路标码”所形成的数据库最大可有 768 字 节。图 3 所示程序结构可以图 6 形式存于数据库中。对于多任务系统必须在每一数据项中增 加一个字节的“任务号”,以便于识别不同任务的程序结构。由于多任务系统的数据库会比 较庞杂,可用增加的这个字节的高四位表示任务号,低四位与另一字节作为用 12 位表示的转 移地址,作用范围可扩大到 4KB。 4沈阳单片机开发网帮您精确掌握电子器件的使用细节 图 3 主系统程序结构举例 图 4 由“哨卡”信息反映出的程序结构 5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号