系统启动方法、装置、嵌入式设备以及可读存储介质与流程

文档序号:19249967发布日期:2019-11-27 20:05阅读:176来源:国知局
系统启动方法、装置、嵌入式设备以及可读存储介质与流程

本申请涉及通信领域,具体而言,涉及一种系统启动方法、装置、嵌入式设备以及可读存储介质。



背景技术:

嵌入式设备被广泛应用在工业制造、过程控制、通讯、仪器仪表、航空航天及消费量产品等领域。为了提高嵌入式设备的可靠性,通常在嵌入式设备中会采用双系统。在设备上烧录两份镜像系统,一旦某一个系统发生故障,无法启动,嵌入式设备会自动切换到另一系统。

然而,两份镜像系统占用的存储空间较大,而嵌入式设备的存储空间通常有限,因此对于大部分嵌入式设备而言,无法存储两份镜像系统,使得嵌入式设备的可靠性较低。



技术实现要素:

本申请实施例的目的在于提供一种系统启动方法、装置、嵌入式设备以及可读存储介质,用以改善现有技术中嵌入式设备的可靠性较低的问题。

第一方面,本申请实施例提供了一种系统启动方法,应用于嵌入式设备,所述方法包括:判断系统启动标识是否为第一值,其中,所述第一值表征系统的原始数据能正常启动;若所述系统启动标识不是所述第一值,从服务器获取所述系统的完整数据,并用所述完整数据覆盖所述系统的原始数据;将所述系统启动标识置为所述第一值,并使用所述完整数据启动所述系统。

系统启动标识不是第一值,意味着系统的原始数据出错而导致系统无法正常启动,因此,可以从服务器获取系统的完整数据并替换掉原始数据,从而可以覆盖掉原本原始数据中的错误,使系统可以正常启动。本申请实施例与现有技术相比,在不存储两个镜像系统的情况下依然可以提高嵌入式设备的可靠性。

在一个可能的设计中,所述从服务器获取所述系统的完整数据,包括:从所述嵌入式设备自身的存储空间获取修复工具的第一存储地址,其中,所述第一存储地址存储所述修复工具的用于修复系统的数据信息;根据所述用于修复系统的数据信息,从所述服务器获取所述系统的完整数据。

嵌入式设备通过运行修复工具获得用于修复系统的数据信息,然后根据用于修复系统的数据信息来从服务器获取到系统的完整数据。

在一个可能的设计中,所述用于修复系统的数据信息包括域名系统dns地址;所述根据所述用于修复系统的数据信息,从服务器获取所述系统的完整数据,包括:对dns地址进行解析,获得所述服务器的ip地址;根据所述服务器的ip地址,从所述服务器获取所述系统的完整数据。

用于修复系统的数据信息可以包括域名系统(domainnamesystem,简称dns)地址,嵌入式设备对dns地址进行解析,获得服务器的互联网协议地址(internetprotocoladdress,简称ip地址),然后根据服务器的ip地址访问服务器,从而获取系统的完整数据。由于服务器的ip地址可以会发生变化,因此,使用dns对服务器的域名进行解析获得服务器的ip地址,可以实现在服务器的ip地址发生变化时依然可以找到服务器,进一步提高了嵌入式设备的可靠性。

在一个可能的设计中,所述用于修复系统的数据信息包括动态主机设置协议dhcp服务器的地址;所述根据所述用于修复系统的数据信息,从服务器获取所述系统的完整数据,包括:根据所述dhcp服务器的地址,从所述dhcp服务器获得dhcpoption43信息;从所述dhcpoption43信息获得接入控制器ac的地址;根据所述ac的地址,从所述ac获取所述系统的完整数据。

若嵌入式设备与存储有系统的完整数据的服务器处于三层网络时,嵌入式设备无法通过广播的方式找到服务器,因此,可以先从动态主机设置协议(dynamichostconfigurationprotocol,简称dhcp)服务器获得dhcpoption43信息,然后在根据dhcpoption43信息获得服务器的地址,再从服务器获得系统的完整数据,实现了嵌入式设备与服务器处于三层网络时,依然可以准确地从服务器获取系统的完整数据,提高嵌入式设备运行的可靠性。

