本发明专利技术公开了一种USB设备中异常监控复位处理方法,包括以下步骤:(1)在USB设备的数据存储区内或高端PC机中设置一个连续的存储空间;(2)读取USB设备内各个寄存器内的数据,并将数据存入步骤(1)中所述存储空间内;(3)在系统出现异常时,通过看门狗复位处理程序复位USB设备;(4)将步骤(2)中所述储空间内的数据存入对应的各个USB设备寄存器中。本发明专利技术通过将USB设备的误别地址存放于存储空间内,待复位后将该存储空间内的数据还原至USB各寄存器内,实现PC机的正常识别,避免热复位后USB设备无反应的异常出错现象,提高嵌入式系统的安全性、可靠性、抗干扰性。
【技术实现步骤摘要】
本专利技术涉及一种异常监控复位处理方法,具体涉及一种USB设备中的异 常监控复位处理方法。
技术介绍
软件常常是解决问题成本最低、灵活性最高的方案,但它也迫使设计人员 进行一些额外的测试以确保系统的可靠性。软件实现的系统特别是当前流行的 嵌入式系统由于程序代码设计出现的没有被发现的错误,容易引起系统运行的 异常,同时系统的硬件部分的不稳定也经常会导致系统运行的异常。在台式机 系统中出现导致系统瘫痪的软件错误并不可怕,因为用户只需重新启动系统即 可,它只会造成少量数据的丢失。然而,对于应用在工控系统中的嵌入式系统, 则必须能够在没有人为干预的条件下处理异常、恢复故障。通常采用异常监控 机制来提髙上述系统的可靠性,该机制被称为看门狗(Watching Dog),即系 统异常监视模块(Computer Operating Properly),当系统运行出现不能自我 控制的异常时,为系统提供强制复位功能,用以恢复系统正常运行。所谓系统正常操作监视模块COP,是一个自动运行的计数器,在系统配 置中设定COP允许后,系统会启动COP,用户程序必须周期性地向COP控 制寄存器中写入任意值,叫做给看门狗喂食,正确喂食以后,会清除COP计 数器中的计数,从而使计数器重新计数。若系统由于某种原因使软件不能正常 工作时,COP计数器就得不到周期性地清零,那么一段时间(大约几十毫秒) 后,计数器就会溢出,这时COP模块会自动使系统进行复位,系统会重新从 故障点恢复到正常运行的轨道上来,这样就防止了程序进入不可预料的操作状 态。COP技术在很大程度上提髙了嵌入式系统运行的可靠性和抗干扰能力。然而,目前的COP模块在一般的系统中通过这种复位就能够保证系统从 故障点恢复到正常运行的轨道上,但对于某些特殊的模块(如USB模块),这 种简单的复位方法就会出现问题了。具体来说,低端单片机通过USB接口与髙端PC进行数据通信、釆集时,由PC机提供工作电源,当USB设备进行插 拔的时候,整个数据采集系统会掉电。引入COP功能后,看门狗使系统复位, 相当于重新进行了一次系统初始化。理论上讲,只要单片机端程序都是自己的 行为,系统重新进行系统初始化后,程序都可以正常运行,但实际使用中发现 系统出现了一种莫名其妙的错误,会提示读取不到USB设备描述符和设备号, 并且无法与USB设备通信,但是操作系统并不提示发现无法识别的USB设备。上述出错原因是当USB设备插到PC机USB总线上以后,髙端PC机 依靠其操作系统的定时检测机制,能及时发现有USB设备已经插入到了 USB 总线上,然后由髙端PC操作系统主动分配给每个检测到的USB设备一个独 立的地址来区分不同的USB设备。低端MCU方接收到髙端分配的这个地址 后存入寄存器中。如果发生了看门狗复位(热复位),USB模块中除了数据寄 存器以外的所有的寄存器都会被清成零,这样一来,髙端用热复位以前的参数 进行交互,低端用热复位以后的参数(至少地址已经变成了默认的0x00 了) 进行交互,这就造成了热复位后髙低两端进行的交互用到参数不一致。因此, 造成髙端PC无法与USB设备进行通信。如上所述,为使USB设备再次正常工作,只有将USB设备再次插拔(即 冷启动),PC操作系统才会重新识别,分配出新的地址。显然,这对需要在没 有人为干预条件下能处理异常、恢复故障的嵌入式系统来说,现有的看门狗失 去了其原本存在的意义。
技术实现思路
本专利技术目的是提供一种USB设备中异常监控复位处理的方法,通过该方 法,在USB设备中看门狗自行复位后,髙、低端设备间仍能保持正常数据通信 与采集。为达到上述目的,本专利技术采用的技术方案是 一种USB设备中异常监控复 位处理方法,包括以下步骤(1) 在USB设备的数据寄存器内设置一个存储空间(2) 在系统正常工作状态下,读取USB设备内各个除数据寄存器以外的寄 存器内的数据,获得USB设备工作的设定值,并将该设定值存入步骤(l)中所述存储空间内;(3) 在系统出现异常时,通过看门狗复位处理程序复位USB设备;(4) 将步骤(2)中所述储空间内的数据存入对应的除数据寄存器以外各个 USB设备寄存器中。USB设备与髙端PC机间的数据交互,是通过USB设备的插接,依靠PC 机的操作系统定时检测机制,主动发起USB设备的设备列举,PC机向USB 设备索取设备描述符、设备号等相关信息,并分配给一个地址,USB设备接 收到该地址后将自己默认的7位地址改成该新地址,并保存到寄存器中。所述 寄存器包括USB地址寄存器(UADDR)、 USB中断寄存器(UIR0、 UIRl、 UIR2)、 USB控制寄存器(UCR0、 UCR1、 UCR2、 UCR3)、 USB状态寄存器 USR,当看门狗计数器溢出后(系统出现异常),启动复位清零程序,此后上 述各寄存器内的数据均被初始化,造成PC机无法识别恢复后的USB设备。 为此,上述技术方案中,在USB设备的数据寄存器内开辟一存储空间,这是 由于复位操作时,该寄存器内的数据不会被清零,因此将USB设备与PC机 交互用数据保存在内,当看门狗进行复位清零程序后,便将存储空间内的交互 数据重新复制到USB设备的各个对应寄存器内,从而使寄存器内的数据在复 位前后相一致,PC机仍能识别该USB设备。上述技术方案中,所述步骤(l)中的存储空间为设置于USB设备数据存储 区内的8个连续字节的存储空间。进一步的技术方案是,在看门狗复位程序清空指令之前,读取USB设备 中状态寄存器、控制寄存器、中断寄存器和地址寄存器中的数据,获得所述设 定值,并存入所述存储空间内;在执行清空指令后,将所述存储空间内的数据 分别存入USB设备中对应的状态寄存器、控制寄存器、中断寄存器和地址寄 存器中。高端PC操作系统主动发起的设备列举是在低端初始化并开放总中断 后,通过使低端USB设备产生USB接收中断来与其进行参数交互传递的,所 以系统中对USB寄存器进行的修改只可能在USB初始化函数中或者在USB 中断处理函数中出现,于是可以到这两处找USB寄存器的最终值。由于先进 行系统初始化,再开放总中断,然后发生USB接收中断进行参数交互,中断 完成之后就进行正常的设备检测,也就是说只要维持在刚退出USB中断处理 函数时的寄存器的值就能够保证USB设备的正常检测、识别和通信。所以在 中断处理函数退出之前的"CL1"前面加上保存所有相关寄存器的值的程序, 就可以成功保存系统正常运行时候的各寄存器的设定值。另一种技术方案是,通过程序随时读取USB设备中状态寄存器、控制寄 存器、中断寄存器和地址寄存器内的数据,经USB接口送至髙端PC机内, 由PC机分析比较得出各寄存器内的固定值,该值为所述设定值,并存放入所 述存储空间内,待触发看门狗处理程序复位时,通过程序将存储空间内的设定 值赋值于USB设备中的各寄存器中。髙端PC机接收到USB设备传送的数据 后做进一步分析,观察USB在正常工作情况下,这些寄存器的哪些位是变动 的,哪些位是需要一直固定的。然后分析出影响USB设备识别的最关键的位, 确定它们在正常情况下最恰当的设定值。然后只要是发生热复位(由看门狗处 理程序复位的),就在热复位处理程序中把这些位还本文档来自技高网...
【技术保护点】
一种USB设备中异常监控复位处理方法,包括以下步骤: (1)在USB设备的数据寄存器内设置一个存储空间; (2)在系统正常工作状态下,读取USB设备内除数据寄存器以外的各个寄存器内的数据,获得USB设备工作的设定值,并将该设定值存入步骤(1)中所述存储空间内; (3)在系统出现异常时,通过看门狗复位处理程序复位USB设备; (4)将步骤(2)中所述储空间内的数据存入对应的除数据寄存器以外各个USB设备寄存器中。
【技术特征摘要】
【专利技术属性】
技术研发人员:朱巧明,刘纯平,王宜怀,郭芸,刘晓升,曹振华,
申请(专利权)人:苏州大学,
类型:发明
国别省市:32[中国|江苏]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。