一种基于电力鸿蒙操作系统的多APP实现方法、介质及终端与流程

专利查询1月前  18


本发明属于数据传输,尤其涉及一种基于电力鸿蒙操作系统的多app实现方法、介质及终端。


背景技术:

1、电力鸿蒙操作系统针对不同的应用场景分为五个版本,分别为phm、phs、phr、pee、pes,其中phm版本主要用于电力端侧设备上,而电力端侧设备的主要特点是对稳定性要求比较高,且存储资源受限,而随着电力鸿蒙的提出,其承载的业务功能也呈现出多变、边缘计算化的趋势,这要求phm版本应能支持业务多app化,且app能升级的功能。当前电力鸿蒙操作系统phm版本是liteos-m系列的内核,属于轻量级的rtos(实时操作系统),其并不支持业务多app化,若app运行过程异常,还有可能导致整个系统崩溃,这极大限制了phm版本在电力端侧设备的发展应用。公开号为cn117215671a的专利申请提供了一种基于mcu应用程序动态加载方法、设备及其介质,方法包括:构建app程序动态加载特性,生成app二进制文件;通过内核主机程序动态加载app二进制文件,执行app程序;app程序调用内核主机服务函数,完成app程序的动态加载。此专利申请同样无法实现多app化,存在与现有技术相同的弊端。

2、因此,如何提供一种可以实现多app化的方法,以提高系统运行的稳定性,是本技术领域人员亟待解决的问题。


技术实现思路

1、针对现有技术的不足,本发明的目的是提供一种基于电力鸿蒙操作系统的多app实现方法,以解决现有技术中电力鸿蒙操作系统无法实现多app化,导致系统运行不稳定的问题;另外本发明还提供了一种基于电力鸿蒙操作系统的多app实现介质及终端。

2、为了解决上述技术问题,本发明采用了如下的技术方案:

3、本发明提供了一种基于电力鸿蒙操作系统的多app实现方法,包括以下步骤:

4、s10、app编译:采用位置无关的方式对app代码进行编译链接,使其可以在任意位置启动运行,并在头部定义启动信息;

5、s20、app安装:app安装到内部flash中,并通过片上执行文件系统xipfs对app进行管理;

6、s30、app启动:从xipfs文件系统中搜索app,解析app头部,并创建app的主线程,从内核ram中申请并创建用户态堆资源;

7、s40、app异常保活:对用户态和内核态进行分离,创建内核线程,并检测app的运行状态,app异常时拉起该内核线程。

8、进一步的,所述步骤s10中,app格式包括app头部和app载荷,所述app头部包括magic、name、data_size、heap_size、stack_size、stack_size_main和pri_main,所述app载荷为app实际内容。

9、进一步的,所述magic为魔幻数,用于快速判断镜像文件是否为app;所述name 为app的名字;所述data_size为app数据段大小;所述heap_size为app预留的堆空间大小;所述stack_size为app预留的栈空间大小;所述stack_size_main为app的主线程使用的大小,其空间从stack_size中分配;所述pri_main为app的主线程对应的线程优先级;所述data_size、heap_size、stack_size三者相加的结果为app使用的ram大小;所述app实际内容为实际运行的app代码。

10、进一步的,所述步骤s20中包括app第一次写入片上执行文件系统xipfs、app更新和app删除;其中app第一次写入片上执行文件系统xipfs的具体步骤如下:

11、s211、首先一片擦除块大小为4kb的内部flash上未写入数;

12、s212、当有一个app写入xipfs时,将app大小以擦除块大小向上取整,得到域空间大小zone_size,并且通过域管理块管理整个域空间,域管理块占据域空间的一部分;

13、s213、在域空间中申请一个app管理块,标识为write,app管理块写入app的实际数据,回填app管理块中的app长度信息;

14、s214、当新的app需要写入时,若域剩余空间满足该app的需求,则重复步骤s213;若域剩余空间不满足该app的需求,则重复步骤s212至s213。

15、进一步的,app更新的具体步骤如下:

16、s221、片上执行文件系统xipfs已安装app;

17、s222、当重复安装app时,若app已安装,则将app管理置位delete,并申请一个新的域,完成app的安装;

18、s223、再次重复安装app时,若app已安装,则将app管理置位delete,若还存在一个delete app的域,且大小满足需求,则直接格式化整个域,完成app的安装,即不再申请新的域。

19、进一步的,app删除的具体步骤如下:

20、s231、片上执行文件系统xipfs已安装app;

21、s232、只改对应app的标志为delete,不删除真实的数据。

22、进一步的,所述步骤s30的具体步骤如下:

23、s301、从xipfs文件系统中找到app;

24、s302、通过编译获取app头部信息,计算app的ram需求大小;

