嵌入式设备的系统及嵌入式设备远程升级的方法

文档序号:9579068阅读:395来源:国知局
嵌入式设备的系统及嵌入式设备远程升级的方法
【技术领域】
[0001]本发明涉及网络通信技术领域,尤其涉及一种嵌入式设备的系统及嵌入式设备远程升级的方法。
【背景技术】
[0002]嵌入式设备广泛应用于各行各业,嵌入式设备主要是用于解决行业的特定问题,因此嵌入式设备的硬件与软件需要高度定制。通常,嵌入式设备的软件由u-boot(全称Universal Boot Loader)、普通Linux内核、根文件系统以及应用程序构成,在嵌入式设备的生命周期中,普通Linux内核、根文件系统以及应用程序经常需要更新升级以便适应新的需求或者解决自身存在的漏洞(bug),而u-boot—般不会更新升级。在嵌入式设备异常时,通常采用升级的方式为应用系统提供升级程序来更新普通Linux内核、根文件系统以及应用系统本身,这种升级方式存在一个问题,即当应用系统出现异常时,则无法通过这种方式升级,只能在u-boot中进行升级,此时升级可以通过串口或者网口,但是必须进行现场升级,无法远程升级,因为u-boot本质是一个简单的无0S特征(井发性、共享性、虚拟性和异步性)的裸机程序,不具有强大的网络功能,因此无法通过网络远程进行升级,对于运行在山顶、沙漠等自然环境不好的嵌入式设备来说,去现场升级尤为不方便。虽然,在普通u-boot上进行大量代码开发,可以实现远程升级,但需要开发维护两套升级应用程序,一套在u-boot中使用,一套在应用系统中使用,开发成本高,应用系统中的升级应用程序与u-boot中的升级程序严重不统一后续代码维护麻烦。

【发明内容】

