掌桥专利:专业的专利平台
掌桥专利
首页

程序更新方法、域控制器以及存储介质

文献发布时间:2023-06-19 12:10:19


程序更新方法、域控制器以及存储介质

技术领域

本发明涉及通信技术领域,特别涉及一种程序更新方法、域控制器以及存储介质。

背景技术

程序更新一般需要用到两个程序存储分区,其中一个程序存储分区为当前激活分区,用于存放当前的程序;另一个程序存储分区为非激活区,用于存放更新的程序。图1为现有的程序更新过程中程序存储器分区切换的示意图。如图1所示,程序存储器1一分为二,形成A分区11和B分区12,其中A分区11为非激活分区,B分区12为激活分区。系统开机时从B分区12运行程序,可以一边正常运行程序,一边更新新的程序到A分区11,而不打断当前运行的B分区12中的程序,从而提高了空中(Over-the-Air,OTA)升级的可用性和可靠性。等到A分区11中的程序更新完成后,切换激活标记,重新启动系统,此时会从A分区11启动,B分区12等待更新程序。由于程序存储器只有使用一半,另一半平时不使用,造成了程序存储器的空间浪费。

域控制器的功能较为复杂,其包含微控制单元(Micro Controller Unit,MCU)程序包,微处理器单元(Micro Controller Unit,MPU)基本程序包,MPU核心程序包以及MPU客户应用程序包等等,该些程序包都需要OTA更新。下面以Kernel程序包以及App程序包的更新为例进行说明。图2为现有的kernel以及app程序包更新的示意图。如图2所示,将程序存储器2一分为二,分为分区21和分区22。分区21再分为kernel分区211和app分区212;分区22也再分为kernel分区221和app分区222。当程序存储器2处于起始状态时,分区21中的kernel分区211和app分区212中均未存放程序,而分区22中的kernel分区221存放程序K1和app分区222存放程序A1。系统开机时,分区22切换为激活分区而分区21切换为非激活分区,此时运行分区22中的kernel分区内的程序K1和app分区222内的程序A1;系统接到程序同时更新kernel程序和app程序的指令后,将更新的程序K2存放到分区21中的kernel分区211内,更新的程序A2存放到分区21中的app分区212内。在程序更新过程中,继续运行分区22中的程序K1和A1,即使在程序更新过程中出现异常,例如断电,也不会影响分区22中程序K1和A1的运行。程序更新完毕后,切换激活标记,将分区22切换为非激活分区,而分区21切换为激活分区,系统重新启动后就开始运行分区21中的kernel分区内的程序K2和app分区内的程序A2。当系统接收到更新app程序的指令后,将更新的程序A3存放在分区22中的app分区222内。由于当前分区22中的kernel分区221内存放程序K1,而系统本身最新的kernel分区211中存放程序K2,所以需要将分区21中的kernel分区211内的程序K2复制到分区22中的kernel分区221内,从而实现了分区22中kernel分区221内的程序更新。系统重新启动后,分区21切换为非激活分区,而分区22切换为激活分区,此时系统运行分区22中kernel分区221内的程序K2以及app分区222内的程序A3。这种更新方式需要额外的“同步”步骤,增加了OTA耗时,也降低了存储器的使用寿命。

发明内容

本发明在于提供一种程序更新方法,包括以下步骤:

根据程序包的类型建立多个程序包分区;每个程序包分区包括第一分区和第二分区;

确定每个程序包分区中的第一分区和第二分区其中一者为激活分区;

确定每个程序包分区中的第一分区和第二分区其中另一者为非激活分区;

运行所述激活分区内的程序;

获取升级程序并将升级程序存储于与升级程序的类型相同的程序包分区中的非激活分区内;

将存储有升级程序的非激活分区更新为激活分区。

更进一步的,将存储有升级程序的非激活分区更新为激活分区之后包括:

重新启动系统,运行所有所述激活分区内的程序。

更进一步的,每个程序包分区均包括分区切换标识。

更进一步的,通过分区切换标识将对应的程序包分区中的第一分区和第二分区其中一者切换为激活分区,以及将对应的程序包分区中的第一分区和第二分区其中另一者切换为非激活分区。

更进一步的,每个程序包分区中的激活分区和非激活分区之间的切换是相互独立的。

本申请还提供一种域控制器,包括存储模块和控制模块;

存储模块包括多个程序包分区,每个程序包分区包括第一分区和第二分区;

控制模块用于切换每个程序包分区中的第一分区和第二分区其中一者为激活分区及每个程序包分区中的第一分区和第二分区其中另一者为非激活分区,运行所有激活分区内的程序,以及将升级程序存储于相应的程序包分区中的非激活分区内并将存储有升级程序的非激活分区更新为激活分区。