25、s303、创建app的主线程,并且为其从操作系统内核中申请ram_size大小的堆空间ram_zone作为数据段拷贝、内部线程的堆栈申请,定义主线程的入口函数为动态加载函数,将数据段内容从flash中拷贝到ram_zone,并对bss段进行清零处理,对绝对地址的引用进行重定位;

26、s304、在主线程函数中,从ram_zone申请一段内存空间,作为用户态的堆内存管理,使用tlsf作为内存管理算法;

27、s305、重载malloc和free函数的定义,使其从用户态堆内存中获取资源,从而将app与app之间、app与内核之间的堆内存空间进行隔离。

28、进一步的,所述步骤s40的具体步骤如下:

29、s401、初始化阶段,通过svc异常机制实现app对内核资源的访问控制;

30、s402、初始化阶段,通过mpu隔离app与app之间的代码段、数据段和堆栈空间;

31、s403、初始化阶段,创建内核线程,检测app的运行状态,如果app一定时间没有运行,则重新拉起该内核线程;

32、s404、运行阶段,当app运行过程中,非法访问其他app的地址空间,或者内核地址空间,则会触发自身的hardfault,在异常中断中,对app的系统进行日志打印,用于问题定位;

33、s405、运行阶段,内核线程检测到app停止运行,重新拉起该内核线程。

34、第二方面,本发明还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法。

35、第三方面,本发明还提供了一种电子终端,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如上所述方法。

36、本发明提供的基于电力鸿蒙操作系统的多app实现方法、介质及终端与现有技术相比,至少具有如下有益效果:

37、当前电力鸿蒙操作系统phm版本是liteos-m系列的内核,属于轻量级的rtos(实时操作系统),其并不支持业务多app化,若app运行过程异常,还有可能导致整个系统崩溃,这极大限制了phm版本在电力端侧设备的发展应用。本发明流程简单、操作便捷,在电力鸿蒙操作系统的phm版本上首次提出了业务多app的功能,为电力鸿蒙的深化应用提供了技术基础;设计了xipfs文件系统和动态加载功能,对app的安装和启动进行优化,极大降低了多app化对flash和ram资源的占用比例;通过svc异常机制实现了内核态与用户态分离、用户态堆内存管理以及多app之间切换时的mpu切换保护,提高了app运行的可靠性,其自身异常不会导致其他app和操作系统内核异常,并且app异常之后能被重新拉起救活。本发明从app的编译、app安装、app启动加载、app异常保活四个方面对多app化进行了全方位的设计,覆盖了app的整个生命周期,并且通过xipfs文件系统提升了flash资源的使用率,通过app异常保活提升了app运行的可靠性。


技术特征:

1.一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,所述步骤s10中,app格式包括app头部和app载荷,所述app头部包括magic、name、data_size、heap_size、stack_size、stack_size_main和pri_main,所述app载荷为app实际内容。

3.根据权利要求2所述的一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,所述magic为魔幻数,用于快速判断镜像文件是否为app;所述name 为app的名字;所述data_size为app数据段大小;所述heap_size为app预留的堆空间大小;所述stack_size为app预留的栈空间大小;所述stack_size_main为app的主线程使用的大小,其空间从stack_size中分配;所述pri_main为app的主线程对应的线程优先级;所述data_size、heap_size、stack_size三者相加的结果为app使用的ram大小;所述app实际内容为实际运行的app代码。

4.根据权利要求1所述的一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,所述步骤s20中包括app第一次写入片上执行文件系统xipfs、app更新和app删除;其中app第一次写入片上执行文件系统xipfs的具体步骤如下:

5.根据权利要求4所述的一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,app更新的具体步骤如下:

6.根据权利要求5所述的一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,app删除的具体步骤如下:

7.根据权利要求1所述的一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,所述步骤s30的具体步骤如下:

8.根据权利要求1所述的一种基于电力鸿蒙操作系统的多app实现方法,其特征在于,所述步骤s40的具体步骤如下:

9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述方法。

10.一种电子终端,其特征在于,包括:处理器及存储器;


技术总结
本发明适用于数据传输技术领域,涉及一种基于电力鸿蒙操作系统的多APP实现方法、介质及终端,包括:APP编译:采用位置无关的方式对APP代码进行编译链接,使其可以在任意位置启动运行,并在头部定义启动信息;APP安装:APP安装到内部Flash中,并通过片上执行文件系统XIPFS对APP进行管理;APP启动:从XIPFS文件系统中搜索APP,解析APP头部,并创建APP的主线程,从内核ram中申请并创建用户态堆资源;APP异常保活:对用户态和内核态进行分离,创建内核线程,并检测APP的运行状态,APP异常时拉起该内核线程。本发明流程简单、操作便捷,可以实现多APP化,大大提高了系统运行的稳定性。

技术研发人员:危炎广,胡忠勇,邹杨,徐虎,王建忠,肖安
受保护的技术使用者:威胜集团有限公司
技术研发日:
技术公布日:2024/12/5

最新回复(0)