一种自诊断终端、检测方法及远程维护系统
技术领域
本发明涉及智能终端的业务支撑、嵌入式系统、TCP/IP通信、远程维护和传输与IP领域,具体涉及一种自诊断终端、检测方法及远程维护系统。
背景技术
传统的终端设备一般采用8位、16位单片机或DSP+应用程序的模式,由于软、硬件资源的限制,传统终端设备自诊断和远程升级功能往往十分简单或根本没有;随着近年来电子行业的迅猛发展,32位单片机应用日趋广泛。32位嵌入式系统逐渐成为各类终端产品的首选,相比传统的单片机+应用程序的开发模式,32位嵌入式系统平台体系庞大,构成更复杂,功能也更强大,具备完善的自诊断和远程维护的硬件基础。32位嵌入式平台的软件一般分为引导启动、操作系统核心、根文件系统和上层应用几个部分。在硬件上电后的软件加载的顺序一般分为四个步骤:
1)CPU从FLASH中读出引导启动程序到内存,并开始执行引导启动程序;
2)引导启动程序从FLASH中读出操作系统内核到内存中,把控制权交给操作系统内核;
3)内核做系统硬件和资源初始化,挂载根文件系统,执行根文件中的启动脚本;
4)运行应用程序。
对于研发人员,通常只需对前三级软件做简单的配置,重点开发任务放在第四级的上层应用程序上。因而终端自诊断和远程升级功能通常在上层应用程序中实现,应用程序加载后通过GPRS等方式连接上位机,实现应用程序在线升级等功能。
当前常用的嵌入式系统为节约成本,存储设备往往舍弃NOR FLASH,仅采用NAND FLASH+SPI FLASH存储系统软件和文件,而NAND FLASH坏块率比较高,在使用中一个坏块可能对系统内核或文件系统产生致命的破坏,造成系统无法启动。而传统的终端自诊断和远程升级功能一般在上层应用程序中实现,需等待系统正常启动后才会运行,一旦操作系统不能正常启动将造成终端无法使用,并且不能进行远程升级甚至没有任何信息输出提示,需派专人去现场维修或返修,增加了维护成本,并且远程只能对应用程序进行升级,而很难支持操作系统和文件系统的升级要求。
现有技术存在的问题:
1、软件加载各个步骤之间出现错误时缺乏有效的检测和保护机制。
当终端由于某种原因(一般是硬件故障)造成操作系统内核不能正确启动或文件系统不能正常挂载,终端将陷入瘫痪,无法使用,且没有有效的机制定位错误,只能由厂家派专业技术人员前往现场处理。
2、对于造成软件加载错误的硬件故障,缺乏远程诊断手段,只能派专人去现场维修或返修。
3、现有应用程序通过GPRS方式实现的远程升级功能只能对应用程序进行升级,而无法支持操作系统和文件系统的升级要求。
发明内容
本发明解决在终端出现异常的情况下能够及时诊断并通过连接互联网自动修复、能够在终端出现故障时候提供远程诊断接口、可以支持操作系统内核与文件系统的远程升级、减少技术人员现场支持的概率、降低售后服务的成本。
本发明提供一种自诊断终端,所述终端包括:
校验模块,用于在加载操作系统内核和挂载文件系统前进行数据校验;
判别模块,用于根据所述校验结果确定把CPU控制权交给操作系统内核、重复上述校验过程或进行远程升级。所述判别模块包括:
第一判别子模块,用于判别出所述校验结果通过时启用正常的操作系统,将CPU控制权交给操作系统内核;
第二判别子模块,用于判别出所述校验结果不通过,则启用备份的操作系统内核和挂载文件系统,并重复所述校验过程;
第三判别子模块,用于在第二判别子模块重复所述校验过程不通过时进行远程升级。
所述自诊断终端包括:远程升级模块;
所述判别模块一端连接所述校验模块,所述判别模块另一端连接所述远程升级模块。
所述远程升级模块进行所述操作系统内核与所述文件系统的远程传输,用以太网接口连接internet;终端的以太网口连接用户提供的连接互联网的路由器。
所述方法包括:
在加载操作系统内核和挂载文件系统前进行校验;
根据所述校验结果确定把CPU控制权交给操作系统内核、重复上述校验过程或进行远程升级。
根据所述校验结果确定把CPU控制权交给操作系统内核、重复上述校验过程或进行远程升级的步骤包括:
若所述校验结果通过,则正常启用操作系统,将CPU控制权交给操作系统内核;
若所述校验结果不通过,则启用备份的操作系统内核和文件系统,并重复所述校验过程;
若重复所述校验过程不通过,则进行远程升级。
所述远程升级包括所述操作系统内核与所述文件系统的传输,用以太网接口连接internet;用户提供的连接互联网的路由器连到终端的以太网口;所述升级包括以下步骤:
1)所述终端接收远程升级控制命令时检测网络连接,自动发送ARP数据以获得路由器硬件地址;
2)所述终端根据所述路由器硬件地址发送请求,由路由器根据所述请求分配信息,所述分配信息包括IP地址、网关和DNS;
3)根据所述终端设定的远程升级服务器域名,向DNS服务器发送域名解析请求,所述终端收到返回的远程升级服务器IP地址;
4)通过所述远程升级服务器IP地址和终端设定的端口启动TCP连接,根据所述终端与所述服务器的协议,进行文件下载升级及终端远程维护;
根据用户提供的路由器,进行24小时在线升级。
所述的终端以及远程升级服务器,通过互联网对所述终端故障进行自动诊断和固件升级。
所述远程维护系统的系统故障自动诊断分为主站诊断和终端自诊断两部分,所述主站诊断方式包括:拥有域名的24小时在线软件和监控设定端口来自所述终端的TCP连接请求。
所述终端自诊断包括:开机自诊断和远程升级,所述开机自诊断包括如下步骤:
1)将引导启动代码放在一块SPI接口FLASH闪存中;
2)引导启动代码从设定的NAND FLASH地址中将操作系统内核读入内存;
3)引导启动代码对内核数据进行CRC校验,并和读出的内核CRC进行比较;
4)判定内核CRC是否通过校验,确定从设定的NAND FLASH地址中将备份的操作系统内核读入内存还是执行步骤8;
5)引导启动代码对备份内核数据进行CRC校验,并和读出的内核CRC进行比较;
6)如备份内核CRC校验未通过,进入远程升级模式;
7)如备份内核CRC校验通过,执行步骤8;
8)内核CRC校验通过,引导启动代码从设定的NAND FLASH地址中将根文件系统读入内存;
9)引导启动代码对根文件系统进行CRC校验,并和读出的文件系统CRC进行比较;
10)判定文件系统CRC是否通过校验,确定从设定的NAND FLASH地址中备份的文件系统读入内存还是执行步骤13;
11)引导启动代码对备份文件系统进行CRC校验,并和读出的文件系统CRC进行比较;
12)确定备份文件系统CRC进入远程升级模式还是执行步骤13;
13)引导启动代码跳转的操作系统内核首地址,让出CPU控制权,正常启动。
所述远程升级包括如下步骤:
1)通过以太网发送DHCP广播,查寻路由器;
2)以太网收到路由器返回的提供信息报文,发送DHCP服务器选择广播,请求本机IP、子网掩码、网关和DNS网络连接信息;
3)以太网与internet联连后,接收路由器返回的本机IP地址、子网掩码、网关、DNS网络连接信息;
4)根据设定的主站服务器网址,以太网向DNS服务器发送DNS域名解析请求;
5)以太网收到DNS服务器的回复,将获得主站对应的IP地址;
6)根据主站服务器IP地址和设定的端口号,启动一个TCP连接到主站;
7)建立TCP连接。
本发明在嵌入式系统的引导启动程序中加入对操作系统内核和文件系统的校验,可以在加载操作系统内核和挂载文件系统之前通过CRC校验对二者进行检查,当发现校验结果与这二者本身的CRC数据相符,可以正常引导操作系统,把CPU控制权交给操作系统内核;如果CRC校验结果与内核和文件系统的CRC数据不符,说明内核或文件系统被破坏,启用备份的内核与文件系统,然后重复上面的CRC校验过程,如果检测结果仍然无效,说明NAND FLASH保存的系统已经被破坏,引导程序自动启动远程升级功能。以上过程通过人机交互接口给出提示信息。
因为远程升级涉及到操作系统内核与文件系统传输,数据量比较大,故采用以太网接口连接internet,升级期间需要用户提供一台能连接互联网的路由器直接连到终端的以太网口,终端在远程升级模式下检测到网络连接,将自动发送ARP数据包获得路由器的硬件地址;然后发送DHCP请求从路由器分配自己的IP地址、网关、DNS等信息;接下来通过DNS解析终端事先设定的远程升级服务器域名,返回服务器IP地址;最后通过服务器IP和终端设定的服务器端口启动一个TCP连接,根据终端与服务器制定的协议,实现文件下载升级及终端远程维护功能。整个过程仅需要用户在远程升级期间提供一个能够上网的路由器,无需技术支持人员前往现场,24小时在线升级,可以大大提高技术支持效率,进一步完善终端-服务器协议可以实现终端远程诊断功能。
与现有技术相比,本发明的有益效果在于:
1.本发明解决了现有终端由于各种软、硬件原因造成终端上电后无法启动的问题,在出现异常的情况下能够及时诊断并通过连接互联网自动修复。
2.本发明能够在终端出现故障时候提供远程诊断接口,方便相关人员通过互联网对终端故障进行远程诊断。
3.本发明可以支持操作系统内核与文件系统的远程升级。
4.采用本发明介绍的方法终端设备在硬件故障造成软件加载出错的情况下,只要引导加载程序能够启动就可以及时发现问题,自动启用远程升级程序,进行程序和系统更新,在硬件故障不严重的情况下,可以修复系统,使之正常工作;
如果硬件故障严重已影响使用,可以通过远程进行硬件故障诊断,将诊断结果反馈给远程计算机。可以极大的减少技术人员现场支持的概率,降低了售后服务的成本。
附图说明
图1是本发明的自诊断检测系统结构图;
图2是本发明的终端存储区结构实施例示意图;
图3是本发明的典型终端结构模块实施例示意图;
图4是本发明的终端开机自诊断实施例流程示意图;
图5是本发明的远程升级实施例流程示意图。
具体实施方式
本发明针对现有终端设备在开机启动故障检测方面的缺陷提出一种新的解决方案,并可在此基础上构建完整的一套远程诊断系统。
图1是本发明的自诊断检测系统结构图,路由器通过终端的以太网接口通过主站服务器联网;图2是本发明的终端存储区结构实施例示意图,说明各个模块之间的包含关系;图3是本发明的典型终端结构模块实施例示意图,给出整个模块运行过程实施例;图4是本发明的终端开机自诊断实施例流程图,对整个终端开机自诊断步骤进行详细阐述;图5是本发明的远程升级实施例流程图,相对于现有技术不需要关心网络连接底层细节的特性,需要在引导启动代码中实现一个TCP/IP协议栈,并处理一切网络连接的技术细节。
本系统故障诊断方法分为主站诊断和终端诊断两部分。分别介绍如下:
1)终端诊断功能实现
本系统终端检测实现放在引导启动代码中,分为开机自诊断和远程升级两部分。
开机自诊断包括如下步骤:
1.引导启动代码放在一块专用的SPI接口FLASH闪存中,在硬件上电后首先被主CPU从闪存中读入内存执行,引导启动代码所处的闪存空间独立,不与终端其他软件和数据区共用,可以最大限度保证引导启动程序不会被硬件或软件故障损坏。
2.引导启动代码从设定的NAND FLASH地址中将操作系统内核读入内存。
3.引导启动代码对内核数据进行CRC校验,并和读出的内核CRC进行比较。
4.如内核CRC校验未通过,从设定的NAND FLASH地址中将备份的操作系统内核读入内存。如果内核CRC校验通过,执行步骤8。
5.引导启动代码对备份内核数据进行CRC校验,并和读出的内核CRC进行比较。
6.如备份内核CRC校验未通过,进入远程升级模式。
7.如备份内核CRC校验通过,执行步骤8。
8.内核CRC校验通过,引导启动代码从设定的NAND FLASH地址中将根文件系统读入内存。
9.引导启动代码对根文件系统进行CRC校验,并和读出的文件系统CRC进行比较。
10.如文件系统CRC校验未通过,从设定的NAND FLASH地址中将备份的文件系统读入内存。如文件系统CRC校验通过,执行步骤13。
11.引导启动代码对备份文件系统进行CRC校验,并和读出的文件系统CRC进行比较。
12.如备份文件系统CRC校验未通过,进入远程升级模式。如备份文件系统CRC校验通过,执行步骤13。
13.引导启动代码跳转的操作系统内核首地址,让出CPU控制权,正常启动。
本领域技术人员应了解,本发明可以基于32位嵌入式终端设备,也可涵盖带以太网的基于8位/16位单片机或DSP的非嵌入式终端产品等。本发明的描述以32位嵌入式平台为例进行,但工作流程在上面提到的非嵌入式系统终端上可通用。对内核与文件系统进行校验的目的是验证数据的正确性,CRC是比较典型的一种,也可采用其他数据校验方式。
远程升级包括如下步骤:
相对于现有技术不需要关心网络连接底层细节的特性,本发明需要在引导启动代码中实现一个TCP/IP协议栈,并处理一切网络连接的技术细节。本发明流程如下:
1.定时通过以太网发送DHCP广播,寻找DHCP服务器(这里是路由器)。
2.收到路由器返回的提供信息报文,发送DHCP服务器选择广播,请求本机IP、子网掩码、网关、DNS等网络连接信息。
3.收到路由器返回的本机IP地址、子网掩码、网关、DNS,这一步完成后已经连上internet。
4.根据事先设定的主站服务器网址,向DNS服务器发送DNS域名解析请求。
5.收到DNS服务器的回复,获得主站服务器对应的IP地址。
6.根据主站服务器IP地址和事先设定的端口号,启动一个TCP连接到主站。
7.TCP连接建立,根据终端软件与主站自定义的通信协议,可进行操作系统内核和文件系统下载、远程诊断等功能。
2)主站诊断方式实现
1.拥有域名的24小时在线软件
2.监控设定端口来自终端的TCP连接请求
建立与终端的TCP连接后根据终端与主站自定义的通信协议,为终端提供操作系统内核和文件系统下载功能,也可通过这个TCP连接实现远程诊断功能。
本领域技术人员应了解,对于嵌入式终端软件来说,大致分为引导1、启动程序、2、操作系统内核、3、文件系统和4、应用程序几个部分,2、3、4可能分开存储在非易失内存里,也可能合成一个部分,因为前者情况比较复杂,因此本发明重点讨论,2、3、4部分合在一起的情况的处理方式类似,图4或图5流程更简化一些。对于前者,终端设备上电后的运行顺序是上电->运行启动程序->运行操作系统内核->挂载文件系统->运行应用程序。本发明对现有的启动程序进行了改进,在启动程序这一级对下面几个步骤进行预先的检查(自动诊断),如果发现某个环节存在问题会采取相应的修复手段,自动在线升级,故障信息上报到服务器。
图2是本发明的终端存储区结构实施例示意图,说明各个模块之间的包含关系;图3是本发明的典型终端结构模块实施例示意图,给出整个模块运行过程实施例。其中,本发明的自诊断终端可以包括:
校验模块,用于在加载操作系统内核和挂载文件系统前进行数据校验;
判别模块,用于根据所述校验结果确定把CPU控制权交给操作系统内核、重复上述校验过程或进行远程升级。
这两个模块可以位于图2和图3的CPU中,其中判别模块进一步可以包括:
第一判别子模块,用于判别出所述校验结果通过时启用正常的操作系统,将CPU控制权交给操作系统内核;
第二判别子模块,用于判别出所述校验结果不通过,则启用备份的操作系统内核和挂载文件系统,并重复所述校验过程;
第三判别子模块,用于在第二判别子模块重复所述校验过程不通过时进行远程升级。
该终端还可以包括:远程升级模块,可以连接图3的CPU及通信接口。
结合上述实施例仅说明本发明的技术方案而非对其限制。所属领域的普通技术人员应当理解到:本领域技术人员可以对本发明的具体实施方式进行修改或者等同替换,但这些修改或变更均在申请待批的权利要求保护范围之中。