具体实施方式
下面将参考附图对本公开作进一步地详细描述。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路等未作详细描述,以便于凸显本公开的主旨。
在相关技术中,终端设备尤其是摄像机在进行固件升级的处理中,会采用FOTA(Firmware Over The Air,固件空中升级)的方式。随着技术的发展,摄像机也可能会设计为双系统,该双系统中可能存在一个主系统和一个备系统,在这种架构下,如何保证主系统FOTA的成功率以及效率都成为需要解决的问题。
针对上述问题,本公开第一方面实施例提供了一种系统升级方法,应用于摄像机,如图1所示,所述方法包括:
S101:摄像机的主系统确定进行FOTA升级,且所述摄像机的主系统基于统一资源定位器(URL,Uniform Resource Locator)信息完成下载空中升级(OTA,Over The Air)镜像的情况下,所述摄像机的主系统将启动标志的当前取值设置为第一值,并保存本次下载所述OTA镜像的所述URL信息;其中,所述启动标志的当前取值用于指示所述摄像机在重启后进入主系统或备系统;所述第一值用于指示所述摄像机在重启后进入备系统;
S102:在所述摄像机的主系统基于所述OTA镜像进行升级的过程中出现异常的情况下,所述摄像机的主系统控制所述摄像机重启;
S103:在所述摄像机重新启动后运行引导加载程序(U-BOOT,Universal BootLoader)读取所述启动标志的当前取值为第一值的情况下,所述U-BOOT引导启动所述摄像机的备系统;其中,所述摄像机的备系统仅在所述摄像机的主系统基于所述OTA镜像进行升级的过程中出现异常的情况下被启动,用于对所述摄像机的主系统完成升级;
S104:所述摄像机的备系统基于保存的所述URL信息从服务器重新下载OTA镜像并将重新下载的所述OTA镜像保存在随机存取存储器(RAM,Random Access Memory)中,基于重新下载的OTA镜像对所述摄像机的主系统进行升级;
S105:在所述摄像机的备系统完成对所述摄像机的主系统的升级的情况下,所述摄像机的备系统将所述启动标志的当前取值设置为第二值,控制所述摄像机重启并清除所述RAM中保存的重新下载的所述OTA镜像,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统;所述第二值用于指示所述摄像机在重启后进入所述摄像机的主系统。
本实施例提供的方案可以应用于任意一个具备双系统或双内核的摄像机;示例性的,所述摄像机具体可以为网络摄像机(IP Camera)。上述摄像机的主系统包含所述摄像机的第一内核(Kernel),所述摄像机的备系统包含所述摄像机的第二内核。
在执行S101之前,所述摄像机还可以在开机之后通过运行引导加载程序(U-BOOT,Universal Boot Loader)来引导启动所述摄像机的主系统,具体如图2a所示,包括以下处理:
S201:所述摄像机启动后通过运行U-BOOT读取环境变量分区的数据。
这里,所述摄像机启动可以指的是所述摄像机上电。触发所述摄像机上电的操作可能包括:用户按下摄像机的开机按键,又或者,摄像机响应于重启指令重新启动。
所述引导加载程序(U-BOOT)是用于嵌入式系统的引导加载程序。
其中,所述环境变量分区具体可以指的是BOOT-ENV(引导-环境变量)分区。所述环境变量分区可以是所述摄像机的内存(或存储器)中的一个分区。
所述环境变量分区的数据可以包括以下至少之一:启动标志的当前取值、传递给内核(主系统或备系统)的启动参数(bootargs)、自动启动时执行的命令(bootcmd)、当前重启次数等等。
需要理解的是,在环境变量分区即BOOT-ENV(引导-环境变量)分区中存储的数据还可以包括其他数据,比如:执行自动启动的等候秒数(bootdelay)、以太网接口的掩码(netmask)、缺省的下载文件(bootfile)、本地IP地址(ipaddr)、服务器端的IP地址(serverip)等等,只是在本实施例中不对其不进行穷举。
另外,在执行S201的处理中,所述方法还包括:
在所述环境变量分区发生损坏的情况下,所述U-BOOT将所述启动标志的当前取值确定为默认值;其中,所述默认值为第二值;
所述U-BOOT判断所述摄像机的主系统的启动次数是否超过预设主系统启动限定次数;
在所述摄像机的主系统的启动次数超过预设主系统启动限定次数的情况下,所述U-BOOT将所述启动标志的当前取值设置为第一值,并在所述摄像机重启后通过所述U-BOOT引导启动所述摄像机的备系统;
所述摄像机的备系统基于所述URL信息从服务器下载OTA镜像并将下载的所述OTA镜像保存在RAM中,基于下载的所述OTA镜像对所述摄像机的主系统进行升级;
在所述摄像机的备系统完成对所述摄像机的主系统的升级的情况下,所述摄像机的备系统将所述启动标志的当前取值设置为第二值,清除所述RAM中保存的所述OTA镜像并控制所述摄像机重启,以使得所述摄像机重启之后进入升级成功后的主系统。
另外,所述方法还包括:在所述摄像机的主系统的启动次数未超过预设主系统启动限定次数的情况下,所述U-BOOT引导启动所述摄像机的主系统。
具体如图2b所示,可以包括:
S2001:所述U-BOOT判断所述环境变量分区是否发生损坏,若未发生损坏,则执行S201;否则,执行S2002;
S2002:所述U-BOOT将所述启动标志的当前取值确定为默认值;其中,所述默认值为第二值;
S2003:所述U-BOOT判断所述摄像机的主系统的启动次数是否超过预设主系统启动限定次数;若超过,则执行S2004;否则,执行S2007;
其中,所述主系统的启动次数可以指的是本次升级处理中摄像机重启后进入所述摄像机的主系统的次数;所述主系统的启动次数可以保存在数据分区中或者可以保存在环境变量分区中,这里不对其保存位置进行限定。另外,可以在确定完成本次升级所述摄像机的主系统的情况下,将所述主系统的启动次数清零。所述预设主系统启动限定次数可以根据实际情况设置,比如可以是5次、3次或更多或更少,这里不做穷举。
S2004:所述U-BOOT将所述启动标志的当前取值设置为第一值,并在所述摄像机重启后通过所述U-BOOT引导启动所述摄像机的备系统;
其中,所述U-BOOT将所述启动标志的当前取值设置为第一值,并在所述摄像机重启后通过所述U-BOOT引导启动所述摄像机的备系统,具体可以包括:所述U-BOOT将所述启动标志的当前取值设置为第一值并控制所述摄像机重启;在所述摄像机重启后通过运行所述U-BOOT读取所述启动标志的当前取值为第一值的情况下,所述U-BOOT引导启动所述摄像机的备系统。
S2005:所述摄像机的备系统基于所述URL信息从服务器下载OTA镜像并将下载的所述OTA镜像保存在RAM中,基于下载的所述OTA镜像对所述摄像机的主系统进行升级;
S2006:在所述摄像机的备系统完成对所述摄像机的主系统的升级的情况下,所述摄像机的备系统将所述启动标志的当前取值设置为第二值,清除所述RAM中保存的所述OTA镜像并控制所述摄像机重启,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统,然后结束本次FOTA处理。
S2007:所述U-BOOT引导启动所述摄像机的主系统;进一步地,在所述U-BOOT确定引导启动所述摄像机的主系统之后执行S101。
在这种情况下,由于所述环境变量分区发生损坏,U-BOOT可以在确定所述摄像机的主系统的启动次数没有超过预设主系统启动限定次数的情况下,直接引导启动所述摄像机的主系统,然后可以执行前述S101。
也就是说,若所述环境变量分区发生损坏,则所述U-BOOT将所述启动标志的当前取值确定为0(即默认值),然后所述U-BOOT尝试启动所述摄像机的主系统。在U-BOOT尝试启动所述摄像机的主系统的处理中,判断所述摄像机的主系统的启动次数是否超过预设主系统启动限定次数,若没有超过,则可以引导启动所述摄像机的主系统,然后执行S101。若超过,则所述U-BOOT将所述启动标志的当前取值设置为第一值并引导启动所述摄像机的备系统,以通过所述摄像机的备系统进行OTA镜像的下载,并根据OTA镜像对所述摄像机的主系统进行升级,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统。
S202:在所述环境变量分区的数据中所包含的启动标志的当前取值为第二值的情况下,所述U-BOOT设置传递给主系统的启动参数以及所述摄像机的主系统启动时执行的命令。
所述启动标志可以用boot_flag来表示,所述启动标志的当前取值用于表示所述摄像机启动后进入主系统或备系统。所述启动标志的当前取值可以为第一值或第二值,其中,所述第一值可以用于表示启动之后进入备系统,所述第二值可以表示启动之后进入主系统;所述第一值以及第二值可以根据实际情况进行设置,举例来说,第一值可以为1,第二值可以为0。
所述传递给内核(主系统或备系统)的启动参数可以表示为bootargs,可以包括以下参数中至少之一:root、console、rootfstype、size等等。其中,root用于指定rootfs的位置,其中,rootfs即根文件系统; rootfstype跟root配合使用,用于指明文件系统的类型,以挂载根文件系统分区; console用于指定串口,比如,“console=tty”表示使用虚拟串口终端设备,“console=ttyS[,options]”表示使用特定的串口ttyS;size表示对应的分区的大小。
所述自动启动时执行的命令可以表示为bootcmd,即自动启动时默认执行的一个或多个命令。
所述U-BOOT设置传递给主系统的启动参数以及所述摄像机的主系统启动时执行的命令具体可以包括:所述引导加载程序(U-BOOT)设置传递给内核的启动参数为主系统的启动参数,设置启动时执行的命令为主系统启动时执行的命令。比如,可以设置传递给内核的启动参数bootargs为A-usrfs,这里A-usrfs来表示所述摄像机的主系统的用户文件系统;以及设置bootcmd为A-kernel,这里A-kernel用于表示所述摄像机的主系统启动时所执行的命令(或可以是至少一条命令)。
本步骤具体可以指的是:所述U-BOOT在boot_flag==0的情况下,设置bootargs为A-usrfs(即主系统的用户文件系统),设置bootcmd为A-kernal(即主系统启动时执行的命令)。
这里,需要指出的是,在执行S202之前,还可以包括:判断所述环境变量分区的数据中所包含的启动标志的当前取值是否为第二值;若启动标志的当前取值是第二值,则执行S202;若启动标志的当前取值不是第二值(或若启动标志的当前取值是第一值),则执行S103。
再进一步来说,若S201中所述摄像机启动为第一次开机或启动,则环境变量分区中保存的启动标志的当前取值可以为默认值,所述默认值为第二值;则本次从所述环境变量分区的数据中所包含的启动标志的当前取值为第二值,然后触发执行S202。若S201中所述摄像机启动为基于上一次所述摄像机的主系统升级异常所触发的摄像机启动(或重启),则在判断所述环境变量分区的数据中所包含的启动标志的当前取值是否为第二值之后,得到的判断结果可能为所述环境变量分区的数据中所包含的启动标志的当前取值为第一值,此时不执行S202,而执行前述步骤S103。
上述S202完成之后,还可以包括:在所述环境变量分区的数据中所包含的当前系统重启次数不小于预设次数门限值的情况下,所述U-BOOT将所述当前系统重启次数清零并设置所述启动标志的当前取值为默认值,控制所述摄像机重启,在所述摄像机重启之后通过所述U-BOOT引导启动所述摄像机的主系统,使得摄像机重启之后进入主系统执行其他业务处理。其中,所述默认值为第二值。也就是说,若重启所述摄像机的次数已经达到预设次数门限值的时候,就不再控制启动所述摄像机的备系统进行升级处理了,而是可以通过设置启动标志的当前取值为第二值(即boot_flag=0),使得摄像机下一次重启之后进入主系统,然后可以执行其他业务处理。
S203:在所述环境变量分区的数据中所包含的当前系统重启次数小于预设次数门限值的情况下,所述U-BOOT引导启动所述摄像机的主系统。
所述当前重启次数用于表示本次启动之前所述摄像机重新启动的次数。所述预设次数门限值可以根据实际情况设置,比如可以设置为5,或者可以设置为6或4,当然还可以设置为其他数值,这里不对其做穷举。
这里,所述U-BOOT引导启动所述摄像机的主系统可以指的是仅启动所述摄像机的主系统且不启动所述摄像机的备系统。
以上在S201中摄像机开机之后若第一次执行升级处理的情况下,则在S202中所述环境变量分区中存储的启动标志的当前取值可以为默认值也就是第二值(即boot_flag=0),进而在S203中U-BOOT会引导启动主系统。
完成上述S203之后,还可以包括:判断本次启动所述摄像机的主系统的内核是否正常,若正常,则执行S101;若异常,则将所述当前重启次数归零,并重新启动所述摄像机。
其中,所述摄像机的主系统的内核可以是所述摄像机的主系统包含的内核,或所述摄像机的主系统对应的内核。所述判断本次启动所述摄像机的主系统的内核是否正常,可以为:所述U-BOOT在启动主系统的内核的过程中,将控制权交给所述主系统的内核之前,查找所述主系统的内核镜像;若查找到所述主系统的所述内核镜像,则确定本次启动所述主系统的内核正常,这种情况下,可以将控制权移交给所述主系统;否则,确定本次启动主系统的内核异常。
上述S101所述摄像机的主系统确定进行FOTA,且所述摄像机的主系统基于URL信息完成下载空中升级OTA镜像的情况下,所述摄像机的主系统将启动标志的当前取值设置为第一值,并保存本次下载所述OTA镜像的所述URL信息,具体可以包括:
所述摄像机的主系统在确定进行FOTA的情况下,所述摄像机的主系统基于所述URL信息从服务器下载OTA镜像,并将下载的所述OTA镜像保存在RAM中;
在所述摄像机的主系统基于所述URL信息从服务器完成下载OTA镜像的情况下,所述摄像机的主系统将启动标志的当前取值设置为第一值并保存在环境变量分区中,以及在数据分区中保存本次下载OTA镜像的所述URL信息、信息摘要算法MD5值、加密后的服务集标识和加密后的密码。
其中,所述摄像机的主系统确定进行FOTA的方式可以包括:在所述摄像机的主系统基于当前系统版本号确定自身是否需要更新的情况下,若所述摄像机的主系统接收到终端设备发来的升级指令,则所述摄像机的主系统确定进行FOTA。其中,所述摄像机的主系统可以接收到网络侧服务器发来的新的系统版本号,所述摄像机的主系统可以根据所述新的系统版本号来判断所述当前系统版本号是否低于所述新的系统版本号;若低于,则确定自身需要更新,否则,确定自身不需要更新。
结合图3,对上述S101的处理进行详细说明:
S301:所述摄像机的主系统挂载根文件系统。
这里,所述根文件系统可以表示为A_rootfs。需要指出的是,本实施例提供的方案中,主系统以及备系统共享同一个根文件系统。
所述根文件系统是内核(所述摄像机的主系统)启动时所挂载的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。详细来说,所述根文件系统不仅具有普通文件系统的存储数据文件的功能,相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。
在完成S301之后,所述摄像机的主系统还会基于启动标志的当前取值确定所要挂载的用户文件系统。比如,当启动标志的当前取值为第二值,即boot_flag=0的时候,确定挂载主系统的用户文件系统(即挂载A-usrfs),然后执行S302。
S302:所述摄像机的主系统判断是否正常挂载主系统的用户文件系统,若不正常,则将当前重启次数加1并重启所述摄像机;若正常,则执行S303。
这里,所述挂载所述主系统的用户文件系统(即A-usrfs)是否正常的判断方式可以包括:进行挂载所述主系统的用户文件系统的操作处理中,会获取到挂载的状态返回信息;若该状态返回信息指示挂载正常,则确定该主系统的用户文件系统挂载正常。
其中,所述主系统的用户文件系统可以表示为A-usrfs;该A-usrfs可以是从所述环境变量分区的数据中获取。
完成上述S302之后,还可以包括:在所述摄像机的主系统基于当前系统版本号确定自身需要更新的情况下,若所述摄像机的主系统接收到终端设备发来的升级指令,则所述摄像机的主系统确定进行FOTA。具体如以下S303~S304的说明:
S303:所述摄像机的主系统基于当前系统版本号判断自身是否需要更新,若需要,则执行S304;否则,正常进行其他业务的处理,本实施例不对其进行穷举。
这里,所述摄像机的主系统可以先读取所述当前系统版本号,并获取网络侧服务器推送的最新系统版本号;基于所述当前系统版本号是否低于所述服务器推送的最新系统版本号,来确定是否需要对自身更新或升级。
进一步地,在当前系统版本号低于所述服务器推送的所述最新系统版本号的情况下,所述摄像机的主系统确定需要对当前系统进行更新或升级;否则,所述摄像机的主系统确定不需要对当前系统进行更新或升级。
S304:所述摄像机的主系统判断是否接收到终端设备发来的升级指令,若接收到,则所述摄像机的主系统确定进行FOTA,执行S305;否则,开启升级进程等待升级。
这里,所述摄像机的主系统判断是否接收到终端设备发来的升级指令可以包括:判断是否接收到终端设备的摄像机应用发来的升级指令。
进一步来说,在前述S303的处理中,若所述摄像机的主系统确定需要对当前系统进行更新或升级,所述摄像机的主系统还可以向所述终端设备发送当前存在新的系统版本的通知。相应的,所述终端设备可以在接收到所述当前存在新的系统版本的通知的情况下,在所述摄像机应用的相关界面中展示所述当前存在新的系统版本的通知,以使得用户可以在所述摄像机应用的相关界面中看到该通知;用户可以根据实际情况选择是否现在需要更新,若用户确定进行系统版本的更新,可以通过点击所述摄像机应用的相关界面中的目标按钮以生成所述升级指令,进而所述终端设备的所述摄像机应用发送所述升级指令至所述摄像机。在所述摄像机一侧,执行S304,即判断是否接收到所述终端设备发来的升级指令,若接收到,则执行S305,若未接收到,则结束处理。
本步骤中所述摄像机的主系统可以通过升级进程(或称为专门用于升级的进程)持续等待,直至接收到所述终端设备的所述摄像机应用发来的升级指令为止,并且所述摄像机的主系统可以通过其他进程执行其他的正常的业务处理。其中,所述升级进程与所述其他进程不同。也就是说,所述摄像机的主系统在当前没有接收到升级指令的情况下,可以开始执行其他业务处理,并开启一个升级进程持续等待升级指令。
S305:所述摄像机的主系统基于所述URL信息从服务器下载OTA镜像并将下载的所述OTA镜像保存在RAM中,判断所述OTA镜像是否正常下载完成,若下载异常或下载失败,则控制所述摄像机进行重启,并清除所述RAM中保存的所述OTA镜像;否则,执行S306。
具体的,可以包括:所述摄像机的主系统基于服务集标识(SSID)和密码(PWD)进行联网设置;
在联网成功的情况下,所述摄像机的主系统开始基于URL信息从服务器下载OTA镜像,并将OTA镜像保存在随机存取存储器(RAM,Random Access Memory)中;
在所述摄像机的主系统完成下载所述OTA镜像的情况下,基于MD5值对所述OTA镜像进行校验,若校验通过,则确定完成OTA镜像下载,执行S306;若校验失败,则确定所述OTA镜像下载异常或下载失败,控制所述摄像机进行重启。
其中,所述在联网成功的情况下,所述摄像机的主系统开始基于URL信息从服务器下载OTA镜像,并将OTA镜像保存在随机存取存储器(RAM,Random Access Memory)中,还可以包括:所述摄像机的主系统开始基于URL信息从服务器下载OTA镜像的同时,开启计时器;判断所述计时器的计时时长是否超过计时超时门限值、且是否基于URL信息连接到服务器;若所述计时器的计时时长超过计时超时门限值、且未基于URL信息连接到服务器,则确定所述OTA镜像下载异常或下载失败,控制所述摄像机进行重启;若所述计时器的计时时长未超过计时超时门限值、且基于URL信息连接到服务器,则继续基于URL信息从服务器下载OTA镜像,并将OTA镜像保存在随机存取存储器(RAM,Random Access Memory)中。
所述计时超时门限值可以表示为“timeout”,可以从数据分区中获取该参数,该计时超时门限值可以用于表征所述摄像机的主系统基于MD5和URL信息连接服务器的最大时长。比如,可以在当前的计时时长大于计时超时门限值且未连接到服务器进行OTA镜像的下载的处理的情况下,可以确认当前OTA镜像的下载失败或下载异常。MD5值则用于对OTA镜像进行校验。
所述OTA镜像未正常下载完成、下载失败或下载异常的原因,还可以包括网络故障,比如网络连接中断、路由器断电等;还可以包括摄像机本身故障,比如摄像机断电等等。由于通常所述OTA镜像为正常下载完成的原因并非由于系统本身或OTA镜像的原因,因此本次处理中不需要将启动标志的当前取值进行重新设置,只需要采用默认值即第二值(即boot_flag=0)即可,如此可以在本次重启再次进入主系统之后,执行前述S301~S305的处理。此时再次执行S305的下载所述OTA镜像的处理,可以是:基于所述MD5以及URL信息重新下载所述OTA镜像;又或者,可以是断点续传,比如基于所述MD5和URL信息在原有的已下载的部分OTA镜像的基础上继续下载新的部分OTA镜像,直至完成下载。
S306:所述摄像机的主系统将启动标志的当前取值设置为第一值并保存,以及保存所述URL信息、所述MD5值、加密后的服务集标识和加密后的密码。
具体的,所述摄像机的主系统将启动标志的当前取值设置为第一值并保存在所述环境变量分区中;所述摄像机的主系统在所述数据分区中更新保存所述MD5值和所述URL信息;所述摄像机的主系统将服务集标识和密码分别进行加密得到加密后的服务集标识和加密后的密码并保存在所述数据分区中。
上述将启动标志的当前取值设置为第一值,可以指的是:将所述启动标志的当前取值设置为1。其中,在所述环境变量分区中仅保存启动标志的当前取值,即所述环境变量分区中上一次保存的启动标志的取值被替换为当前取值。
所述摄像机的主系统在数据分区保存或更新所述MD5值以及URL信息,以便重启之后所述摄像机的备系统再次基于MD5值以及URL信息重新下载升级软件包。
所述服务集标识可以表示为SSID(Service Set Identifier),密码可以表示为pwd或passwd,即所述摄像机的主系统将所述SSID以及pwd加密后保存在所述数据分区中。其中,对SSID以及pwd进行加密可以采用AES-CBC-128的加密方式,采用的密钥可以为所述摄像机的MAC(Media Access Control,媒体存取控制)地址。
这里,在确定下载OTA镜像完成的情况下,将所述启动标志的当前取值设置为第一值以使得下次重启之后进入备系统,是由于在后续基于OTA镜像进行主系统的刷写的处理中,一旦出现异常可能无法及时的修改启动标志的取值,而导致刷写异常的情况下,再次重启仍然进入主系统进行刷写而无法进入备系统,如此就可能会出现由于主系统的问题导致的重启多次仍然无法完成刷写的问题。本实施例提供的方案可以在确认下载OTA镜像完成之后就将所述启动标志的当前取值设置为第一值,可以在主系统的刷写处理中一旦出现异常,再次重启之后可以进入备系统以再次下载OTA镜像并对主系统进行刷写,从而可以保证即便主系统出现问题,也可以通过备系统完成对主系统的升级处理,保证了主系统的升级成功率以及处理效率。
在所述摄像机的主系统完成S101之后,也就是所述摄像机的主系统完成从服务器下载OTA镜像并且将所述启动标志的当前取值设置为第一值之后,所述摄像机的主系统可以开始基于所述OTA镜像对自身进行升级(或刷写)。
进一步地,上述S101完成之后,还可以包括:在所述摄像机的主系统基于所述OTA镜像升级成功的情况下,所述摄像机的主系统将所述启动标志的当前取值设置为第二值,控制所述摄像机重启;在所述摄像机重启之后通过所述U-BOOT引导启动所述摄像机的升级成功后的主系统,然后结束本次升级处理。
也就是说,本实施例提供的方案,可以在所述主系统完成自身的升级的情况下,不需要启动备系统,因此,相对于相关技术中无论主系统是否发生异常都启动备系统对主系统进行升级的方案来说,本实施例提供的方案可以尽可能的减少由升级主系统所带来的摄像机重启的次数,进而能够降低对主系统进行升级所消耗的时间,保证了主系统的升级效率。还需要指出,在上述处理中,在控制所述摄像机重启的同时,还会清除所述RAM中保存的OTA镜像,以减少对RAM存储空间的占用。
具体的,所述摄像机的主系统基于所述OTA镜像对自身进行升级或刷写的处理可以包括:所述摄像机的主系统读取头信息,基于所述头信息获取待刷写的区域;所述摄像机的主系统基于所述OTA镜像对所述待刷写的区域进行升级;所述摄像机的主系统判断基于所述OTA镜像对所述待刷写的区域进行升级的处理是否正常,若正常,则将所述启动标志的当前区域更新为第二值,控制所述摄像机重启,在所述摄像机重启之后通过所述U-BOOT引导启动所述摄像机的升级成功后的主系统;否则,执行S102,即在所述摄像机的主系统基于所述OTA镜像进行升级的过程中出现异常的情况下,所述摄像机的主系统控制所述摄像机重启。这里,在控制所述摄像机重启的时候,还可以清除所述RAM中保存的OTA镜像。
其中,所述头信息可以表示为head information。所述头信息中可以包括:多个分区中各个分区分别对应的版本号。所述基于所述头信息获取待刷写的区域具体可以包括:获取OTA镜像中包含的各个分区所分别对应的新版本号;比对所述头信息中各个分区的版本号是否低于OTA镜像中的各个分区所分别对应的新版本号;在所述头信息中的一个或多个目标分区的版本号低于OTA镜像中的一个或多个目标分区所对应的新版本号的情况下,确定所述一个或多个目标分区为待刷写的区域。
这里,需要指出的是,所述一个或多个目标分区可以指的是所述头信息中全部分区中的至少之一。所述目标分区用于表征其版本号低于OTA镜像中的该分区的新版本号的任意一个分区。比如,在所述头信息中可以包括全部能够升级的分区的标识及其对应的版本号,假设头信息中有三个分区的信息,分别为分区1、分区2和分区3,以及分区1的版本号为1.0,分区2的版本号为1.1,分区3的版本号为2.0;下载的OTA镜像中包含了分区1的新版本号为1.0,分区2的新版本号为2.0,分区3的版本号为3.0。则可以确定分区2以及分区3的新版本号是高于头信息中分区2和分区3的版本号的,因此,确定分区2和分区3为本次升级的待刷写的区域。
结合图4举例来说,头信息中包含的字段有关键词(KEY)、值(value),头信息中的关键词可以包括有“version”、“head_version”、“OTA”、“kernel”、“rootfs”、“usrfs”、“soundfs”、“MD5”、“tac”等等。其中,“version”如图4中备注所示的表示当前OTA镜像系统版本号,如图4所示,version的值为“3.0.0-0042”; “head_version”表示如图4中备注所示的当前头部信息版本号,如图4所示,head_version的值为“1.0.0”;“OTA”表示如图4中备注所示的当前OTA镜像里的分区信息,如图4所示,OTA中可以包括“kernel,rootfs、usrfs、soundfs”四个分区;“kernel”表示如图4中备注所示的当前OTA镜像里kernel(分区)版本号,如图4所示kernel的版本号为“1.0.0”;“rootfs”表示如图4中备注所示的当前OTA镜像里根文件系统版本号,如图4所示rootfs的版本号为“1.0.0”;“usrfs”表示如图4中备注所示的当前OTA镜像里用户文件系统版本号,如图4所示,usrfs的版本号为“1.0.0”;“soundfs”表示如图4中备注所示的当前OTA镜像里声音文件系统版本号,如图4所示,soundfs的版本号为“1.0.0”;“MD5”的取值为除头部信息之外的MD5值;图4中tac表示产品唯一标识,其取值可以为图4中所示的“112233445566”。
所述摄像机的主系统判断基于所述OTA镜像对所述待刷写的区域进行升级的处理是否正常,若正常,则在刷写完成的情况下,将所述启动标志的当前取值更新为第二值,然后控制所述摄像机重启(此时可以同时清除RAM中保存的所述OTA镜像);其中,所述第二值为0。也就是说,在确定基于OTA镜像对主系统中的待刷写区域完成刷写(即升级)的情况下,可以将启动标志的当前取值设置为0,以使得所述摄像机重启之后运行引导加载程序U-BOOT读取所述启动标志的当前取值为第二值,所述U-BOOT引导启动所述摄像机的主系统,进而所述摄像机的主系统启动后可以执行正常业务处理流程。
在执行S102在所述摄像机的主系统基于所述OTA镜像进行升级的过程中出现异常的情况下,所述摄像机的主系统控制所述摄像机重启时,所述方法还包括:清除所述RAM中保存的所述OTA镜像。
上述实施例中说明了,在摄像机开机或重新启动之后,通过U-BOOT读取启动标志的当前取值以进入主系统之后,由主系统执行的相关处理;在上述处理中,只要主系统完成OTA镜像的下载并保存在RAM中后,就会将启动标志的当前取值设置为1(即设置boot_flag=1);在所述摄像机的主系统确定基于所述OTA镜像对所述待刷写的区域进行升级的处理发生异常之后,控制摄像机进行重启并清除所述RAM中保存的所述OTA镜像;所述摄像机重新启动并运行引导加载程序U-BOOT读取所述启动标志的当前取值为第一值,所述U-BOOT引导启动所述摄像机的备系统。
这里,由于在执行S101的处理中已经将启动标志的当前取值设置为第一值,并且在S102中确定主系统的升级出现异常,因此在S103中所述摄像机重启之后,所述摄像机通过运行U-BOOT可以读取环境变量分区中保存的启动标志的当前取值不再是默认值(即0)而是上一次处理中设置的第一值(即1),进而U-BOOT在基于所述启动标志确定本次所要启动的系统为备系统的情况下,可以引导启动所述摄像机的备系统。
S103中,在所述摄像机重新启动后运行引导加载程序U-BOOT读取所述启动标志的当前取值为第一值的情况下,所述U-BOOT引导启动所述摄像机的备系统,具体可以包括:所述摄像机重启后通过运行U-BOOT读取环境变量分区的数据;在所述环境变量分区的数据中所包含的启动标志的当前取值为第一值的情况下,所述U-BOOT设置传递给所述摄像机的备系统的启动参数以及所述摄像机的备系统启动时执行的命令;在所述环境变量分区的数据中所包含的当前系统重启次数小于预设次数门限值的情况下,所述U-BOOT引导启动所述摄像机的备系统。
这里,所述环境变量分区及其存储的数据、所述当前系统重启次数以及预设次数门限值在前述实施例已经详细说明,这里不再赘述。
所述U-BOOT设置传递给所述摄像机的备系统的启动参数以及所述摄像机的备系统启动时执行的命令可以包括:所述引导加载程序(U-BOOT)设置传递给内核的启动参数为备系统的启动参数,设置启动时执行的命令为备系统启动时执行的命令。比如,可以设置bootargs为B-usrfs,这里B-usrfs来表示所述摄像机的备系统的用户文件系统;以及设置bootcmd为B-kernel,这里B-kernel用于表示所述摄像机的备系统启动时所执行的命令(或可以是至少一条命令)。
所述U-BOOT设置传递给所述摄像机的备系统的启动参数以及所述摄像机的备系统启动时执行的命令,具体可以指的是:所述U-BOOT在boot_flag==1的情况下,设置bootargs为B-usrfs(即备系统的用户文件系统),设置bootcmd为B-kernal(即备系统启动时执行的命令)。
在所述U-BOOT引导启动所述摄像机的备系统之后,执行S104:所述摄像机的备系统基于保存的所述URL信息从服务器重新下载OTA镜像,基于重新下载的OTA镜像对所述摄像机的主系统进行升级。其中,所述MD5值以及URL信息为所述摄像机的主系统基于信息摘要算法MD5值以及统一资源定位器URL信息从服务器下载OTA镜像完成之后,在所述数据分区中保存的信息。
由于前述S101的处理中,所述摄像机的主系统将下载的OTA镜像保存在RAM中,在执行S102的所述摄像机的主系统控制所述摄像机重启之后,所述RAM会释放存储空间,也就是会删除当前保存的OTA镜像。因此,在执行S104的处理时,所述摄像机的备系统会再次基于保存的所述URL信息从服务器重新下载OTA镜像,基于重新下载的OTA镜像对所述摄像机的主系统进行升级。
本实施例在摄像机的主系统或摄像机的备系统下载OTA镜像的时候均会将OTA镜像保存在RAM中,并且可以在摄像机发生重启的时候释放RAM中保存的OTA镜像,从而可以避免相关技术中将OTA镜像保存在硬盘空间中所带来的长时间占用过多存储空间的问题。
具体的,S104中的所述摄像机的备系统基于保存的所述URL信息从服务器重新下载OTA镜像,基于重新下载的OTA镜像对所述摄像机的主系统进行升级,可以包括:所述摄像机的备系统基于服务集标识(SSID)和密码(PWD)进行联网设置;在联网成功的情况下,所述摄像机的备系统开始基于URL信息从服务器下载OTA镜像,并将OTA镜像保存在随机存取存储器(RAM,Random Access Memory)中;在所述摄像机的备系统完成下载所述OTA镜像的情况下,基于MD5值对所述OTA镜像进行校验,若校验通过,则确定完成OTA镜像下载,基于重新下载的OTA镜像对所述摄像机的主系统进行升级;若校验失败,则确定所述OTA镜像下载异常或下载失败,控制所述摄像机进行重启,此时重启后,还会通过U-BOOT引导进入所述摄像机的备系统。
其中,所述在联网成功的情况下,所述摄像机的备系统开始基于URL信息从服务器下载OTA镜像,并将OTA镜像保存在随机存取存储器(RAM,Random Access Memory)中,还可以包括:所述摄像机的备系统开始基于URL信息从服务器下载OTA镜像的同时,开启计时器;判断所述计时器的计时时长是否超过计时超时门限值、且是否基于URL信息连接到服务器;若所述计时器的计时时长超过计时超时门限值、且未基于URL信息连接到服务器,则确定所述OTA镜像下载异常或下载失败,控制所述摄像机进行重启;若所述计时器的计时时长未超过计时超时门限值、且基于URL信息连接到服务器,则继续基于URL信息从服务器下载OTA镜像,并将OTA镜像保存在随机存取存储器(RAM,Random Access Memory)中。
所述服务集标识以及密码的获取方式可以为:所述摄像机的备系统从数据分区中读取加密后的服务集标识和加密后的密码;基于密钥以及对应的解密方式对所述加密后的服务集标识和加密后的密码进行解密,得到所述服务集标识以及密码。
所述基于重新下载的OTA镜像对所述摄像机的主系统进行升级,具体可以指的是:所述摄像机的备系统基于所述重新下载的OTA镜像对所述摄像机的主系统的待刷写的区域进行刷写。其中,关于所述主系统的待刷写的区域的确定方式可以是基于头信息确定的,关于如何基于头信息确定所述主系统的待刷写的区域在前述实施例已经说明,这里不做重复说明。
进一步地,所述基于所述重新下载的OTA镜像对所述摄像机的主系统的待刷写的区域进行刷写,可以包括:基于所述摄像机的主系统的待刷写的区域从所述重新下载的OTA镜像中获取所述待刷写的区域所对应的升级包(或子OTA镜像),进而,将所述待刷写区域所对应的升级包(或子OTA镜像)写入所述待刷写区域。
另外,本实施例提供的方法,还可以包括以下至少之一:
所述摄像机的备系统进行联网设置时,所述摄像机的备系统控制所述摄像机的显示部件以至少两种颜色交替的方式闪烁;
所述摄像机的备系统基于重新下载的OTA镜像对所述摄像机的主系统进行升级时,所述摄像机的备系统控制所述摄像机的显示部件以目标颜色闪烁。
其中,所述摄像机的显示部件可以为设置在所述摄像机的预设位置的一个或多个灯;所述显示部件中的灯,可以是LED灯。所述摄像机的预设位置可以根据实际情况设置,比如可以是摄像机的镜头上方,或者是摄像机的镜头下方等等,这里不对其进行限定。
举例来说,该显示部件可以由一个LED灯组成,该LED灯可以在不同时间段分别发出黄色和蓝色的光;相应的,所述以至少两种颜色交替的方式可以指的是:在任意一个发光周期的第一时间段发出黄色的光,在任意一个发光周期的第二时间段发出蓝色的光,以此周期性的循环;其中,发光周期的时长可以根据实际情况设置,比如可以为2秒钟,所述第一时间段与第二时间段的时长可以相同可以不同、且第一时间段与第二时间段之间无重合时间,比如一个发光周期为2秒钟,第一时间段为发光周期的第1秒,第二时间段为发光周期的第2秒。再比如,该显示部件可以由2个LED等组成,其中第一LED灯用于发出黄色的光,第二LED灯用于发出蓝色的光,并且,第一LED灯在发光周期的第一时间段发出黄色的光,在发光周期的第二时间段不发光,第二LED灯在发光周期的第一时间段不发光,在第二时间段发出蓝色的光。当然,前述仅为示例性说明,实际处理中,还可以控制LED灯以交替的方式分别发出其他两种颜色的光,只是不做穷举。
这里,在重新下载OTA镜像的过程中,所述摄像机的备系统可以持续控制所述摄像机的显示部件以至少两种颜色交替的方式闪烁。其中,目标颜色可以为黄色,所述闪烁也可以为周期性的,比如可以是每2秒为一个周期,且显示部件在每一个周期内的前1秒发出黄色的光,后1秒不发光。如此,通过显示部件在不同阶段展示不同样式的光,以使得售后或维修人员直观的获取当前摄像机升级的状态。
关于所述摄像机的备系统控制所述摄像机的显示部件停止以目标颜色闪烁的时间,可以是:在所述摄像机的备系统确定完成对所述摄像机的主系统的升级的时刻;又或者,可以是:在所述摄像机的备系统确定对所述摄像机的主系统的升级出现异常的时刻。
在完成前述S104之后,执行S105:在所述摄像机的备系统完成对所述摄像机的主系统的升级的情况下,所述摄像机的备系统将所述启动标志的当前取值设置为第二值,清除所述RAM中保存的重新下载的所述OTA镜像并控制所述摄像机重启,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统;所述第二值用于指示所述摄像机在重启后进入所述摄像机的主系统。
其中,所述第二值可以为0,也就是在所述摄像机重启后运行U-BOOT读取启动标志的当前取值为第二值,所述U-BOOT引导启动所述摄像机的主系统,在本次所述摄像机的主系统启动之后处于完成升级的状态,所述摄像机的主系统可以执行其他业务处理流程。
进一步地,还可以包括:在所述摄像机的备系统对主系统的升级出现异常的情况下,所述摄像机的备系统控制所述摄像机进行重启,以在所述摄像机重启后再次进入所述摄像机的备系统,使得所述摄像机的备系统基于保存的所述URL信息从服务器重新下载OTA镜像并将重新下载的所述OTA镜像保存在RAM中,基于重新下载的OTA镜像对所述摄像机的主系统再次进行升级。也就是说,由于没有对启动标志的当前取值进行修改,即所述启动标志的当前取值仍然为第一值,因此,在重启之后,U-BOOT通过读取该启动标志的当前取值来确定进入备系统,然后重新执行上述S103的处理。
由于在环境变量分区中保存有当前重启次数,因此,在任意一次重启之后运行U-BOOT,所述U-BOOT确定当前重启次数超过了重启次数门限值的情况下,可以将启动标志的当前取值直接修改为第二值,以使得摄像机重启之后进入主系统,执行其他业务的处理,以避免在无法完成升级的时候,循环的进入升级刷写的处理所带来的对其他业务处理的影响。
本实施例前述提供的系统升级方法的处理逻辑可以部署在摄像机中,本实施例的一种示例性场景中摄像机可以与网络侧的服务器进行通信连接并进行OTA镜像的传输,摄像机还可以与终端设备连接。结合图5对本实施例的使用场景进行示例性说明,在图5中,包括一个摄像机501、服务器503;终端设备可以是图5中示意出的手机5021、平板电脑5022、笔记本5023等等,当然,所述终端设备还可以包括其他类型,比如台式电脑等等,这里不进行穷举。结合图5对本实施例提供的方案进行示例性说明:
在一种示例中、所述摄像机501的主系统确定需要进行FOTA后,若接收到手机5021发来的升级指令,则所述摄像机501的主系统基于URL信息从服务器503完成下载空中升级OTA镜像的情况下,所述摄像机501的主系统将启动标志的当前取值设置为第一值,并保存本次下载所述OTA镜像的所述URL信息;在所述摄像机501的主系统基于所述OTA镜像进行升级的过程中出现异常的情况下,所述摄像机501的主系统控制所述摄像机重启;在所述摄像机501重新启动后运行引导加载程序U-BOOT读取所述启动标志的当前取值为第一值的情况下,所述U-BOOT引导启动所述摄像机的备系统;所述摄像机501的备系统基于保存的所述URL信息从服务器503重新下载OTA镜像,基于重新下载的OTA镜像对所述摄像机的主系统进行升级;在所述摄像机501的备系统完成对所述摄像机的主系统的升级的情况下,所述摄像机501的备系统将所述启动标志的当前取值设置为第二值,控制所述摄像机重启;所述第二值用于指示所述摄像机在重启后进入所述摄像机的主系统。
另一种示例中、所述摄像机501的接收到服务器(可以与下载OTA镜像的服务器503相同或不同)下发的升级指令,则所述摄像机501的主系统基于URL信息从服务器503完成下载空中升级OTA镜像的情况下,所述摄像机501的主系统将启动标志的当前取值设置为第一值,并保存本次下载所述OTA镜像的所述URL信息;在所述摄像机501的主系统基于所述OTA镜像进行升级的过程中出现异常的情况下,所述摄像机501的主系统控制所述摄像机重启;在所述摄像机501重新启动后运行引导加载程序U-BOOT读取所述启动标志的当前取值为第一值的情况下,所述U-BOOT引导启动所述摄像机的备系统;所述摄像机501的备系统基于保存的所述URL信息从服务器503重新下载OTA镜像,基于重新下载的OTA镜像对所述摄像机的主系统进行升级;在所述摄像机501的备系统完成对所述摄像机的主系统的升级的情况下,所述摄像机501的备系统将所述启动标志的当前取值设置为第二值,控制所述摄像机重启;所述第二值用于指示所述摄像机在重启后进入所述摄像机的主系统。
可见,通过采用本实施例提供的方案,可以在摄像机的主系统完成下载OTA镜像之后,就将启动标志的当前取值设置为第一值,即设置为下一次启动进入备系统;进而在所述摄像机的主系统升级出现异常的情况下,重启摄像机后基于启动标志的当前取值以进入备系统,在所述摄像机的备系统启动之后,可以根据上次保存的URL等信息完成OTA镜像的下载,并对主系统进行升级。如此,就可以保证主系统升级异常的时候,由备系统对主系统完成升级的处理,从而保证了主系统的升级成功率以及效率;并且本实施例提供的方案中所述备系统仅用于在主系统异常的情况下,下载OTA镜像并基于所述OTA镜像对所述主系统进行升级处理,如此可以尽可能的节省备系统的存储空间,而该备系统节省的存储空间可以释放给主系统,可见采用本实施例提供的方案可以在保证了主系统的升级成功率以及效率的基础上,保证最大可能的为摄像机的主系统提供存储空间。
另外,本实施例提供的方案,相对于无论主系统是否发生异常均由备系统升级的方案来说,由于本方案只有在主系统升级异常的情况下,才会启动备系统进行主系统的升级,而在主系统未发生异常的情况下,可以直接通过主系统完成升级,因此能够尽可能的减少摄像机的重启次数,从而节省了重启摄像机所带来的时间浪费,以保证了主系统的升级速度和升级效率。
最后,本实施例提供的方案,相对于先完成升级包(或OTA镜像)的下载之后,再控制主系统进行升级,若主系统异常再由备系统直接获取预先保存的升级包(或OTA镜像)对主系统进行升级的方案来说,由于本实施例提供的方案中主系统或备系统下载的OTA镜像均保存在RAM中,并且在重启的时候会清除该RAM保存的OTA镜像,从而能够在保证了主系统升级成功率的同时,尽可能的减少硬盘存储空间的占用问题。
本公开第二方面实施例提供了一种系统升级方法,如图6所示,包括:
在所述摄像机启动(或重启)之后,首先运行U-BOOT,在所述引导加载程序U-BOOT中执行的处理包括以下步骤10~步骤70:
步骤10:摄像机的U-BOOT初始化看门狗(watchdog)。
上述看门狗可以为硬件看门狗。所述初始化看门狗的处理可以包括:设置超时时间。
硬件看门狗是利用一个定时器电路,初始化看门狗即设置超时时间,然后其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(或称为“喂狗”),因此程序正常工作时,定时器总不能溢出前述设置的超时时间,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。
步骤20:所述摄像机的U-BOOT读取环境变量分区的数据。
所述环境变量分区可以表示为BOOT-ENV。
其中,所述BOOT-ENV分区中存储的环境变量数据可以包括以下至少之一:启动标志、传递给内核的启动参数(bootargs)、自动启动时执行的命令(bootcmd)、当前重启次数等等。关于所述BOOT-ENV分区中包含的数据以及各个数据的相关说明与前述实施例相同,因此不做重复说明。
步骤30:所述摄像机的U-BOOT判断所述环境变量分区的数据中所包含的启动标志的当前取值是否为0,若是,则执行步骤40,否则,执行步骤50。
启动标志可以表示为boot_flag。
本步骤具体可以包括:所述摄像机的U-BOOT判断boot_flag是否为0,若是,则执行步骤40,否则,执行步骤50。
步骤40:所述摄像机的U-BOOT确定本次启动进入主系统,所述U-BOOT设置传递给主系统的启动参数以及所述摄像机的主系统启动时执行的命令,然后执行步骤60。
具体可以为:所述摄像机的U-BOOT确定本次启动进入主系统,设置bootargs(即传递给主系统的启动参数)为A-usrfs,设置bootcmd(即所述摄像机的主系统启动时执行的命令)为A-kernel。这里A-usrfs来表示所述摄像机的主系统的用户文件系统;这里A-kernel用于表示所述摄像机的主系统启动时所执行的命令(或可以是至少一条命令)。
步骤50:所述摄像机的U-BOOT确定本次启动进入备系统,所述U-BOOT设置传递给备系统的启动参数以及所述摄像机的备系统启动时执行的命令,然后执行步骤60。
具体可以为:所述摄像机的U-BOOT确定本次启动进入备系统,设置bootargs(传递给备系统的启动参数)为B-usrfs,设置bootcmd(备系统启动时执行的命令)为B-kernel。这里B-usrfs来表示所述摄像机的备系统的用户文件系统;B-kernel用于表示所述摄像机的备系统启动时所执行的命令(或可以是至少一条命令)。
步骤60:所述摄像机的U-BOOT判断当前重启次数是否小于预设次数门限值,若小于,则执行步骤70;否则,将所述当前重启次数归零并设置启动标志为默认值0,返回执行步骤10。
所述当前重启次数可以表示为retry;本步骤具体可以包括:判断retry是否小于预设次数门限值,若小于,则执行步骤70;否则,将所述retry归零并设置boot_flag为默认值(即0),返回执行步骤10。
所述预设次数门限值可以设置为5。
步骤70:在所述启动标志的当前取值为0的情况下,所述摄像机的U-BOOT判断本次启动主系统的内核是否正常,若正常,则引导启动所述摄像机的主系统,执行步骤81;在所述启动标志的当前取值为1的情况下,所述摄像机的U-BOOT判断本次启动备系统的内核是否正常,若正常,引导启动所述摄像机的备系统,执行步骤91;若本次启动备系统的内核异常或本次启动主系统的内核异常,则所述摄像机的U-BOOT将所述当前重启次数归零并设置启动标志为默认值0,返回执行步骤10。
也就是说,在boot_flag=0的情况下,所述摄像机的U-BOOT判断本次启动主系统的内核是否正常,若正常,则引导启动主系统,执行步骤81;在boot_flag=1的情况下,所述摄像机的U-BOOT判断本次启动备系统的内核是否正常,若正常,则引导启动备系统,执行步骤91;若本次启动备系统的内核异常、或本次启动主系统的内核异常,则将所述retry归零并设置boot_flag为默认值(即0),返回执行步骤10。
其中,所述判断本次启动系统的内核(即Kernel)是否正常的方式可以是:所述U-BOOT在启动系统的内核的过程中,将控制权交给所述内核之前,查找内核镜像;若查找到所述内核镜像,则确定本次启动系统的内核正常,这种情况下,可以将控制权(比如CPU的控制权)移交给系统的内核;否则,确定本次启动系统的内核异常。
再具体的,可以是:
在boot_flag=0的情况下,若查找到主系统的内核镜像,则确定主系统的内核正常,引导启动所述摄像机的主系统,执行步骤81,否则,则将所述retry归零并设置boot_flag为默认值(即0),返回执行步骤10;
在boot_flag=1的情况下,若查找到备系统的内核镜像,则确定备系统的内核正常,引导启动所述摄像机的备系统,执行步骤91,否则,则将所述retry归零并设置boot_flag为默认值(即0),返回执行步骤10。
关于所述摄像机的主系统的处理,可以如图6中的步骤81~步骤89所示,具体包括:
步骤81:所述摄像机的主系统挂载根文件系统。
其中,所述根文件系统可以表示为A-rootfs。
步骤82:所述摄像机的主系统判断挂载主系统的用户文件系统是否正常,若不正常,则将当前重启次数加1并重启,返回执行步骤10;若正常,则执行步骤83。
比如,可以为:所述摄像机的主系统判断挂载A-usrfs是否正常,若不正常,则将当前重启次数加1并重启;若正常,则执行步骤83。其中,所述A-usrfs如前所示表示摄像机的主系统的用户文件系统。
步骤83:所述摄像机的主系统检查当前系统版本号以确定是否需要更新,若需要更新,则执行步骤84;若不需要更新,则所述摄像机的主系统执行其他业务处理。
步骤84:所述摄像机的主系统判断是否接收到终端设备发来的升级指令,若接收到,则所述摄像机的主系统确定进行FOTA,执行步骤85;若未接收到,则所述摄像机的主系统开启升级进程以等待升级。
这里,所述判断是否接收到终端设备发来的升级指令可以包括:所述摄像机的主系统判断是否接收到终端设备的摄像机应用发来的升级指令。
所述开启升级进程以等待升级,可以指的是:所述摄像机的主系统可以通过升级进程持续等待,直至接收到所述终端设备的所述摄像机应用发来的升级指令为止,并且所述摄像机的所述摄像机的主系统可以通过其他进程执行其他的正常的业务处理。其中,所述升级进程与所述其他进程不同。也就是说,摄像机在当前没有接收到升级指令的情况下,可以开始执行其他业务处理,并开启一个升级进程持续等待升级指令以重复执行步骤84。
步骤85:所述摄像机的主系统基于统一资源定位器URL信息从服务器下载OTA镜像并保存在随机存取存储器RAM中,判断下载OTA镜像是否正常完成,若正常完成,则执行步骤86;若未正常完成,则控制所述摄像机进行重启,返回执行步骤10。
也就是说,所述摄像机的主系统基于URL信息从服务器下载OTA镜像,以及基于及时超时门限值、MD5值等信息验证下载是否正常完成。
其中,所述MD5以及URL信息可以存储在数据分区。所述计时超时门限值可以表示为“timeout”,可以从数据分区中获取该参数,该计时超时门限值可以用于表征所述摄像机的主系统基于MD5和URL信息连接服务器的最大时长,比如,可以在当前的计时时长大于计时超时门限值且未连接到服务器进行OTA镜像的下载的处理的情况下,可以确认当前OTA镜像的下载失败或下载异常。
其中,所述OTA镜像未正常完成下载的原因,可以包括网络故障,比如网络连接中断、路由器断电等;还可以包括摄像机本身故障,比如摄像机断电等等。
由于通常所述OTA镜像为正常下载完成的原因并非由于系统本身,因此可以在本次重启之后,重新执行前述步骤10的处理。
在本次进行摄像机重启的处理中,还可以包括:清除RAM中当前保存的OTA镜像。
步骤86:所述摄像机的主系统设置所述启动标志的当前取值为1并保存在环境变量分区中,以及在数据分区中保存本次下载OTA镜像的所述URL信息、信息摘要算法MD5值、加密后的服务集标识和加密后的密码。
比如,所述摄像机的主系统可以设置启动标志的当前取值boot_flag=1,并保存加密后的服务集标识(SSID)、加密后的密码(pwd)、URL以及MD5。
具体的,设置boot_flag=1并保存在环境变量分区;保存SSID、pwd的时候还可以采用MAC地址作为密钥对SSID以及PWD进行加密并保存在数据分区;以及将URL和MD5均保存在数据分区中。
步骤87:所述摄像机的主系统基于头信息获取待刷写的区域,并基于所述OTA镜像对所述待刷写的区域进行升级。
这里关于如何基于头信息获取待刷写区域与前述第一方面实施例相同,因此不做重复说明。
步骤88:所述摄像机的主系统判断升级的处理是否成功,若成功,则执行步骤89;否则,直接控制摄像机进行重启并清除所述RAM中保存的所述OTA镜像,返回执行步骤10。
具体的,所述摄像机的主系统判断基于所述OTA镜像对所述待刷写的区域进行刷写或升级处理是是否成功,若成功,则执行步骤89,否则,直接控制摄像机进行重启并清除所述RAM中保存的所述OTA镜像,返回执行步骤10。
步骤89:所述摄像机的主系统设置所述启动标志的当前取值为0,然后控制摄像机进行重启并清除所述RAM中保存的所述OTA镜像,返回执行步骤10。
也就是,所述摄像机的主系统设置boot_flag=0,然后控制摄像机进行重启并清除所述RAM中保存的所述OTA镜像,返回执行步骤10。其中,所述设置boot_flag=0之后还可以将boot_flag=0保存在环境变量分区。
在确定基于新的OTA镜像对主系统中的待刷写区域完成刷写的情况下,可以将启动标志的当前取值设置为0,以使得重启之后进入主系统。
关于所述摄像机的备系统的处理,可以如图6中的步骤91~步骤95所示,具体包括:
步骤91:所述摄像机的备系统进行联网设置,并控制所述摄像机的显示部件以至少两种颜色交替的方式闪烁。
具体的,所述摄像机的备系统读取SSID以及pwd以进行联网设置,控制所述摄像机的显示部件以黄蓝灯交替的方式闪烁。本步骤的详细处理与前述第一方面实施例相同,因此不做赘述。
步骤92:所述摄像机的备系统基于保存的所述URL信息从服务器重新下载OTA镜像并将重新下载的所述OTA镜像保存在随机存取存储器RAM中,基于重新下载的OTA镜像对所述摄像机的主系统进行升级。
步骤93:所述摄像机的备系统控制显示部件以目标颜色闪烁。
目标颜色可以为黄色。上述步骤93与步骤92可以同时执行。
步骤94:所述摄像机的备系统判断对所述摄像机的主系统的升级是否完成,若完成,则执行步骤95;否则,控制所述摄像机重启并清除所述RAM中保存的重新下载的所述OTA镜像,返回执行步骤10。
步骤95:所述摄像机的备系统在完成对所述摄像机的主系统的升级的情况下,修改所述启动标志的当前取值为0,清除所述RAM中保存的重新下载的所述OTA镜像并控制所述摄像机重启,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统。
也就是说,在完成对所述摄像机的主系统的升级的情况下,所述摄像机的备系统修改boot_flag=0,然后控制摄像机进行重启。其中,所述设置boot_flag=0之后还可以将boot_flag=0保存在环境变量分区。
上述摄像机进行重启之后,均返回执行步骤10。
需要指出,本实施例中上述各个步骤的具体处理与第一方面实施例中的具体处理的详细说明相同,这里不对其进行重复说明。
本实施例还可以包括以下处理:所述摄像机的U-BOOT判断所述环境变量分区是否发生损坏,若未发生损坏,则执行所述步骤20;
否则,在所述环境变量分区发生损坏的情况下,所述摄像机的U-BOOT将所述启动标志的当前取值确定为默认值0;所述摄像机的U-BOOT判断所述摄像机的主系统的启动次数是否超过预设主系统启动限定次数;
若所述摄像机的主系统的启动次数未超过预设主系统启动限定次数,则所述U-BOOT引导启动所述摄像机的主系统,执行所述步骤81;
若所述摄像机的主系统的启动次数超过预设主系统启动限定次数,则在所述摄像机的主系统的启动次数超过预设主系统启动限定次数的情况下,所述摄像机的U-BOOT将所述启动标志的当前取值设置为1,并在所述摄像机重启后通过所述U-BOOT引导启动所述摄像机的备系统;
所述摄像机的备系统基于所述URL信息从服务器下载OTA镜像并将下载的所述OTA镜像保存在RAM中,基于下载的所述OTA镜像对所述摄像机的主系统进行升级;在所述摄像机的备系统完成对所述摄像机的主系统的升级的情况下,所述摄像机的备系统将所述启动标志的当前取值设置为0,清除所述RAM中保存的所述OTA镜像并控制所述摄像机重启,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统,结束本次FOTA处理。
这里,在所述摄像机的主系统的启动次数未超过预设主系统启动限定次数的情况下,所述U-BOOT引导启动所述摄像机的主系统之后,还可以直接执行步骤83。
可见,通过采用本实施例提供的方案,可以在摄像机的主系统完成下载OTA镜像之后,就将启动标志的当前取值设置为第一值,即设置为下一次启动进入备系统;进而在所述摄像机的主系统升级出现异常的情况下,重启摄像机后基于启动标志的当前取值以进入备系统,在所述摄像机的备系统启动之后,可以根据上次保存的URL等信息完成OTA镜像的下载,并对主系统进行升级。如此,就可以保证主系统升级异常的时候,由备系统对主系统完成升级的处理,从而保证了主系统的升级成功率以及效率;并且本实施例提供的方案中所述备系统仅用于在主系统异常的情况下,下载OTA镜像并基于所述OTA镜像对所述主系统进行升级处理,如此可以尽可能的节省备系统的存储空间,而该备系统节省的存储空间可以释放给主系统,可见采用本实施例提供的方案可以在保证了主系统的升级成功率以及效率的基础上,保证最大可能的为摄像机的主系统提供存储空间。
另外,本实施例提供的方案,相对于无论主系统是否发生异常均由备系统升级的方案来说,由于本方案只有在主系统升级异常的情况下,才会启动备系统进行主系统的升级,而在主系统未发生异常的情况下,可以直接通过主系统完成升级,因此能够尽可能的减少摄像机的重启次数,从而节省了重启摄像机所带来的时间浪费,以保证了主系统的升级效率。
最后,本实施例提供的方案,相对于先完成升级包(或OTA镜像)的下载之后,再控制主系统进行升级,若主系统异常再由备系统直接获取预先保存的升级包(或OTA镜像)对主系统进行升级的方案来说,由于本实施例提供的方案中主系统或备系统下载的OTA镜像均保存在RAM中,并且在重启的时候会清楚该RAM保存的OTA镜像,从而能够在保证了主系统升级成功率的同时,尽可能的减少硬盘存储空间的占用问题。
本公开实施例第三方面还提供了一种摄像机,如图7所示,所述摄像机包括:
主系统模块1001,用于确定进行固件空中升级FOTA,且基于统一资源定位器URL信息完成下载空中升级OTA镜像的情况下,将启动标志的当前取值设置为第一值,并保存本次下载所述OTA镜像的所述URL信息;其中,所述启动标志的当前取值用于指示摄像机在重启后进入主系统或备系统;所述第一值用于指示所述摄像机在重启后进入备系统;基于所述OTA镜像进行升级的过程中出现异常的情况下,控制所述摄像机重启;
引导加载模块1002,用于在所述摄像机重新启动后读取所述启动标志的当前取值为第一值的情况下,引导启动备系统;其中,所述备系统仅在所述主系统基于所述OTA镜像进行升级的过程中出现异常的情况下被启动,用于对所述主系统完成升级;
备系统模块1003,用于基于保存的所述URL信息从服务器重新下载OTA镜像并将重新下载的所述OTA镜像保存在随机存取存储器RAM中,基于重新下载的OTA镜像对所述主系统进行升级;完成对所述摄像机的主系统的升级的情况下,所述摄像机的备系统将所述启动标志的当前取值设置为第二值,控制所述摄像机重启并清除所述RAM中保存的重新下载的所述OTA镜像,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统;所述第二值用于指示所述摄像机在重启后进入主系统。
在一种实施方式中,所述主系统模块1001,用于在基于所述OTA镜像升级成功的情况下,将所述启动标志的当前取值设置为第二值,控制所述摄像机重启;所述引导加载模块1002,用于在所述摄像机重启之后引导启动升级成功后的主系统。
在一种实施方式中,所述引导加载模块1002,用于所述摄像机启动后读取环境变量分区的数据;在所述环境变量分区的数据中所包含的启动标志的当前取值为第二值的情况下,设置传递给主系统的启动参数以及所述主系统启动时执行的命令;在所述环境变量分区的数据中所包含的当前系统重启次数小于预设次数门限值的情况下,引导启动所述主系统。
在一种实施方式中,所述引导加载模块1002,用于在所述环境变量分区发生损坏的情况下,将所述启动标志的当前取值确定为默认值;其中,所述默认值为第二值;判断所述主系统的启动次数是否超过预设主系统启动限定次数;在所述主系统的启动次数超过预设主系统启动限定次数的情况下,将所述启动标志的当前取值设置为第一值,并在所述摄像机重启后引导启动所述备系统;
所述备系统模块1003,用于基于所述URL信息从服务器下载OTA镜像并将下载的所述OTA镜像保存在RAM中,基于下载的所述OTA镜像对所述主系统进行升级;在完成对所述主系统的升级的情况下,将所述启动标志的当前取值设置为第二值,清除所述RAM中保存的所述OTA镜像并控制所述摄像机重启,以使得所述摄像机重启之后进入升级成功后的主系统。
在一种实施方式中,所述引导加载模块1002,用于在所述主系统的启动次数未超过预设主系统启动限定次数的情况下,引导启动所述主系统。
在一种实施方式中,所述引导加载模块1002,用于在所述环境变量分区的数据中所包含的当前系统重启次数不小于预设次数门限值的情况下,将所述当前系统重启次数清零并设置所述启动标志的当前取值为默认值,控制所述摄像机重启,在所述摄像机重启之后引导启动所述主系统;其中,所述默认值为第二值。
在一种实施方式中,所述主系统模块1001,用于在确定进行FOTA的情况下,基于所述URL信息从服务器下载OTA镜像,并将下载的所述OTA镜像保存在RAM中;基于所述URL信息从服务器完成下载OTA镜像的情况下,将启动标志的当前取值设置为第一值并保存在环境变量分区中,以及在数据分区中保存本次下载OTA镜像的所述URL信息、信息摘要算法MD5值、加密后的服务集标识和加密后的密码。
在一种实施方式中,所述主系统模块1001,用于在所述主系统基于所述OTA镜像进行升级的过程中出现异常的情况下,控制所述摄像机重启时,清除所述RAM中保存的所述OTA镜像。
在一种实施方式中,所述主系统模块1001,用于基于当前系统版本号判断自身是否需要更新;基于当前系统版本号确定自身是否需要更新的情况下,若接收到终端设备发来的升级指令,则确定进行FOTA。
在一种实施方式中,所述引导加载模块1002,用于所述摄像机重启后读取环境变量分区的数据;在所述环境变量分区的数据中所包含的启动标志的当前取值为第一值的情况下,设置传递给所述备系统的启动参数以及所述备系统启动时执行的命令;在所述环境变量分区的数据中所包含的当前系统重启次数小于预设次数门限值的情况下,引导启动所述备系统。
在一种实施方式中,所述备系统模块1003,用于执行以下至少之一:
进行联网设置时,控制显示部件以至少两种颜色交替的方式闪烁;
基于重新下载的OTA镜像对所述主系统进行升级的过程中,控制显示部件以目标颜色闪烁。
在一种实施方式中,所述备系统模块1003,用于在对主系统的升级出现异常的情况下,控制所述摄像机重启,以在所述摄像机重启后再次进入所述备系统,使得所述备系统基于保存的所述URL信息从服务器重新下载OTA镜像并将重新下载的所述OTA镜像保存在RAM中,基于重新下载的OTA镜像对所述主系统再次进行升级。
可见,通过采用本实施例提供的方案,可以在摄像机的主系统完成下载OTA镜像之后,就将启动标志的当前取值设置为第一值,即设置为下一次启动进入备系统;进而在所述摄像机的主系统升级出现异常的情况下,重启摄像机后基于启动标志的当前取值以进入备系统,在所述摄像机的备系统启动之后,可以根据上次保存的URL等信息完成OTA镜像的下载,并对主系统进行升级。如此,就可以保证主系统升级异常的时候,由备系统对主系统完成升级的处理,从而保证了主系统的升级成功率以及效率;并且本实施例提供的方案中所述备系统仅用于在主系统异常的情况下,下载OTA镜像并基于所述OTA镜像对所述主系统进行升级处理,如此可以尽可能的节省备系统的存储空间,而该备系统节省的存储空间可以释放给主系统,可见采用本实施例提供的方案可以在保证了主系统的升级成功率以及效率的基础上,保证最大可能的为摄像机的主系统提供存储空间。
另外,本实施例提供的方案,相对于无论主系统是否发生异常均由备系统升级的方案来说,由于本方案只有在主系统升级异常的情况下,才会启动备系统进行主系统的升级,而在主系统未发生异常的情况下,可以直接通过主系统完成升级,因此能够尽可能的减少摄像机的重启次数,从而节省了重启摄像机所带来的时间浪费,以保证了主系统的升级效率。
最后,本实施例提供的方案,相对于先完成升级包(或OTA镜像)的下载之后,再控制主系统进行升级,若主系统异常再由备系统直接获取预先保存的升级包(或OTA镜像)对主系统进行升级的方案来说,由于本实施例提供的方案中主系统或备系统下载的OTA镜像均保存在RAM中,并且在重启的时候会清楚该RAM保存的OTA镜像,从而能够在保证了主系统升级成功率的同时,尽可能的减少硬盘存储空间的占用问题。
本公开实施例的第四方面提供了一种摄像机,所述摄像机包括:
引导加载模块1002,用于初始化看门狗;读取环境变量分区的数据;判断所述环境变量分区的数据中所包含的启动标志的当前取值是否为0,若启动标志的当前取值是0,则确定本次启动进入主系统,设置传递给主系统的启动参数以及所述摄像机的主系统启动时执行的命令,然后判断当前重启次数是否小于预设次数门限值,若当前重启次数小于预设次数门限值,则判断本次启动主系统的内核是否正常,若正常,则引导启动所述摄像机的主系统,若不正常则将所述当前重启次数归零并设置启动标志为默认值0,返回执行初始化看门狗的处理;若当前重启次数不小于预设次数门限值,则将所述当前重启次数归零并设置启动标志为默认值0,返回执行初始化看门狗的处理;若启动标志的当前取值是1,则确定本次启动进入备系统,设置传递给备系统的启动参数以及所述摄像机的备系统启动时执行的命令,然后判断当前重启次数是否小于预设次数门限值,若当前重启次数小于预设次数门限值,则判断本次启动备系统的内核是否正常,若正常,引导启动所述摄像机的备系统,若不正常则将所述当前重启次数归零并设置启动标志为默认值0,返回执行初始化看门狗的处理;若当前重启次数不小于预设次数门限值,则将所述当前重启次数归零并设置启动标志为默认值0,返回执行初始化看门狗的处理;
主系统模块1001,用于挂载根文件系统;判断挂载主系统的用户文件系统是否正常,若不正常,则将当前重启次数加1并重启摄像机;若正常,则检查当前系统版本号以确定是否需要更新,若不需要更新,则执行其他业务处理,若需要更新,则判断是否接收到终端设备发来的升级指令,若未接收到,则开启升级进程以等待升级;若接收到,则确定进行FOTA,基于统一资源定位器URL信息从服务器下载OTA镜像并保存在随机存取存储器RAM中,判断下载OTA镜像是否正常完成,若未正常完成,则控制所述摄像机进行重启,若正常完成,则设置所述启动标志的当前取值为1并保存在环境变量分区中,以及在数据分区中保存本次下载OTA镜像的所述URL信息、信息摘要算法MD5值、加密后的服务集标识和加密后的密码;基于头信息获取待刷写的区域,并基于所述OTA镜像对所述待刷写的区域进行升级;判断升级的处理是否成功,若未成功则直接控制摄像机进行重启并清除所述RAM中保存的所述OTA镜像,若成功则设置所述启动标志的当前取值为0,然后控制摄像机进行重启并清除所述RAM中保存的所述OTA镜像;
备系统模块1003,用于进行联网设置,并控制所述摄像机的显示部件以至少两种颜色交替的方式闪烁;基于保存的所述URL信息从服务器重新下载OTA镜像并将重新下载的所述OTA镜像保存在随机存取存储器RAM中,基于重新下载的OTA镜像对所述主系统进行升级;控制显示部件以目标颜色闪烁;判断对所述摄像机的主系统的升级是否完成,若完成,则修改所述启动标志的当前取值为0,清除所述RAM中保存的重新下载的所述OTA镜像并控制所述摄像机重启,以使得所述摄像机重启之后进入所述摄像机的升级成功后的主系统;否则,控制所述摄像机重启并清除所述RAM中保存的重新下载的所述OTA镜像。
可见,通过采用本实施例提供的方案,可以在摄像机的主系统完成下载OTA镜像之后,就将启动标志的当前取值设置为第一值,即设置为下一次启动进入备系统;进而在所述摄像机的主系统升级出现异常的情况下,重启摄像机后基于启动标志的当前取值以进入备系统,在所述摄像机的备系统启动之后,可以根据上次保存的URL等信息完成OTA镜像的下载,并对主系统进行升级。如此,就可以保证主系统升级异常的时候,由备系统对主系统完成升级的处理,从而保证了主系统的升级成功率以及效率;并且本实施例提供的方案中所述备系统仅用于在主系统异常的情况下,下载OTA镜像并基于所述OTA镜像对所述主系统进行升级处理,如此可以尽可能的节省备系统的存储空间,而该备系统节省的存储空间可以释放给主系统,可见采用本实施例提供的方案可以在保证了主系统的升级成功率以及效率的基础上,保证最大可能的为摄像机的主系统提供存储空间。
另外,本实施例提供的方案,相对于无论主系统是否发生异常均由备系统升级的方案来说,由于本方案只有在主系统升级异常的情况下,才会启动备系统进行主系统的升级,而在主系统未发生异常的情况下,可以直接通过主系统完成升级,因此能够尽可能的减少摄像机的重启次数,从而节省了重启摄像机所带来的时间浪费,以保证了主系统的升级效率。
最后,本实施例提供的方案,相对于先完成升级包(或OTA镜像)的下载之后,再控制主系统进行升级,若主系统异常再由备系统直接获取预先保存的升级包(或OTA镜像)对主系统进行升级的方案来说,由于本实施例提供的方案中主系统或备系统下载的OTA镜像均保存在RAM中,并且在重启的时候会清楚该RAM保存的OTA镜像,从而能够在保证了主系统升级成功率的同时,尽可能的减少硬盘存储空间的占用问题。
需要说明的是,本公开实施例中对各功能单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本公开的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本公开各个实施例提供的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
图8为根据本公开一实施例的摄像机的结构框图。如图8所示,包括:存储器1110和处理器1120,存储器1110内存储有可在处理器1120上运行的计算机程序。存储器1110和处理器1120的数量可以为一个或多个。存储器1110可以存储一个或多个计算机程序,当该一个或多个计算机程序被该摄像机执行时,使得该摄像机执行上述方法实施例提供的方法。
该摄像机还包括:
通信接口1130,用于与外界设备进行通信,进行数据交互传输。
如果存储器1110、处理器1120和通信接口1130独立实现,则存储器1110、处理器1120和通信接口1130可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent Interconnect,PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture ,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1110、处理器1120及通信接口1130集成在一块芯片上,则存储器1110、处理器1120及通信接口1130可以通过内部接口完成相互间的通信。
本公开实施例还提供一种计算机可读存储介质,其存储有计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行上述方法实施例提供的系统升级方法。
本公开实施例还提供一种计算机程序产品,所述计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的系统升级方法。
本公开实施例还提供一种芯片,所述芯片与存储器耦合,所述芯片用于实现上述方法实施例提供的系统升级方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic Random Access Memory ,DRAM) 、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct RAMBUS RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、蓝牙、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))或半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。值得注意的是,本公开提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本公开实施例的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本公开的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本公开实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本公开实施例的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
以上所述仅为本公开的示例性实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。