本发明涉及数据存储,尤其涉及一种嵌入式系统用户态多应用的处理方法、装置、设备及介质。
背景技术:
1、传统的嵌入式系统是把操作系统本身与用户逻辑上独立的多个应用编译在一起,全部运行在内核态一种处理器状态下,共享相同的地址空间。但这样无法实现应用的敏感、安全数据的隔离保护,以及单应用的故障会很容易扩散到整个系统,单应用故障可能导致整个系统崩溃的问题。因此,在嵌入式领域中对多应用隔离的需求越来越大,需要每个应用占用的代码段、只读数据段、可读可写数据段的地址空间必须要做到相互独立,不覆盖。但是,现有方案中不同的应用无法预知到其他应用的代码段、数据段大小,很难做到各应用的地址空间相互独立,不会互相重叠和覆盖。
技术实现思路
1、本发明提供一种嵌入式系统用户态多应用的处理方法、装置、设备及介质,通过在预定义的寄存器中为用户态每个应用程序分配不同的物理地址,使每个应用程序占用的地址空间相互独立,从而实现应用程序的敏感、安全数据的隔离保护。
2、为了实现上述目的,第一方面,本发明实施例提供了一种嵌入式系统用户态多应用的处理方法,包括:
3、接收到用户态目标应用程序的下载更新指令或者切换至所述目标应用程序进程时,获取所述目标应用程序的预设的地址配置映射表以及所述用户态的预设的映射规则;
4、根据所述预设的地址配置映射表在预先定义的寄存器中为所述目标应用程序配置的物理地址和映射大小;
5、根据所述预设的映射规则对所述物理地址和映射大小进行虚拟映射,得到所述物理地址和虚拟地址之间的映射关系以及所述映射大小的虚拟地址空间;
6、其中,所述预设的地址配置映射表中记录了所述目标应用程序的只读代码段在flash上的起始物理地址、只读代码段的大小、可读写数据段ram物理地址和可读写数据段的大小;
7、所述预设的映射规则包括:
8、所述用户态中所有应用程序都使用相同的只读代码段虚拟flash地址空间和相同的可读写数据段虚拟ram地址空间;
9、所述虚拟flash地址空间的虚拟flash基地址为预设置的第一固定地址;
10、所述虚拟ram地址空间的虚拟ram基地址为预设置的第二固定地址。
11、作为上述方案的改进,所述预先定义的寄存器包括flash地址寄存器、ram地址寄存器、flash映射寄存器以及ram映射寄存器;所述虚拟地址空间包括所述虚拟flash地址空间和所述虚拟ram地址空间。
12、作为上述方案的改进,所述根据所述预设的地址配置映射表在预先定义的寄存器中为所述目标应用程序配置的物理地址和映射大小,具体包括:
13、从所述预设的地址配置映射表中,读取所述目标应用程序的只读代码段在flash上的起始物理地址,并配置到所述flash地址寄存器中,得到所述目标应用程序的flash物理地址;
14、读取所述目标应用程序的可读写数据段ram物理地址,并配置到所述ram地址寄存器中,得到所述目标应用程序的ram物理地址;
15、读取所述目标应用程序的只读代码段的大小,并配置到所述flash映射寄存器中,得到所述目标应用程序的flash映射大小;
16、读取所述目标应用程序的可读写数据段的大小,并配置到所述ram映射寄存器中,得到所述目标应用程序的ram映射大小。
17、作为上述方案的改进,所述嵌入式系统用户态多应用的处理方法,还包括:
18、根据所述映射关系和所述虚拟地址空间对目标地址进行取值或访问数据。
19、作为上述方案的改进,所述根据所述映射关系和所述虚拟地址空间对目标地址进行取值或访问数据,具体包括:
20、对目标地址进行取值或访问数据时,若所述目标地址处于内核态,则根据所述目标地址直接进行取值或访问数据;
21、若所述目标地址处于所述用户态,则判断所述目标地址是否位于所述虚拟flash地址空间或者所述虚拟ram地址空间内;
22、若所述目标地址位于所述虚拟flash地址空间内,则根据所述映射关系将所述目标地址转换为目标flash物理地址;根据所述目标flash物理地址进行取值或访问数据;
23、若所述目标地址位于所述虚拟ram地址空间内,则根据所述映射关系将所述目标地址转换为目标ram物理地址;根据所述目标ram物理地址进行取值或访问数据;
24、若所述目标地址既不位于所述虚拟flash地址空间,也不位于所述虚拟ram地址空间,则根据所述目标地址直接进行取值或访问数据。
25、作为上述方案的改进,所述获取所述目标应用程序的预设的地址配置映射表,具体包括:
26、当加载所述目标应用程序时,读取并解析存储在flash上的所述目标应用程序;
27、获取所述目标应用程序的只读代码段在flash上的起始物理地址、只读代码段的大小和可读写数据段的大小;
28、在ram中分配所述可读写数据段的大小的目标空间,并将所述可读写数据段的大小拷贝到所述目标空间中,得到可读写数据段ram物理地址;
29、将所述只读代码段在flash上的起始物理地址、所述只读代码段的大小、所述可读写数据段的大小以及所述可读写数据段ram物理地址记录到所述加载所述目标应用程序的进程控制块数据结构中,得到预设的地址配置映射表。
30、作为上述方案的改进,所述嵌入式系统用户态多应用的处理方法,还包括:编译所述目标应用程序时,将所述应用程序的代码段和只读数据段组成所述只读代码段,以所述虚拟flash基地址作为所述只读代码段的基地址;以所述虚拟ram基地址作为所述可读写数据段的基地址。
31、为了实现上述目的,第二方面,本发明实施例提供了一种嵌入式系统用户态多应用的处理装置,包括:
32、接收切换模块,用于接收到用户态目标应用程序的下载更新指令或者切换至所述目标应用程序进程时,获取所述目标应用程序的预设的地址配置映射表以及所述用户态的预设的映射规则;
33、地址配置模块,用于根据所述预设的地址配置映射表在预先定义的寄存器中为所述目标应用程序配置的物理地址和映射大小;
34、虚拟映射模块,用于根据所述预设的映射规则对所述物理地址和映射大小进行虚拟映射,得到所述物理地址和虚拟地址之间的映射关系以及所述映射大小的虚拟地址空间;
35、其中,所述预设的地址配置映射表中记录了所述目标应用程序的只读代码段在flash上的起始物理地址、只读代码段的大小、可读写数据段ram物理地址和可读写数据段的大小;
36、所述预设的映射规则包括:
37、所述用户态中所有应用程序都使用相同的只读代码段虚拟flash地址空间和相同的可读写数据段虚拟ram地址空间;
38、所述虚拟flash地址空间的虚拟flash基地址为预设置的第一固定地址;
39、所述虚拟ram地址空间的虚拟ram基地址为预设置的第二固定地址。
40、为了实现上述目的,第三方面,本发明实施例对应提供了一种嵌入式系统用户态多应用的处理设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述嵌入式系统用户态多应用的处理方法。
41、此外,为了实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述嵌入式系统用户态多应用的处理方法。
42、与现有技术相比,本发明实施例公开的一种嵌入式系统用户态多应用的处理方法、装置、设备及介质,通过接收到用户态目标应用程序的下载更新指令或者切换至所述目标应用程序进程时,获取所述目标应用程序的预设的地址配置映射表以及所述用户态的预设的映射规则;根据所述预设的地址配置映射表在预先定义的寄存器中为所述目标应用程序配置的物理地址和映射大小;根据所述预设的映射规则对所述物理地址和映射大小进行虚拟映射,得到所述物理地址和虚拟地址之间的映射关系以及所述映射大小的虚拟地址空间。通过在预定义的寄存器中为用户态每个应用程序分配不同的物理地址,使每个应用程序占用的地址空间相互独立,从而实现应用程序的敏感、安全数据的隔离保护。
1.一种嵌入式系统用户态多应用的处理方法,其特征在于,包括:
2.如权利要求1所述的嵌入式系统用户态多应用的处理方法,其特征在于,所述预先定义的寄存器包括flash地址寄存器、ram地址寄存器、flash映射寄存器以及ram映射寄存器;所述虚拟地址空间包括所述虚拟flash地址空间和所述虚拟ram地址空间。
3.如权利要求2所述的嵌入式系统用户态多应用的处理方法,其特征在于,所述根据所述预设的地址配置映射表在预先定义的寄存器中为所述目标应用程序配置的物理地址和映射大小,具体包括:
4.如权利要求3所述的嵌入式系统用户态多应用的处理方法,其特征在于,还包括:
5.如权利要求4所述的嵌入式系统用户态多应用的处理方法,其特征在于,所述根据所述映射关系和所述虚拟地址空间对目标地址进行取值或访问数据,具体包括:
6.如权利要求2所述的嵌入式系统用户态多应用的处理方法,其特征在于,所述获取所述目标应用程序的预设的地址配置映射表,具体包括:
7.如权利要求3所述的嵌入式系统用户态多应用的处理方法,其特征在于,还包括:
8.一种嵌入式系统用户态多应用的处理装置,其特征在于,包括:
9.一种嵌入式系统用户态多应用的处理设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任意一项所述的嵌入式系统用户态多应用的处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1-7中任意一项所述的嵌入式系统用户态多应用的处理方法。