在一个可能的设计中,所述根据所述用于修复系统的数据信息,从服务器获取所述系统的完整数据,包括:从所述用于修复系统的数据信息中获得所述服务器的地址;根据所述服务器的地址,从所述服务器获取所述系统的完整数据。

嵌入式设备直接存储服务器的ip地址,在需要获取系统的完整数据时,可直接访问服务器,获取系统的完整数据的速度更快。

在一个可能的设计中,在所述判断系统启动标识是否为第一值之后,所述方法还包括:若所述系统启动标识为所述第一值,根据所述系统的原始数据尝试正常启动系统,并将所述系统启动标识置为第二值,其中,所述第二值表征系统的原始数据无法正常启动;判断系统能否正常启动;若系统能正常启动,将所述系统启动标识由所述第二值置为所述第一值。

将系统启动标识先置为第二值,并在确定系统可以正常启动之后再置为第一值,可以确保系统启动标识反映的是真实的系统能否正常启动的情况。

在一个可能的设计中,所述判断系统能否正常启动之后,所述方法还包括:若系统无法正常启动,重新执行判断系统启动标识是否为第一值。

若系统无法正常启动时,跳转到步骤:判断系统启动标识是否为第一值。由于之前已经将系统启动标识置为第二值,因此,此处判断系统启动标识是否为第一值时,会进入系统启动标识不是第一值的分支执行步骤,确保在系统启动出现故障时,嵌入式设备可以较好地进行系统的修复。

在一个可能的设计中,所述根据所述系统的原始数据尝试正常启动系统,包括:从所述嵌入式设备自身的存储空间获取系统的第二存储地址,其中,所述第二存储地址存储所述系统的原始数据;读取所述原始数据以尝试正常启动系统。

嵌入式设备可以从自身的存储空间获得系统的第二存储地址,然后从第二存储地址开始读取数据,以尝试根据系统的原始数据启动系统。

第二方面,本申请实施例提供了一种系统启动装置,所述装置包括:启动标识判断模块,用于判断系统启动标识是否为第一值,其中,所述第一值表征系统的原始数据能正常启动;完整数据获取模块,用于当所述系统启动标识不是所述第一值时,从服务器获取所述系统的完整数据,并用所述完整数据覆盖所述系统的原始数据;系统启动模块,用于将所述系统启动标识置为所述第一值,并使用所述完整数据启动所述系统。

在一个可能的设计中,完整数据获取模块包括:修复工具获取子模块,用于从所述嵌入式设备自身的存储空间获取修复工具的第一存储地址,其中,所述第一存储地址存储所述修复工具的用于修复系统的数据信息;数据获取子模块,用于根据所述用于修复系统的数据信息,从所述服务器获取所述系统的完整数据。

在一个可能的设计中,所述数据获取子模块包括:dns解析次子模块,用于对dns地址进行解析,获得所述服务器的ip地址;ip数据次子模块,用于根据所述服务器的ip地址,从所述服务器获取所述系统的完整数据。

在一个可能的设计中,所述数据获取子模块包括:option信息次子模块,用于根据所述dhcp服务器的地址,从所述dhcp服务器获得dhcpoption43信息;ac地址次子模块,用于从所述dhcpoption43信息获得接入控制器ac的地址;ac获取次子模块,用于根据所述ac的地址,从所述ac获取所述系统的完整数据。

在一个可能的设计中,所述数据获取子模块包括:服务器地址次子模块,用于从所述用于修复系统的数据信息中获得所述服务器的地址;完整次子模块,用于根据所述服务器的地址,从所述服务器获取所述系统的完整数据。

在一个可能的设计中,所述装置还包括系统启动模块,用于当所述系统启动标识为所述第一值时,根据所述系统的原始数据尝试正常启动系统,并将所述系统启动标识置为第二值,其中,所述第二值表征系统的原始数据无法正常启动;启动判断模块,用于判断系统能否正常启动;标识置一模块,用于当系统能正常启动时,将所述系统启动标识由所述第二值置为所述第一值。

在一个可能的设计中,所述装置还包括:步骤跳转模块,用于当系统无法正常启动时,重新执行判断系统启动标识是否为第一值。

