CN101369238A - Usb设备中异常监控复位处理方法 - Google Patents
Usb设备中异常监控复位处理方法 Download PDFInfo
- Publication number
- CN101369238A CN101369238A CNA2008101247646A CN200810124764A CN101369238A CN 101369238 A CN101369238 A CN 101369238A CN A2008101247646 A CNA2008101247646 A CN A2008101247646A CN 200810124764 A CN200810124764 A CN 200810124764A CN 101369238 A CN101369238 A CN 101369238A
- Authority
- CN
- China
- Prior art keywords
- register
- usb device
- data
- storage space
- usb
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种USB设备中异常监控复位处理方法,包括以下步骤:(1)在USB设备的数据存储区内或高端PC机中设置一个连续的存储空间;(2)读取USB设备内各个寄存器内的数据,并将数据存入步骤(1)中所述存储空间内;(3)在***出现异常时,通过看门狗复位处理程序复位USB设备;(4)将步骤(2)中所述储空间内的数据存入对应的各个USB设备寄存器中。本发明通过将USB设备的误别地址存放于存储空间内,待复位后将该存储空间内的数据还原至USB各寄存器内,实现PC机的正常识别,避免热复位后USB设备无反应的异常出错现象,提高嵌入式***的安全性、可靠性、抗干扰性。
Description
技术领域
本发明涉及一种异常监控复位处理方法,具体涉及一种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设备工作的设定值,并将该设定值存入步骤(1)中所述存储空间内;
(3)在***出现异常时,通过看门狗复位处理程序复位USB设备;
(4)将步骤(2)中所述储空间内的数据存入对应的除数据寄存器以外各个USB设备寄存器中。
USB设备与高端PC机间的数据交互,是通过USB设备的插接,依靠PC机的操作***定时检测机制,主动发起USB设备的设备列举,PC机向USB设备索取设备描述符、设备号等相关信息,并分配给一个地址,USB设备接收到该地址后将自己默认的7位地址改成该新地址,并保存到寄存器中。所述寄存器包括USB地址寄存器(UADDR)、USB中断寄存器(UIR0、UIR1、UIR2)、USB控制寄存器(UCR0、UCR1、UCR2、UCR3)、USB状态寄存器USR,当看门狗计数器溢出后(***出现异常),启动复位清零程序,此后上述各寄存器内的数据均被初始化,造成PC机无法识别恢复后的USB设备。为此,上述技术方案中,在USB设备的数据寄存器内开辟一存储空间,这是由于复位操作时,该寄存器内的数据不会被清零,因此将USB设备与PC机交互用数据保存在内,当看门狗进行复位清零程序后,便将存储空间内的交互数据重新复制到USB设备的各个对应寄存器内,从而使寄存器内的数据在复位前后相一致,PC机仍能识别该USB设备。
上述技术方案中,所述步骤(1)中的存储空间为设置于USB设备数据存储区内的8个连续字节的存储空间。
进一步的技术方案是,在看门狗复位程序清空指令之前,读取USB设备中状态寄存器、控制寄存器、中断寄存器和地址寄存器中的数据,获得所述设定值,并存入所述存储空间内;在执行清空指令后,将所述存储空间内的数据分别存入USB设备中对应的状态寄存器、控制寄存器、中断寄存器和地址寄存器中。高端PC操作***主动发起的设备列举是在低端初始化并开放总中断后,通过使低端USB设备产生USB接收中断来与其进行参数交互传递的,所以***中对USB寄存器进行的修改只可能在USB初始化函数中或者在USB中断处理函数中出现,于是可以到这两处找USB寄存器的最终值。由于先进行***初始化,再开放总中断,然后发生USB接收中断进行参数交互,中断完成之后就进行正常的设备检测,也就是说只要维持在刚退出USB中断处理函数时的寄存器的值就能够保证USB设备的正常检测、识别和通信。所以在中断处理函数退出之前的“CLI”前面加上保存所有相关寄存器的值的程序,就可以成功保存***正常运行时候的各寄存器的设定值。
另一种技术方案是,通过程序随时读取USB设备中状态寄存器、控制寄存器、中断寄存器和地址寄存器内的数据,经USB接口送至高端PC机内,由PC机分析比较得出各寄存器内的固定值,该值为所述设定值,并存放入所述存储空间内,待触发看门狗处理程序复位时,通过程序将存储空间内的设定值赋值于USB设备中的各寄存器中。高端PC机接收到USB设备传送的数据后做进一步分析,观察USB在正常工作情况下,这些寄存器的哪些位是变动的,哪些位是需要一直固定的。然后分析出影响USB设备识别的最关键的位,确定它们在正常情况下最恰当的设定值。然后只要是发生热复位(由看门狗处理程序复位的),就在热复位处理程序中把这些位还原回去,即通过修改程序,将存储空间内的数据赋值于USB设备中各寄存器内,这就达到了恢复寄存器的目的。
在上述两种技术方案中,前者更为优选,其无需判断复位的属性,既便是冷复位(***正常重启动),如果在初始化完成之后也调用存储空间内数据的程序,由于数据寄存器中的变量没有赋值,程序有可能会把一些错误的值写入到寄存器中去,但是由于是冷复位,随后高端PC机操作***发起的设备列举会重新给寄存器赋予正确的值,所以***仍能够正常进行USB设备识别和通信。这样一来,为了保持冷热复位时程序的一致性,在程序中就可以不再判断是不是热复位了,无论在哪种复位情况下,在开放总中断前一句的位置都调用这个恢复寄存器值的程度,就能保证无论发生何种复位,***都能进行正常的设备检测和正常通信。
由于上述技术方案运用,本发明与现有技术相比具有下列优点:本发明通过在看门狗复位处理程序复位清零执行之前,将存储USB设备与高端PC机交互的数据,存放于USB设备的存储空间内,待***出现异常引发看门狗复位清零程序后,由程序将存储空间内的数据分别赋予USB设备原来存放地址的各寄存器内,还原为复位前的数据,使高端PC机仍能识别该USB设备,避免USB设备热复位后的异常出错,由此确保嵌入式***的安全性、可靠性、抗干扰性,最大程度的发挥看门狗的复位作用。
附图说明
图1是本发明实施例一的***运行流程图。
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例一:参见图1所示,一种USB设备中异常监控复位处理方法,包括以下步骤:
(1)在USB设备的数据存储区内设置一个8字节的连续的存储空间;
(2)在***正常工作状态下,读取USB设备内各个除数据寄存器以外的寄存器内的数据,获得USB设备工作的设定值,并将该设定值存入步骤(1)中所述存储空间内;
通常在***启动时,判断***为正常启动,此时先进行各个模块的初始化操作,开中断,然后再进行上述读取保存操作,最后转入正常工作流程;
(3)在***出现异常时,通过看门狗复位处理程序复位USB设备;
此时,***重启动,***初始化后,判断为看门狗复位操作,先进行其它模块的初始化操作,再进入步骤(4);
(4)将步骤(2)中所述储空间内的数据分别存入USB设备中对应的状态寄存器、控制寄存器、中断寄存器和地址寄存器中。
最后开中断,重新转入正常工作流程。
本实施例中,所述USB设备为JB8单片机,是飞思卡尔半导体公司生产的一款内部集成USB1.1通信模块的高性能低价位单片机。利用USB接口与高端PC进行数据通信的数据采集***,JB8单片机***通过USB电缆由PC机提供工作电源。
步骤(2)中读取USB设备的设定值,也可在步骤(3)看门狗复位程序清空指令“CLI”之前读取,复位时,先进行***初始化,再开放总中断,然后发生USB接收中断进行参数交互,中断完成之后就进行正常的设备检测,也就是说只要保存在刚退出USB中断处理函数时寄存器内的值,就能够保证USB设备的正常检测、识别和通信;因此,在看门狗中断处理程序退出之前的“CLI”前面加上保存所有相关寄存器(状态寄存器、控制寄存器、中断寄存器和地址寄存器)值的程序,就可以成功保存***正常运行时候的各寄存器的设定值。保存完之后发生看门狗复位(步骤(3)),由于数据寄存器(UenD)中的数据不会改变,所以这些变量的值在看门狗复位之后仍然保存在数据寄存器中,只需要把它们直接恢复到其他各寄存器中就可以使***正常运行,实现了寄存器在复位前后的一致性,高端PC机仍能够识别。
实施例二:一种USB设备中异常监控复位处理方法,包括以下步骤:
(1)在USB设备的数据存储区内设置一个8字节的连续的存储空间;
(2)通过程序随时读取USB设备中状态寄存器、控制寄存器、中断寄存器和地址寄存器内的数据,经USB接口送至高端PC机内,由PC机分析比较得出各寄存器内的固定值,该值为设定值,并存放入所述存储空间内;
(3)在***出现异常时,通过看门狗复位处理程序复位USB设备;
(4)通过程序将步骤(2)中所述储空间内的设定值赋值于USB设备中对应的状态寄存器、控制寄存器、中断寄存器和地址寄存器中。
在程序中随时读USB设备各个寄存器的值,通过USB接口发到高端PC机上,高端接收到这些数据后做进一步分析,观察USB在正常工作情况下,这些寄存器的哪些位是变动的,哪些位是需要一直固定的。然后分析出影响USB设备识别的最关键的位,确定它们在正常情况下最恰当的值,存放于存储空间内。只要是发生热复位,就在热复位处理程序中把这些位还原回去,这就达到了恢复寄存器的目的。
Claims (4)
1.一种USB设备中异常监控复位处理方法,包括以下步骤:
(1)在USB设备的数据寄存器内设置一个存储空间;
(2)在***正常工作状态下,读取USB设备内除数据寄存器以外的各个寄存器内的数据,获得USB设备工作的设定值,并将该设定值存入步骤(1)中所述存储空间内;
(3)在***出现异常时,通过看门狗复位处理程序复位USB设备;
(4)将步骤(2)中所述储空间内的数据存入对应的除数据寄存器以外各个USB设备寄存器中。
2.根据权利要求1所述的USB设备中异常监控复位处理方法,其特征在于:所述步骤(1)中的存储空间为设置于USB设备数据存储区内的8个连续字节的存储空间。
3.根据权利要求2所述的USB设备中异常监控复位处理方法,其特征在于:在看门狗复位程序清空指令之前,读取USB设备中状态寄存器、控制寄存器、中断寄存器和地址寄存器中的数据,获得所述设定值,并存入所述存储空间内;在执行清空指令后,将所述存储空间内的数据分别存入USB设备中对应的状态寄存器、控制寄存器、中断寄存器和地址寄存器中。
4.根据权利要求2所述的USB设备中异常监控复位处理方法,其特征在于:通过程序随时读取USB设备中状态寄存器、控制寄存器、中断寄存器和地址寄存器内的数据,经USB接口送至高端PC机内,由PC机分析比较得出各寄存器内的固定值,该值为所述设定值,并存放入所述存储空间内,待触发看门狗处理程序复位时,通过程序将存储空间内的设定值赋值于USB设备中的各寄存器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101247646A CN101369238A (zh) | 2008-09-02 | 2008-09-02 | Usb设备中异常监控复位处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101247646A CN101369238A (zh) | 2008-09-02 | 2008-09-02 | Usb设备中异常监控复位处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101369238A true CN101369238A (zh) | 2009-02-18 |
Family
ID=40413070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101247646A Pending CN101369238A (zh) | 2008-09-02 | 2008-09-02 | Usb设备中异常监控复位处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101369238A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102455946A (zh) * | 2010-10-19 | 2012-05-16 | 瑞昱半导体股份有限公司 | Usb装置异常的检测与恢复电路及其方法 |
WO2012075655A1 (zh) * | 2010-12-06 | 2012-06-14 | 无敌科技(西安)有限公司 | 传输中断可自动恢复的电子装置及其方法 |
CN102752880A (zh) * | 2012-06-12 | 2012-10-24 | 洪涛 | 控制标准usb接口无线网卡重启的控制装置及控制方法 |
CN111459711A (zh) * | 2020-03-31 | 2020-07-28 | 烽火通信科技股份有限公司 | 一种内存恢复方法及*** |
-
2008
- 2008-09-02 CN CNA2008101247646A patent/CN101369238A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102455946A (zh) * | 2010-10-19 | 2012-05-16 | 瑞昱半导体股份有限公司 | Usb装置异常的检测与恢复电路及其方法 |
WO2012075655A1 (zh) * | 2010-12-06 | 2012-06-14 | 无敌科技(西安)有限公司 | 传输中断可自动恢复的电子装置及其方法 |
CN102752880A (zh) * | 2012-06-12 | 2012-10-24 | 洪涛 | 控制标准usb接口无线网卡重启的控制装置及控制方法 |
CN111459711A (zh) * | 2020-03-31 | 2020-07-28 | 烽火通信科技股份有限公司 | 一种内存恢复方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105938450B (zh) | 自动除错信息收集的方法及*** | |
CN101464819B (zh) | 进入低功率模式前的硬件驱动处理器状态存储 | |
CN102761439B (zh) | Pon接入***中基于看门狗的异常检测记录装置及方法 | |
CN102662782B (zh) | 一种监控***总线的方法及装置 | |
CN107122321A (zh) | 硬件修复方法、硬件修复***以及计算机可读取存储装置 | |
CN102880527B (zh) | 一种基板管理控制器的数据恢复方法 | |
CN108388496A (zh) | 一种***日志的收集方法 | |
CN101364193A (zh) | 自动恢复bios的方法以及使用该方法的电脑与*** | |
CN100492305C (zh) | 一种计算机***的快速恢复方法及设备 | |
CN101937344B (zh) | 一种计算机快速启动的装置及方法 | |
CN101976217A (zh) | 网络处理器异常检测方法及*** | |
CN100395722C (zh) | 一种对控制***异常状态信息进行保存的方法 | |
CN105760241A (zh) | 一种内存数据导出方法和*** | |
CN105183521A (zh) | 一种安装计算操作***的方法及usb接口存储设备 | |
CN109032863A (zh) | 一种NVMe固态硬盘及其故障原因的确定方法、*** | |
CN101369238A (zh) | Usb设备中异常监控复位处理方法 | |
CN102983989A (zh) | 一种服务器虚拟地址的迁移方法、装置和设备 | |
CN102620948A (zh) | 抽水蓄能机组故障智能分析方法及其*** | |
CN103778024A (zh) | 服务器***及其讯息处理方法 | |
CN1979444A (zh) | 保证伺服程序不间断运行的***及其方法 | |
CN101241451A (zh) | 一种嵌入式***的串口可靠通讯控制方法 | |
CN104158843A (zh) | 分布式文件存储***的存储单元失效检测方法及装置 | |
KR100605031B1 (ko) | Usb 메모리 장치를 이용한 임베디드 시스템의 장애복구 및 업그레이드 방법 | |
CN100419689C (zh) | 中断处理方法及装置 | |
CN101739115A (zh) | 精简型计算机主机及精简型计算机主机唤醒方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090218 |