更进一步的,每个程序包分区均包括分区切换标识。

更进一步的,控制模块用于根据分区切换标识将对应的程序包分区中的第一分区和第二分区其中一者切换为激活分区,以及将对应的程序包分区中的第一分区和第二分区其中另一者切换为非激活分区。

更进一步的,存储模块包括随机存储器,或者只读存储器。

本申请还提供一种存储介质,存储介质存储有多个程序,多个程序可被一个或多个控制模块执行,以实现前述的程序更新方法。

附图说明

图1为现有的程序更新过程中程序存储器分区切换的示意图。

图2为现有的kernel以及app程序包更新的示意图。

图3为本发明一实施例的程序更新的流程图。

图4为本发明一实施例的程序更新的示意图。

图5为本发明一实施例的域控制器的示意图。

具体实施方式

下面将结合附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在不做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。

应当理解,本发明能够以不同形式实施,而不应当解释为局限于这里提出的实施例。相反地,提供这些实施例将使公开彻底和完全,并且将本发明的范围完全地传递给本领域技术人员。在附图中,为了清楚,层和区的尺寸以及相对尺寸可能被夸大,自始至终相同附图标记表示相同的元件。应当明白,当元件或层被称为“在…上”、“与…相邻”、“连接到”或“耦合到”其它元件或层时,其可以直接地在其它元件或层上、与之相邻、连接或耦合到其它元件或层,或者可以存在居间的元件或层。相反,当元件被称为“直接在…上”、“与…直接相邻”、“直接连接到”或“直接耦合到”其它元件或层时,则不存在居间的元件或层。应当明白,尽管可使用术语第一、第二、第三等描述各种元件、部件、区、层和/或部分,这些元件、部件、区、层和/或部分不应当被这些术语限制。这些术语仅仅用来区分一个元件、部件、区、层或部分与另一个元件、部件、区、层或部分。因此,在不脱离本发明教导之下,下面讨论的第一元件、部件、区、层或部分可表示为第二元件、部件、区、层或部分。

空间关系术语例如“在…下”、“在…下面”、“下面的”、“在…之下”、“在…之上”、“上面的”等,在这里可为了方便描述而被使用从而描述图中所示的一个元件或特征与其它元件或特征的关系。应当明白,除了图中所示的取向以外,空间关系术语意图还包括使用和操作中的器件的不同取向。例如,如果附图中的器件翻转,然后,描述为“在其它元件下面”或“在其之下”或“在其下”元件或特征将取向为在其它元件或特征“上”。因此,示例性术语“在…下面”和“在…下”可包括上和下两个取向。器件可以另外地取向(旋转90度或其它取向)并且在此使用的空间描述语相应地被解释。

在此使用的术语的目的仅在于描述具体实施例并且不作为本发明的限制。在此使用时,单数形式的“一”、“一个”和“所述/该”也意图包括复数形式,除非上下文清楚指出另外的方式。还应明白术语“组成”和/或“包括”,当在该说明书中使用时,确定所述特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或更多其它的特征、整数、步骤、操作、元件、部件和/或组的存在或添加。在此使用时,术语“和/或”包括相关所列项目的任何及所有组合。

本发明一实施例中,在于提供一种程序更新的流程图,具体的,请参阅图3所示的本发明一实施例的程序更新的流程图和图4所示的本发明一实施例的程序更新的示意图。本发明一实施例的程序更新的流程图,包括以下步骤:

步骤S31:根据程序包的类型建立多个程序包分区;每个所述程序包分区包括第一分区和第二分区。

更具体的,如图4所示,将存储模块4根据程序包的类型划分为多个程序包分区,每个程序包分区包括第一分区和第二分区。在一些实施例中,程序包的类型可以包括但不限于kernel程序包和app程序包。举例而言,将存储模块4根据kernel程序包和app程序包划分为kernel程序包分区41和app程序包分区42。kernel程序包分区41包括第一分区411和第二分区412,其中第一分区411内存储程序K2,第二分区412内存储程序K1。app程序包分区42包括第一分区421和第二分区422,其中第一分区421内存储程序A2,第二分区422内存储程序A1。

步骤S32:确定每个所述程序包分区中的所述第一分区和所述第二分区其中一者为激活分区;确定每个所述程序包分区中的所述第一分区和所述第二分区其中另一者为非激活分区。

如图4所示,确定kernel程序包分区41中的第一分区411以及app程序包分区42中的第一分区421为激活分区。确定kernel程序包分区41中的第二分区412以及app程序包分区42中的第二分区422为非激活分区。

步骤S33:运行所有所述激活分区内的程序。