在一个可能的设计中,所述系统启动模块包括:存储地址获取子模块,用于从所述嵌入式设备自身的存储空间获取系统的第二存储地址,其中,所述第二存储地址存储所述系统的原始数据;原始数据读取子模块,用于读取所述原始数据以尝试正常启动系统。

第三方面,本申请提供一种嵌入式设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述嵌入式设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行第一方面或第一方面的任一可选的实现方式所述的方法。

第四方面,本申请提供一种可读存储介质,该可读存储介质上存储有执行程序,该执行程序被处理器运行时执行第一方面或第一方面的任一可选的实现方式所述的方法。

为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的系统启动方法的流程示意图;

图2为图1中步骤s120的部分步骤的流程示意图;

图3为图2中步骤s220的一种具体实施方式的流程示意图;

图4为图2中步骤s220的另一种具体实施方式的流程示意图;

图5为图2中步骤s220的又一种具体实施方式的流程示意图;

图6为本申请实施例提供的系统启动方法的一种具体实施方式的流程示意图;

图7为本申请实施例提供的系统启动装置的流程示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

实施例

请参见图1,图1示出了本申请实施例提供的系统启动方法的流程示意图,具体包括如下步骤s110至步骤s130:

步骤s110,判断系统启动标识是否为第一值,若否,执行步骤s120。

系统启动标识为反映嵌入式设备的系统能否正常启动的标识符,第一值则表征系统的原始数据能正常启动,第一值可以记为0。系统的原始数据指的是原本就存储在嵌入式设备中的,为了使嵌入式设备的系统正常运行而不可缺少的数据。

在步骤s110中,嵌入式设备可以先进行boot加载,并且在boot启动的过程中可以判断boot_env分区中的系统启动标识是否为第一值。

若系统启动标识不是第一值,则表明嵌入式设备目前无法通过读取系统的原始数据正常启动,则执行步骤s120。

步骤s120,从服务器获取所述系统的完整数据,并用所述完整数据覆盖所述系统的原始数据。

嵌入式设备可以从服务器获取系统的完整数据,并用获取到的系统的完整数据覆盖系统的原始数据。

请参见图2,图2示出了从服务器获取所述系统的完整数据的流程示意图,具体包括如下步骤s210至步骤s220:

步骤s210,从嵌入式设备自身的存储空间获取修复工具的第一存储地址,其中,第一存储地址存储修复工具的用于修复系统的数据信息。

嵌入式设备从自身的存储空间中获得第一存储地址,第一存储地址可以为修复工具的起始地址,嵌入式设备从第一存储地址开始读取数据便可以运行修复工具。修复工具中包括用于修复系统的数据信息。

步骤s220,根据用于修复系统的数据信息,从服务器获取系统的完整数据。

嵌入式设备从自身的存储空间得到修复工具的第一存储地址,然后嵌入式设备通过从第一存储地址开始读取数据,从而运行修复工具。嵌入式设备通过运行修复工具获得用于修复系统的数据信息,然后根据用于修复系统的数据信息来从服务器获取到系统的完整数据。

嵌入式设备可根据用于修复系统的数据信息,来从服务器获取到系统的完整数据,嵌入式设备根据数据信息从服务器获取系统的完整数据的具体实施方式将在下文中详细阐述。

步骤s130,将所述系统启动标识置为所述第一值,并使用所述完整数据启动所述系统。

在利用系统的完整数据覆盖系统的原始数据以后,将系统启动标识置为第一值,然后可以再次执行步骤s110,在判断到系统启动标识为第一值之后,利用覆盖掉原始数据的完整数据启动系统。

本申请实施例可以先判断系统启动标识是否是第一值,若系统启动标识不是第一值,则可以从服务器获取系统的完整数据,并用完整数据覆盖掉系统的原始数据,然后将系统启动标识置为第一值。系统启动标识不是第一值,意味着系统的原始数据出错而导致系统无法正常启动,因此,可以从服务器获取系统的完整数据并替换掉原始数据,从而可以覆盖掉原本原始数据中的错误,使系统可以正常启动。由于修复工具不需要具备完整的系统功能,修复工具可以只具备从服务器获取到系统的完整数据,并将完整数据烧写到系统原始数据所在的存储空间中的功能,因此,修复工具不需要固定的根文件系统,并可通过内核裁剪进一步缩小修复工具的体积,例如,修复工具的大小可控制在500千字节(kilobyte,简称kb)以内,使得本申请实施例与现有技术相比,在不存储两个镜像系统的情况下依然可以提高嵌入式设备的可靠性。

