双芯智能电表管理单元的动态装载方法、动态装载装置
技术领域
本申请涉及双芯智能电表技术领域,特别是涉及一种双芯智能电表管理单元的动态装载方法、动态装载装置、双芯智能电表和存储介质。
背景技术
目前,电能表为一体式设计,即计量部分和非计量部分不做独立工作要求。这种电能表软件系统比较固化,一个应用独占软、硬件资源,电表一上电就启动运行这一个应用,不存在多个应用的动态装载需求。按照IR46标准的要求,双芯电能表的管理芯和计量芯应相互分离,管理芯软件可以实现多个应用的在线升级,以满足双芯智能电表灵活扩展高级应用的现实需求。智能电表数以亿计,且每块电能表都存在多个不同的应用,不可能人工干预每一块智能电表应用软件的启动过程,必须通过动态装载的方法,在获取应用升级信息后或系统异常情况下重启系统完成各个应用自动顺序启动运行,实现高级应用的灵活扩展,保障智能电表应用软件的稳定可靠运行。
在电能表技术领域中,管理单元软件系统需要支持对多样化的高级应用灵活扩展和软件的在线升级。电能表数以亿计,如何实现自行启动双芯智能电表管理单元应用软件是亟待解决的问题。
发明内容
基于此,为实现自行启动双芯智能电表管理单元升级扩展的各个电表应用,本申请提供一种双芯智能电表管理单元的动态装载方法、装置、双芯智能电表和存储介质。
一种双芯智能电表管理单元的动态装载方法,应用于双芯智能电表的动态装载器中,包括:
获取启动参数文件的地址,根据所述地址获取启动参数文件;
解析所述启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;
基于所述应用镜像路径,加载所述电表应用的应用镜像文件,为所述电表应用分配与所述应用权限参数对应的权限控制和与所述内存资源配置参数对应的内存资源;
根据所述主线程描述信息创建所述电表应用的主线程,以使所述主线程创建后实现相应子线程的创建。
在其中一个实施例中,所述获取启动参数文件的地址,根据所述地址获取启动参数文件,包括:
调用预设的文件地址获取函数获取启动参数文件的地址;
根据所述地址访问所述启动参数文件。
在其中一个实施例中,所述启动参数文件由应用升级交互模块写入所述地址。
在其中一个实施例中,
所述解析所述启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息,还包括:
解析所述启动参数文件得到第一校验码;
所述加载所述电表应用的应用镜像文件之后,所述方法还包括:
将所述应用镜像文件输入至镜像文件校验函数,触发所述镜像文件校验函数对所述应用镜像文件进行校验并反馈第二校验码;
所述第一校验码与所述第二校验码不一致时,禁止所述电表应用的启动。
在其中一个实施例中,所述启动参数文件包括多个待启动的电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息。
在其中一个实施例中,所述主线程描述信息包括堆栈、优先级、时间片和进程通信参数。
一种双芯智能电表管理单元的动态装载装置,应用于双芯智能电表的动态装载器中,包括:
启动参数文件获取模块,用于获取启动参数文件的地址,根据所述地址获取启动参数文件;
启动参数解析模块,用于解析所述启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;
应用文件处理模块,用于基于所述应用镜像路径,加载所述电表应用的应用镜像文件,为所述电表应用分配与所述应用权限参数对应的权限控制和与所述内存资源配置参数对应的内存资源;
进程创建模块,用于根据所述主线程描述信息创建所述电表应用的主线程,以使所述主线程创建后实现相应子线程的创建。
在其中一个实施例中,所述应用文件处理模块,包括:
应用镜像加载模块,用于基于所述应用镜像路径,加载所述电表应用的应用镜像文件;
应用权限管理模块,用于为所述电表应用分配与所述应用权限参数对应的权限控制;
内存资源分配模块,用于为所述电表应用分配与所述内存资源配置参数对应的内存资源。
一种双芯智能电表,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取启动参数文件的地址,根据所述地址获取启动参数文件;解析所述启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;基于所述应用镜像路径,加载所述电表应用的应用镜像文件,为所述电表应用分配与所述应用权限参数对应的权限控制和与所述内存资源配置参数对应的内存资源;根据所述主线程描述信息创建所述电表应用的主线程,以使所述主线程创建后实现相应子线程的创建。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取启动参数文件的地址,根据所述地址获取启动参数文件;解析所述启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;基于所述应用镜像路径,加载所述电表应用的应用镜像文件,为所述电表应用分配与所述应用权限参数对应的权限控制和与所述内存资源配置参数对应的内存资源;根据所述主线程描述信息创建所述电表应用的主线程,以使所述主线程创建后实现相应子线程的创建。
上述双芯智能电表管理单元的动态装载方法、装置、双芯智能电表和存储介质,动态装载器获取启动参数文件的地址,根据上述地址获取启动参数文件,动态装载器解析启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;动态装载器基于应用镜像路径,加载电表应用的应用镜像文件,为电表应用分配与应用权限参数对应的权限控制和与内存资源配置参数对应的内存资源;动态装载器根据主线程描述信息创建电表应用的主线程,以使主线程创建后实现相应子线程的创建。在电能表管理单元软件系统启动时,动态装载器可以根据电表应用的相关信息配置对应的资源,根据应用镜像路径获取电表应用的应用镜像文件,以及创建对应的主线程以实现对应子线程的创建,可以自动装载启动电表应用的进程(进程包括主线程和对应的子线程),以使完成电能表管理单元软件系统对电表应用的动态装载,可以支持电能表管理单元软件系统对待更新电表应用的自行启动,不需要人工干预,便于电表应用的在线升级,进一步还可以便于对电表应用进行在线卸载和运维管理等操作。
附图说明
图1为一个实施例中双芯智能电表管理单元的动态装载方法的应用环境图;
图2为一个实施例中双芯智能电表管理单元的动态装载方法的流程示意图;
图3为一个实施例中双芯智能电表管理单元的动态装载步骤的流程示意图;
图4为另一个实施例中双芯智能电表管理单元的动态装载方法的流程示意图;
图5为一个实施例中双芯智能电表管理单元的动态装载装置的结构框图;
图6为另一个实施例中双芯智能电表的动态装载装置的结构框图;
图7为一个实施例中双芯智能电表的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请提供的双芯智能电表管理单元的动态装载方法,可以应用于图1所示的应用环境中,其中:应用升级交互模块可以是安装在双芯智能电表(以下简称电表)中,且对电表应用(电表应用可以是安装在电表中、且运行在电表软件管理系统上的应用程序)进行更新升级等管理的模块,可以运行在电能表管理单元软件系统上;动态装载器可以是属于电能表管理单元软件系统的内核层组件。上述方法可以包括以下内容:动态装载器获取启动参数文件的地址,根据上述地址获取启动参数文件,并解析启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;动态装载器基于应用镜像路径,加载电表应用的应用镜像文件,为电表应用分配与应用权限参数对应的权限控制和与内存资源配置参数对应的内存资源;动态装载器根据主线程描述信息创建电表应用的主线程,以使主线程创建后实现相应子线程的创建。
在一个实施例中,如图2所示,提供了一种双芯智能电表管理单元的动态装载方法,以该方法应用于双芯智能电表的动态装载器中为例进行说明,包括以下步骤:
步骤S201,动态装载器获取启动参数文件的地址,根据地址获取启动参数文件。
其中,启动参数文件可以是主站可以将待更新电表应用的更新参数写入对应的文件中形成的,主站在形成将携带有更新参数的启动参数文件后,将上述启动参数文件和上述待更电表应用的应用镜像文件下发至电表的应用升级交互模块,应用升级交互模块将启动参数文件和应用镜像文件存储至对应的地址中,动态装载器获取启动参数文件的地址(地址可以理解为启动参数文件在电表中的存储路径),根据上述地址获取启动参数文件。
其中,动态装载器获取启动参数文件的步骤可以进一步包括:应用升级交互模块在接收到主站下发的启动参数文件后,将启动参数文件的地址(存储路径)传递至动态装载器的文件地址获取函数,文件地址获取函数根据上述地址,获取启动参数文件,动态装载器进一步还可以调用启动参数解析模块对启动参数文件进行解析。
其中,文件地址获取函数可以是ms_err_t ms_apps_start(const char * boot_param_file)。
步骤S202,动态装载器解析启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息。
在本步骤中,动态装载器得到启动参数文件后,可以调用启动参数解析模块(如FDT启动参数解析模块)对启动参数文件进行解析,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息。其中,本步骤所说的电表应用可以是步骤S201的待更新电表应用,对应地,电表在执行本实施例的方法后,可以启动待更新电表应用。
其中,动态装载器可以调用启动参数解析模块(如FDT启动参数解析模块)实现本步骤的解析过程。
步骤S203,动态装载器基于应用镜像路径,加载电表应用的应用镜像文件,为电表应用分配与应用权限参数对应的权限控制和与内存资源配置参数对应的内存资源。
步骤S204,动态装载器根据主线程描述信息创建电表应用的主线程,以使主线程创建后实现相应子线程的创建。
以电表应用为步骤S201的待更新电表应用为例介绍本步骤:动态装载器根据从启动参数文件中解析得到的主线程描述信息,创建与待更新电表应用对应的主线程,以使主线程自动创建待更新电表应用的子线程。可以理解的是,在主线程和子线程创建的过程中,动态装载器还可以实现电表应用的共享内存和管道的创建。
其中,主线程描述参数可以包括:包括堆栈、优先级、时间片或进程通信参数的至少一种。
上述双芯智能电表管理单元的动态装载方法中,动态装载器获取启动参数文件的地址,根据上述地址获取启动参数文件;动态装载器解析启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;动态装载器基于应用镜像路径,加载电表应用的应用镜像文件,为电表应用分配与应用权限参数对应的权限控制和与内存资源配置参数对应的内存资源;动态装载器根据主线程描述信息创建电表应用的主线程,以使主线程创建后实现相应子线程的创建。在电能表管理单元软件系统启动时,动态装载器可以根据电表应用的相关信息配置对应的资源,根据应用镜像路径获取电表应用的应用镜像文件,以及创建对应的主线程以实现对应子线程的创建,可以自动装载启动电表应用的进程(进程包括主线程和对应的子线程),以完成电能表管理单元软件系统对电表应用的动态装载,可以支持电能表管理单元软件系统对待更新电表应用的自行启动,不需要人工干预,便于电表应用的在线升级,进一步还可以便于对电表应用进行在线卸载和运维管理等操作。
在一个实施例中,为实现电能表管理单元软件系统对多个电表应用的自行启动,应用启动参数文件包含了多个待启动电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息。
其中,各个待启动的电表应用可以对应不同的应用节点,每个应用节点下存在对应的电表应用信息(如应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息)。启动参数解析模块可以遍历启动参数文件的各个应用节点,进而确定启动参数文件包括的电表应用的个数和电表应用的名称。
以第一电表应用和第二电表应用为例介绍,电表在按照上述实施例的步骤完成第一电表应用的启动后,动态装载器遍历启动参数文件的应用节点(如 “ms-app”),确定在第一电表应用的节点之后是第二电表应用的节点,进而执行上述实施例的步骤S202-S204,完成第二电表应用的启动。
在一个实施例中,若电表应用的应用镜像文件出错,并根据出错的应用镜像文件对电表应用进行启动,可能会导致电表应用无法实现对应的应用服务;基于此,动态装载器还可以执行如图3所示的步骤,具体包括:
步骤S301,动态装载器获取启动参数文件的地址,根据上述地址获取启动参数文件;
步骤S302,动态装载器解析启动参数文件,得到电表应用的第一校验码和应用镜像路径;
步骤S303,动态装载器根据应用镜像路径,加载得到电表应用的应用镜像文件;
步骤S304,动态装载器将应用镜像文件输入至镜像文件校验函数,触发镜像文件校验函数对应用镜像文件进行校验并反馈第二校验码;
其中,镜像文件校验函数可以是CRC32校验函数,对应地,第一校验码和第二校验码均是CRC32格式的校验码。
步骤S305,若动态装载器判定第一校验码与第二校验码不一致时,则禁止电表应用的启动。
若第一校验码和第二校验码一致,则说明上述电表应用的应用镜像文件完整,可以根据上述应用镜像文件,完成对上述电表应用的启动。
为了更好地理解上述方法,以下详细阐述一个本申请双芯智能电表管理单元的动态装载方法的应用实例。
应用升级交互模块完成更新参数的写入后,形成包括所有电表应用的启动参数文件,运行于操作系统(相当于电能表管理单元软件系统)之上的每个应用顺序执行一个动态加载过程以完成每个电表应用的启动;结合图4介绍本实例的步骤:
(1)动态装载器获取启动参数文件的地址,访问启动参数文件;
(2)顺序查找每个“ms-app”应用节点,若查找不到应用节点,则说明启动参数文件中没有待启动的电表应用,进而结束加载过程;
(3)若查找到某个应用节点,则获取该应用节点的名称(相当于电表应用的名称),并作为与电表应用对应的待启动的进程名称。
(4)读取“img_base”属性,获得待启动电表应用的代码执行位置;
(5)读取“img_size”属性,获得待启动电表应用的应用镜像文件的大小;
(6)读取“img_crc32”属性,获得待启动电表应用的应用镜像文件的CRC32校验码,以完成应用镜像文件完整性的校对。
(7)读取主线程描述参数,包括堆栈、优先级、时间片、可创建的进程通信参数等。
(8)调用进程创建模块,根据主线程描述参数创建主线程。主线程创建后,可自动实现子线程的创建,最终完成整个进程的创建过程。
本实施例,动态装载器组件在操作系统在启动时,解析应用升级交互模块更新后的启动参数文件,根据待启动的电表应用的相关信息,调用进程创建模块的进程创建功能,自动装载启动电表应用的进程,进而实现自行启动双芯智能电表管理单元升级扩展的各电表应用,满足电表在线升级和运维需要。相较于传统的电表管理单元软件系统为一体式设计,电表应用独占软、硬件资源,不支持对多个电表应用进行参数配置和权限管理而言,本申请的动态装载器与应用升级交互模块、进程创建模块交互,完成多个电表应用的动态装载启动,通过对启动参数文件进行解析,以及启动参数的配置,可以支持新电表应用的自行启动,不需要人工干预,便于电表应用在线升级/卸载和运维管理
应该理解的是,虽然图2-图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种双芯智能电表管理单元的动态装载装置,包括:
启动参数文件获取模块501,用于获取启动参数文件的地址,根据地址获取启动参数文件;
启动参数解析模块502,用于解析启动参数文件,得到电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息;
应用文件处理模块503,用于基于应用镜像路径,加载电表应用的应用镜像文件,为电表应用分配与应用权限参数对应的权限控制和与内存资源配置参数对应的内存资源;
进程创建模块504,用于根据主线程描述信息创建电表应用的主线程,以使主线程创建后实现相应子线程的创建。
在一个实施例中,应用文件处理模块503,包括:
应用镜像加载模块,用于基于应用镜像路径,加载电表应用的应用镜像文件;
应用权限管理模块,用于为电表应用分配与应用权限参数对应的权限控制;
内存资源分配模块,用于为电表应用分配与内存资源配置参数对应的内存资源。
在一个实施例中,启动参数文件获取模块501,还用于调用预设的文件地址获取函数获取启动参数文件的地址;根据地址访问启动参数文件。
在一个实施例中,启动参数文件由应用升级交互模块写入地址。
在一个实施例中,启动参数解析模块502,还用于解析启动参数文件得到第一校验码;上述装置还包括镜像文件校验模块,用于将应用镜像文件输入至镜像文件校验函数,触发镜像文件校验函数对应用镜像文件进行校验并反馈第二校验码;第一校验码与第二校验码不一致时,禁止电表应用的启动。
在一个实施例中,启动参数文件包括多个待启动的电表应用的应用镜像路径、内存资源配置参数、应用权限参数和主线程描述信息。
在一个实施例中,主线程描述信息包括堆栈、优先级、时间片和进程通信参数。
在一个实施例中,如图6所示,动态装载器可以包括FDT启动参数解析模块、应用镜像加载模块、应用权限管理模块、内存资源分配模块、进程创建模块;其中,各个模块执行的步骤具体介绍如下:
应用镜像加载模块,用于基于应用镜像路径,加载电表应用的应用镜像文件;
应用权限管理模块,用于为电表应用分配与应用权限参数对应的权限控制;
内存资源分配模块,用于为电表应用分配与内存资源配置参数对应的内存资源。
进程创建模块用于根据主线程描述信息(如堆栈、优先级、时间片、可创建的进程通信参数)创建主线程,在主线程创建完成后,自动实现子线程的创建。
关于双芯智能电表管理单元的动态装载装置的具体限定可以参见上文中对于双芯智能电表管理单元的动态装载方法的限定,在此不再赘述。上述双芯智能电表管理单元的动态装载装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于双芯智能电表中的处理器中,也可以以软件形式存储于双芯智能电表中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请提供的双芯智能电表管理单元的动态装载方法,可以应用于如图1所示的双芯智能电表的动态装载器中,其内部结构图可以如图7所示。该双芯智能电表包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该双芯智能电表的处理器用于提供计算和控制能力。该双芯智能电表的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该双芯智能电表的通信接口用于与外部的设备进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种双芯智能电表管理单元的动态装载方法。该双芯智能电表的显示屏可以是液晶显示屏或者电子墨水显示屏,该双芯智能电表的输入装置可以是显示屏上覆盖的触摸层,也可以是双芯智能电表外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的双芯智能电表的限定,具体的双芯智能电表可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种双芯智能电表,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。