[0003]针对现有的嵌入式设备出现异常后无法远程升级的上述问题,现提供一种旨在实现嵌入式设备出现异常时可远程升级,成本低,方便维护的嵌入式设备的系统及嵌入式设备远程升级的方法。
[0004]具体技术方案如下:
[0005]一种嵌入式设备的系统,包括:
[0006]—第一启动单元,用以正常启动程序,并控制应用程序运行;
[0007]—第二启动单元,用以远程获取所述第一启动单元最新软件版本的镜像,并将所述第一启动单元最新软件版本的镜像写入所述第一启动单元,以形成新的正常启动程序;
[0008]—标记单元,分别连接所述第一启动单元和所述第二启动单元,对当前运行的启动单元进行标记,并生成下次重启的启动单元的标记;
[0009]—存储单元,连接所述标记单元,用以存储当前启动单元的标记,及下次重启的启动单元的标记;
[0010]—选择单元,分别连接所述存储单元、所述第一启动单元和所述第二启动单元,用以根据所述存储单元中存储的标记,选择所述第一启动单元或所述第二启动单元运行。
[0011]优选的,所述第二启动单元包括一远程接收模块,所述远程接收模块用以远程接收所述第一启动单元最新软件版本的镜像。
[0012]优选的,所述远程接收模块采用tftp控制模块。
[0013]优选的,所述标记单元包括:
[0014]—标记模块,用以对当前运行的所述第一启动单元或所述第二启动单元进行标记;
[0015]—监测模块,用以监测当前运行的所述第一启动单元是否正常启动程序,并输出监测结果;
[0016]—处理模块,分别连接所述标记模块和所述监测模块,用以根据当前运行的所述第一启动单元或所述第二启动单元的标记、所述监测结果及预设规则,生成下次重启的启动单元的标记。
[0017]优选的,所述预设规则为:
[0018]若当前运行的启动单元为所述第二启动单元,则标记下次重启的所述启动单元为所述第一启动单元。
[0019]优选的,所述预设规则为:
[0020]当所述监测结果为当前运行的所述第一启动单元,且所述第一启动单元为异常启动程序,则标记下次重启的所述启动单元为所述第二启动单元。
[0021]优选的,所述存储单元采用Flash存储器。
[0022]优选的,还包括:
[0023]—接收单元,连接所述选择单元,用以接收升级指令;
[0024]—重启单元,连接所述接收单元,重新启动所述嵌入式设备的系统;
[0025]重新启动所述嵌入式设备的系统后,所述选择单元选择所述第二启动单元运行。
[0026]一种嵌入式设备远程升级的方法,应用如上述的嵌入式设备的系统,包括下述步骤:
[0027]S1.根据所述存储单元中存储的标记,选择所述第一启动单元或所述第二启动单元运行,若选择所述第一启动单元运行,执行步骤S2 ;若选择所述第二启动单元运行,执行步骤S4 ;
[0028]S2.正常启动程序,并控制应用程序运行;
[0029]S3.对当前运行的启动单元进行标记,并生成下次重启的启动单元的标记,并存储于所述存储单元中,结束;
[0030]S4.远程获取所述第一启动单元最新软件版本的镜像,并将所述第一启动单元最新软件版本的镜像写入所述第一启动单元,以形成新的正常启动程序,返回执行所述步骤S3 ο
[0031]优选的,在所述步骤S3中,若当前运行的启动单元为所述第一启动单元时,对当前运行的启动单元进行标记,并监测当前运行的所述第一启动单元是否正常启动程序,若否,则标记下次重启的所述启动单元为所述第二启动单元。
[0032]优选的,在所述步骤S3中,若当前运行的启动单元为所述第二启动单元时,对当前运行的启动单元进行标记,并标记下次重启的所述启动单元为所述第一启动单元。
[0033]优选的,在所述步骤S2中,还包括:
[0034]S21.正常启动程序,并控制应用程序运行;
[0035]S22.判断是否接收到升级指令,若是,执行步骤S23 ;若否,执行所述步骤S3 ;
[0036]S23.标记下次重启的所述启动单元为所述第二启动单元,重新启动所述嵌入式设备的系统,返回执行所述步骤S1。
[0037]上述技术方案的有益效果:
[0038]1)嵌入式设备的系统采用第二启动单元可在系统异常时进行远程升级,以在升级完成后正常启动升级后的第一启动单元控制应用程序的运行,方便维护,且成本低;
[0039]2)嵌入式设备远程升级的方法可根据存储单元存储的标记启动相应的启动单元,从而实现在系统发生异常第一启动单元无法自行升级时,选择第二启动程序进行远程升级,以保证系统可以正常运行,且方便维护。
【附图说明】
[0040]图1为本发明所述的嵌入式设备的系统的一种实施例的模块图;
[0041]图2为本发明所述的嵌入式设备远程升级的方法的一种实施例的方法流程图。
【具体实施方式】
[0042]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0044]下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0045]如图1所示,一种嵌入式设备的系统,包括:
[0046]—第一启动单元4,用以正常启动程序,并控制应用程序运行;
[0047]—第二启动单元5,用以远程获取第一启动单元4最新软件版本的镜像,并将第一启动单元4最新软件版本的镜像写入第一启动单元4,以形成新的正常启动程序;
[0048]—标记单元7,分别连接第一启动单元4和第二启动单元5,对当前运行的启动单元进行标记,并生成下次重启的启动单元的标记;
[0049]—存储单元6,连接标记单元7,用以存储当前启动单元的标记,及下次重启的启动单元的标记;
[0050]—选择单元1,分别连接存储单元6、第一启动单元4和第二启动单元5,用以根据存储单元6中存储的标记,选择第一启动单元4或第二启动单元5运行。
[0051]在本实施例中,采用第二启动单元5可在系统异常时进行远程升级,以在升级完成后正常启动升级后的第一启动单元4控制应用程序的运行,方便维护,且成本低。其中系统异常包括系统运行出现的异常,以及第一启动单元4升级时出现的异常。
[0052]在优选的实施例中,第二启动单元5包括一远程接收模块,远程接收模块用以远程接收第一启动单元最新软件版本的镜像。
[0053]进一步地,远程接收模块采用tftp控制模块。
[0054]在本实施例中,存储单元6采用Flash存储器;第二启动单元5包括一升级Linux内核;第一启动单元4包括一普通的普通Linux内核,定制u-boot通过选择单元1选择相应的启动单元运行,当选择单元1选择第二启动单元5时,可通过第二启动单元5进行远程升级,并在升级完成后重启;当选择单元1选择第一启动单元4时,可正常启动程序。
[0055]普通Linux内核和升级Linux内核都是基于芯片厂商提供的Linux裁剪而来,为了最小化,升级Linux只保留Linux的基本网络驱动与网络协议栈、Flash驱动及文件系统、以及升级应用程序。同时,为了升级Linux的正常运行,第二启动单元5还增加了一个最小的根文件系统。运行中升级Linux内核和普通Linux内核的升级程序代码完全一样。由于升级Linux内核具有强大的网络功能,因此tftp控制模块采用tftp命令进行Linux系统的升级。
[0056]定制u-boot在完成芯片以及外设的基本初始化(如cpu、ddr、串口、网口等)以后,不加装运行厂商提供的基于U-boot的应用程序(如串口应用、网口应用、命令行应用等),而是通过相关接口获取标记确定需要加装的内核即普通Linux内核或升级Linux内核。定制u-boot应用只保留从Flash存储器加装内核的应用,移除其他应用(如串口应用、网口应用、命令行应用等)。通过选择单元1确定了待加装内核的内核后,定制u-boot通过定制的从Flash加装内核的应用加装并运行内核。
[0057]在优选的实施例中,标记单元7包括:
[0058]—标记模块71,用以对当前运行的第一启动单元4或第二启动单元5进行标记;
[0059]—监测模块72,用以监测当前运行的第一启动单元4是否正常启动程序,并输出监测结果;
[0060]一处理模块73,分别连接标记模块71和监测模块72,用以根据当前运行的第一启动单元4或第二启动单元5的标记、监测结果及预设规则,生成下次重启的启动单元的标记。
[0061]在本实施例中,采用监测模块
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1