请参见图3,在本申请的一种具体实施方式中,步骤s220具体包括如下步骤s321至步骤s322:

步骤s321,对dns地址进行解析,获得所述服务器的ip地址。

步骤s322,根据服务器的ip地址,从所述服务器获取所述系统的完整数据。

用于修复系统的数据信息包括dns地址,嵌入式设备在获取到dns地址之后,对dns地址进行解析,可以得到服务器的ip地址;然后再根据服务器的ip地址从服务器获得系统的完整数据。

由于服务器的ip地址可以会发生变化,因此,使用dns对服务器的域名进行解析获得服务器的ip地址,可以实现在服务器的ip地址发生变化时依然可以找到服务器,进一步提高了嵌入式设备的可靠性。

请参见图4,在本申请的另一种具体实施方式中,步骤s220具体包括如下步骤s421至步骤s423:

步骤s421,根据所述dhcp服务器的地址,从所述dhcp服务器获得dhcpoption43信息。

步骤s422,从所述dhcpoption43信息获得接入控制器ac的地址。

步骤s423,根据所述ac的地址,从所述ac获取所述系统的完整数据。

用于修复系统的数据信息包括dhcp服务器的地址。存储有系统的完整地址的服务器可以为接入控制器(accesspointcontroller,简称ac),若嵌入式设备与ac处于三层网络,使得嵌入式设备无法通过广播的方式与ac通信时,则嵌入式设备可先根据dhcp服务器的地址与dhcp服务器通信,从dhcp服务器获得dhcpoption43信息,其中,dhcpoption43信息中包括ac的地址。嵌入式设备从dhcpoption43信息中获得ac的地址,然后从ac获取系统的完整数据。

本实施方式实现了嵌入式设备与服务器处于三层网络时,依然可以准确地从服务器获取系统的完整数据,提高嵌入式设备运行的可靠性。

请参见图5,在本申请的又一种具体实施方式中,步骤s220具体包括如下步骤s521至步骤s522:

步骤s521,从所述用于修复系统的数据信息中获得所述服务器的地址。

步骤s522,根据所述服务器的地址,从所述服务器获取所述系统的完整数据。

嵌入式设备中也可以直接存储服务器的ip地址,然后嵌入式设备根据服务器的ip地址,从服务器获取系统的完整数据,嵌入式设备直接存储服务器的ip地址,在需要获取系统的完整数据时,可直接访问服务器,获取系统的完整数据的速度更快。

在一种具体实施方式中,嵌入式设备可以按照步骤s321至步骤s322,步骤s421至步骤s423,步骤s521至步骤s522的先后顺序依次获取包括有系统的完整数据的服务器的地址,直到嵌入式设备得到服务器的地址为止。若上述三种方式均无法获取到服务器的地址,则嵌入式设备可循环上述三种方式,直到嵌入式设备得到服务器的地址为止。

请参见图6,图6示出了本申请实施例提供的系统启动方法的一种具体实施方式,具体包括如下步骤s110至步骤s160:

步骤s110,判断系统启动标识是否为第一值,若是,执行步骤s140;若否,执行步骤s120。

步骤s120,从服务器获取所述系统的完整数据,并用所述完整数据覆盖所述系统的原始数据。

步骤s130,将所述系统启动标识置为所述第一值,并使用所述完整数据启动所述系统。

上述步骤s110至步骤s130在对图1示出的流程示意图进行说明时已进行详细说明,在此便不做赘述。

步骤s140,根据原始数据尝试正常启动系统,并将系统启动标识置为第二值。

根据所述系统的原始数据尝试正常启动系统,包括:从嵌入式设备自身的存储空间获取系统的第二存储地址,其中,第二存储地址存储所述系统的原始数据;读取原始数据以尝试正常启动系统。