如图4所示,系统开机时,运行kernel程序包分区41中的第一分区411内的程序K2以及app程序包分区42中的第一分区412内的程序A2,其中kernel程序包分区41中的第一分区411以及app程序包分区42中的第一分区421为激活分区。

步骤S34:获取升级程序并将所述升级程序存储于与所述升级程序的类型相同的所述程序包分区中的所述非激活分区内。

如图4所示,只有app程序包需要更新,获得更新程序A3并将程序A3存储到app程序包分区42中的第二分区422内,其中,app程序包分区42中的第二分区422为非激活分区。在程序更新的过程中,不中断当前运行的程序,升级过程中如出现异常也不会影响kernel程序包分区41中的第一分区411内的程序K2以及app程序包分区42中的第一分区412内的程序A2的运行。本发明的实施例可以针对一种或多种类型的程序包进行升级,避免了不必要的同步,提高了升级的速度,避免损失存储寿命,也使得系统更加可靠。

步骤35:将存储有所述升级程序的所述非激活分区更新为所述激活分区。

更具体的,每个程序包分区均包括分区切换标识,如图4所示,kernel程序包分区41包括分区切换标识,app程序包分区42也包括切换标识。通过的切换标识将app程序包分区42中第一分区421切换为非激活分区,同时将app程序包分区42中第二分区422切换为激活分区。

在一些实施例中,当重新启动系统后,运行所有激活分区内的程序。

如图4所示,重新启动系统后,运行kernel程序包分区41中的第一分区411内的程序K2以及app程序包分区42中的第二分区422内的程序A3。

在一些实施例中,通过所述分区切换标识将对应的所述程序包分区中的所述第一分区和所述第二分区其中一者切换为所述激活分区,以及将对应的所述程序包分区中的所述第一分区和所述第二分区其中另一者切换为所述非激活分区。举例而言,如图4所示,通过分区切换标识将kernel程序包分区41中的第一分区411和app程序包分区42中的第二分区422切换为激活分区,以及将kernel程序包分区41中的第二分区412和app程序包分区42中的第一分区412切换为非激活分区。

在一些实施例中,每个所述程序包分区中的所述激活分区和所述非激活分区之间的切换是相互独立的。

更具体的,如图4所示,kernel程序包分区41中的激活分区和非激活分区之间的切换是独立于app程序包分区42中的激活分区和非激活分区之间的切换,这有利于独立程序包的升级和回退,更加灵活,更符合客户的需求。

上述实施例中,通过将每个所述程序包分区中的所述激活分区和所述非激活分区之间的切换独立开来,使得系统启动选项增加,更加灵活。举例而言,现有技术如图2所示的系统启动选项为2项(见表1)。

表1

而本实施例如图4所示的系统启动选项为4项(见表2),相较于现有技术增加了启动选项,使程序更新更加灵活。

表2

本申请还提供一种域控制器,具体的,请参照图5所示的本发明一实施例的域控制器的示意图。本发明以实施例的域控制器,包括存储模块5和控制模块6。存储模块5包括多个程序包分区51、52。程序包分区51包括第一分区511和第二分区512,程序包分区52包括第一分区521和第二分区522。

控制模块6用于切换每个所述程序包分区中的所述第一分区和所述第二分区其中一者为激活分区及每个所述程序包分区中的所述第一分区和所述第二分区其中另一者为非激活分区,运行所有所述激活分区内的程序,以及将升级程序存储于相应的所述程序包分区中的所述非激活分区内并将存储有所述升级程序的所述非激活分区更新为所述激活分区。举例而言,控制模块用于切换程序包分区51中第一分区511和第二分区512其中一者为激活分区,其中另一者为非激活分区;切换程序包分区52中第一分区521和第二分区522其中一者为激活分区,其中另一者为非激活分区;运行程序包分区51和程序包分区52中的激活分区内的程序;获取升级程序并将升级程序存放在对应的程序包分区中的非激活分区内,并将该非激活分区更新为激活分区。

在一实施例中,存储模块5为随机存储器,或者只读存储器

本申请还提供一种存储介质,所述存储介质存储有多个程序,所述多个程序可被一个或多个控制模块执行,以实现如前所述的程序更新方法。

本发明的实施例可以针对一种或多种类型的程序包进行升级,避免了不必要的同步,提高了升级的速度,避免损失存储寿命,也使得系统更加可靠。通过多个程序包分区中的激活分区与非激活分区之间的切换相互独立,有利于独立程序包的升级和回退,更加灵活,更符合客户的需求。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

相关技术
  • 程序更新方法、域控制器以及存储介质
  • 软件更新方法、微处理器、域控制器及可读存储介质
技术分类

06120113195806