嵌入式设备可以从第二存储地址的位置开始读取数据,从而读取系统的原始数据以尝试正常启动系统。

第二值为表征系统的原始数据无法正常启动的值,由于此时还无法得知嵌入式设备是否能依据原始数据启动系统,因此,先将系统启动标识标记为第二值,根据系统能否正常启动再决定是否将系统启动标识调回第一值。第二值可以记为1。可以理解,第一值与第二值的具体数值也可以互换,例如,第一值可记为1,第二值可记为0。第一值与第二值的具体数值不应该理解为是对本申请的限制。

步骤s150,判断系统能否正常启动,若是,执行步骤s160;若否,跳转回步骤s110。

若系统能正常启动,则表明原始数据未出现异常,可执行步骤s160。若系统无法正常启动,则表明原始数据出现异常,则跳转到步骤s110通过判断系统启动标识是否为第一值的方式来执行步骤s120至步骤s130分支,从而修复系统,使得嵌入式设备可较好地对系统进行修复。

步骤s160,将系统启动标识由第二值置为第一值。

在系统启动标识为第一值时,嵌入式设备可以根据系统的原始数据尝试启动系统,同时将系统启动标识先置为第二值。然后判断系统能否被正常启动,若可以正常启动,将第二值重新置为第一值。将系统启动标识先置为第二值,并在确定系统可以正常启动之后再置为第一值,可以确保系统启动标识反映的是真实的系统能否正常启动的情况。

请参见图7,图7示出了本申请实施例提供的系统启动装置的示意性结构框图,该系统启动装置700包括:

启动标识判断模块710,用于判断系统启动标识是否为第一值,其中,所述第一值表征系统的原始数据能正常启动。

完整数据获取模块720,用于当所述系统启动标识不是所述第一值时,从服务器获取所述系统的完整数据,并用所述完整数据覆盖所述系统的原始数据。

系统启动模块730,用于将所述系统启动标识置为所述第一值,并使用所述完整数据启动所述系统。

完整数据获取模块720包括:修复工具获取子模块,用于从所述嵌入式设备自身的存储空间获取修复工具的第一存储地址,其中,所述第一存储地址存储所述修复工具的用于修复系统的数据信息;数据获取子模块,用于根据所述用于修复系统的数据信息,从所述服务器获取所述系统的完整数据。

所述数据获取子模块包括:dns解析次子模块,用于对dns地址进行解析,获得所述服务器的ip地址;ip数据次子模块,用于根据所述服务器的ip地址,从所述服务器获取所述系统的完整数据。

所述数据获取子模块包括:option信息次子模块,用于根据所述dhcp服务器的地址,从所述dhcp服务器获得dhcpoption43信息;ac地址次子模块,用于从所述dhcpoption43信息获得接入控制器ac的地址;ac获取次子模块,用于根据所述ac的地址,从所述ac获取所述系统的完整数据。

所述数据获取子模块包括:服务器地址次子模块,用于从所述用于修复系统的数据信息中获得所述服务器的地址;完整次子模块,用于根据所述服务器的地址,从所述服务器获取所述系统的完整数据。

所述装置还包括:

系统启动模块,用于当所述系统启动标识为所述第一值时,根据所述系统的原始数据尝试正常启动系统,并将所述系统启动标识置为第二值,其中,所述第二值表征系统的原始数据无法正常启动;启动判断模块,用于判断系统能否正常启动;标识置一模块,用于当系统能正常启动时,将所述系统启动标识由所述第二值置为所述第一值。

步骤跳转模块,用于当系统无法正常启动时,重新执行判断系统启动标识是否为第一值。

所述系统启动模块包括:存储地址获取子模块,用于从所述嵌入式设备自身的存储空间获取系统的第二存储地址,其中,所述第二存储地址存储所述系统的原始数据;原始数据读取子模块,用于读取所述原始数据以尝试正常启动系统。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。

本申请还提供一种嵌入式设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述嵌入式设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行方法实施例所述的方法。

本申请还提供一种可读存储介质,该可读存储介质上存储有执行程序,该执行程序被处理器运行时执行方法实施例所述的方法。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1