基于设备树的启动优化方法、系统、芯片、设备和介质与流程

文档序号:33713108发布日期:2023-04-01 01:07阅读:166来源:国知局
基于设备树的启动优化方法、系统、芯片、设备和介质与流程

1.本发明涉及操作系统技术领域,尤其涉及一种基于设备树的启动优化方法、系统、芯片、设备和介质。


背景技术:

2.dt(device tree,设备树)是用于描述板级设备上各种硬件的数据结构,硬件可以理解为板级设备上的任意一个实体装置或设备,例如硬盘、鼠标、芯片、cpu(central processing unit,中央处理器)等。描述设备树的文件叫做dts(device tree source,设备树源码),是一种硬件信息的描述方法,以此代替源码中的硬件编码(hard code),dts文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如cpu数量、内存基地址、iic(inter-integrated circuit,集成电路总线,一种串行通讯总线)接口上接了哪些设备、spi(serial peripheral interface,串行外设接口)接口上接了哪些设备等等。设备树分割成主dt和叠加dt,主dt包括soc(system on chip,系统级芯片)供应商提供的soc公用部分和默认配置,叠加dt又称为扩展dt,由原始设计制造商(odm)/原始设备制造商(oem)提供的设备专属配置。
3.在嵌入式linux(一种操作系统)下,设备树(dt)用来描述硬件平台的各种资源,linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。扩展设备树源码(overlay dts)可以在系统运行期间动态修改设备树。
4.dtb(device tree binary)是dts编译后的二进制产物,dtbo(device tree binary overlay)是overlay dts编译后的二进制产物,dtb和dtbo均由一系列被命名的结点(node)和属性(property)组成。
5.现有技术中,在系统启动过程中,加载对应的dtb文件和dtbo文件到内存中,并将二者进行合并为一个dtb文件,再传给系统的内核(kernel),kernel通过读取dtb文件完成系统的初始化启动过程,导致启动时长较长,版本产物较多。因此,急需一种新的启动优化方法,以优化系统启动过程。


技术实现要素:

6.本发明要解决的技术问题是为了克服现有技术中基于设备树结构的系统启动过程是通过合并dtb文件和dtbo文件得到dtb文件,系统的内核基于该dtb文件进行初始化启动,导致启动时长较长,版本产物较多的缺陷,提供一种基于设备树的启动优化方法、系统、芯片、设备和介质。
7.本发明是通过下述技术方案来解决上述技术问题:
8.第一方面,提供一种基于设备树的启动优化方法,所述启动优化方法包括:
9.获取目标对象对应的dts文件和overlay dts文件;
10.基于预设规则对所述dts文件和所述overlay dts文件进行合并,以得到所述目标对象对应的目标dts文件;
11.基于所述目标dts文件启动系统,以实现对所述系统的启动优化。
12.较佳地,所述基于预设规则对所述dts文件和所述overlay dts文件进行合并,以得到所述目标对象对应的目标dts文件的步骤具体包括:
13.对所述dts文件和所述overlay dts文件中具有相同属性名且不同属性值的相同节点,将所述overlay dts文件中的属性值覆盖所述dts文件中的属性值,以更新得到所述目标dts文件。
14.较佳地,所述基于预设规则对所述dts文件和所述overlay dts文件进行合并,以得到所述目标对象对应的目标dts文件的步骤具体包括:
15.对所述dts文件和所述overlay dts文件中具有不同属性名且不同属性值的相同节点,将所述overlay dts文件中的属性名和属性值增加至所述dts文件中,以更新得到所述目标dts文件。
16.较佳地,所述基于预设规则对所述dts文件和所述overlay dts文件进行合并,以得到所述目标对象对应的目标dts文件的步骤具体包括:
17.将存在于所述overlay dts文件但不存在于所述dts文件中的独有节点,及所述独有节点对应的属性名和属性值增加至所述dts文件中,以更新得到所述目标dts文件。
18.较佳地,所述基于所述目标dts文件启动系统,以实现对所述系统的启动优化的步骤具体包括:
19.对所述目标dts文件进行编译以得到dtb文件;
20.基于所述dtb文件得到所述dtb文件对应的dtb镜像文件;
21.将所述dtb文件和所述dtb镜像文件传递至所述系统的内核,以使所述内核基于所述dtb文件实现对所述系统的启动优化。
22.第二方面,还提供一种基于设备树的启动优化系统,所述启动优化系统包括:
23.获取模块,用于获取目标对象对应的dts文件和overlay dts文件;
24.合并模块,用于基于预设规则对所述dts文件和所述overlay dts文件进行合并,以得到所述目标对象对应的目标dts文件;
25.启动模块,用于基于所述目标dts文件启动系统,以实现对所述系统的启动优化。
26.较佳地,所述合并模块具体用于对所述dts文件和所述overlay dts文件中具有相同属性名且不同属性值的相同节点,将所述overlay dts文件中的属性值覆盖所述dts文件中的属性值,以更新得到所述目标dts文件。
27.较佳地,所述合并模块具体用于对所述dts文件和所述overlay dts文件中具有不同属性名且不同属性值的相同节点,将所述overlay dts文件中的属性名和属性值增加至所述dts文件中,以更新得到所述目标dts文件。
28.较佳地,所述合并模块具体用于将存在于所述overlay dts文件但不存在于所述dts文件中的独有节点,及所述独有节点对应的属性名和属性值增加至所述dts文件中,以更新得到所述目标dts文件。
29.较佳地,所述启动模块包括:
30.编译单元,用于对所述目标dts文件进行编译以得到dtb文件;
31.镜像单元,用于基于所述dtb文件得到所述dtb文件对应的dtb镜像文件;
32.启动装载单元,用于将所述dtb文件和所述dtb镜像文件传递至所述系统的内核,
以使所述内核基于所述dtb文件实现对所述系统的启动优化。
33.第三方面,还提供一种芯片,应用于电子设备,所述芯片用于执行上述任一所述的基于设备树的启动优化方法。
34.第四方面,还提供一种芯片,应用于电子设备,包括收发组件和芯片,所述芯片用于执行上述任一所述的基于设备树的启动优化方法。
35.第五方面,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现上述任一项所述的基于设备树的启动优化方法。
36.第六方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的基于设备树的启动优化方法。
37.本发明的积极进步效果在于:
38.本发明的基于设备树的启动优化方法、系统、芯片、设备和介质,相对于现有技术,将在启动时所做的合并编译产物dtb和dtbo的操作提前到编译之前完成,实现了对源文件dts和overlay dts的合并,而不是对dts和overlay dts对应的编译产物dtb和dtbo的合并,从而减少了版本产物大小,减少了启动时长,优化了系统的启动过程。
附图说明
39.图1为本发明实施例1提供的基于设备树的启动优化方法的第一流程示意图;
40.图2为本发明实施例1提供的基于设备树的启动优化方法的第二流程示意图;
41.图3为本发明实施例1提供的基于设备树的启动优化方法的第三流程示意图;
42.图4为本发明实施例1提供的基于设备树的启动优化方法的第四流程示意图;
43.图5为本发明实施例1提供的基于设备树的启动优化方法的第四流程示意图;
44.图6为本发明实施例2提供的基于设备树的启动优化系统的结构示意图;
45.图7为本发明实施例3提供的电子设备的结构示意图。
具体实施方式
46.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
47.实施例1
48.本实施例提供一种基于设备树的启动优化方法,如图1所示,所述启动优化方法包括:
49.s101、获取目标对象对应的dts文件和overlay dts文件。
50.设备树(dt)描述的是板级设备上各种硬件的数据结构,目标对象即某一板级设备,板级设备即集成电路板、开发板等。
51.dts文件的主要功能是描述板子上的设备信息。采用设备树后,许多硬件的细节可以直接透过它传递给系统,而不再需要在内核进行大量的冗余编码,系统内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。
52.设备树的overlay功能是指可以在系统运行期间动态修改设备树。如果想修改设备树,有了设备树的overlay功能,省去了设备树的重新编译和内核重启,通过overlay dts
直接给设备树“打补丁”,在运行期间就可以动态添加或修改节点,进而实现对设备树的修改。
53.在同一终端设备中,可能包括多个板级设备,每个板级设备具有自身对应的dts文件和overlay dts文件。当板级设备的信息有变更时,就使用到了overlay功能,根据用户选取的目标对象即板级设备确定出目标对象对应的dts文件和overlay dts文件。
54.s102、基于预设规则对dts文件和overlay dts文件进行合并,以得到目标对象对应的目标dts文件。
55.运行脚本,对同一目标对象的dts文件和overlay dts文件进行合并,以得到目标对象对应的目标dts文件。
56.s103、基于目标dts文件启动系统,以实现对系统的启动优化。
57.在得到目标dts文件的基础上进行系统启动前的相关操作,以初始化终端设备上各个硬件设备,建立内存空间映射图,以便于将终端设备的系统的软硬件环境带到一个合适状态,为最终启动系统内核准备好正确的运行环境,以便于系统的正常启动。
58.当需要修改设备树时,现有技术是将某一板级设备对应的dts文件和overlay dts文件进行编译,dts文件经过编译后为dtb文件,overlay dts文件经过编译后为dtbo文件,将编译产物dtb文件和dtbo文件进行合并,合并为一个dtb文件,再传给系统的内核,进而引导系统的启动。
59.本实施例中的基于设备树的启动优化方法,将现有技术中在启动时所作的合并dtb文件和dtbo文件的操作提前到编译之前完成,无需对dts文件和overlay dts文件进行编译,而是直接对源文件dts文件和overlay dts文件进行合并,不是对dts和overlay dts对应的编译产物dtb和dtbo的合并,优化了系统启动过程,从而达到减少版本产物大小、减少启动时长的效果。
60.在一可选的实施方式中,如图2所示,上述步骤s102包括:
61.s1021、对dts文件和overlay dts文件中具有相同属性名且不同属性值的相同节点,将overlay dts文件中的属性值覆盖dts文件中的属性值,以更新得到目标dts文件。
62.设备树中的每个设备都是一个节点,叫做设备节点,每个节点都通过一些属性信息来描述节点信息,属性就是键值对,每个节点都有不同属性,不同的属性又有不同的内容,属性都是键值对,值可以为空或任意的字节流。
63.当dts文件和overlay dts文件中具有相同的节点时,若该节点对应的属性信息是具有相同属性名和不同属性值,则将overlay dts文件中的属性值覆盖dts文件中的属性值,以更新得到目标dts文件。本实施方式实现了对设备树的修改和更新,同时优化了系统启动过程,减少了版本产物大小,减少启动时长。
64.在一可选的实施方式中,如图3所示,上述步骤s102包括:
65.s1022、对dts文件和overlay dts文件中具有不同属性名且不同属性值的相同节点,将overlay dts文件中的属性名和属性值增加至dts文件中,以更新得到目标dts文件。
66.当dts文件和overlay dts文件中具有相同的节点时,若该节点对应的属性信息是具有不同属性名和不同属性值,则将overlay dts文件中的属性名和属性值增加至dts文件中,以更新得到目标dts文件。本实施方式实现了对设备树的修改和更新,同时优化了系统启动过程,减少了版本产物大小,减少启动时长。
67.在一可选的实施方式中,如图4所示,上述步骤s102包括:
68.s1023、将存在于overlay dts文件但不存在于dts文件中的独有节点,及独有节点对应的属性名和属性值增加至dts文件中,以更新得到目标dts文件。
69.当dts文件和overlay dts文件中具有不相同的节点时,且该节点为存在于overlay dts文件但不存在于dts文件中的独有节点,则将该独有节点对应的属性名和属性值均增加至dts文件中,以更新得到目标dts文件。本实施方式实现了对设备树的修改和更新,同时优化了系统启动过程,减少了版本产物大小,减少启动时长。
70.在一可选的实施方式中,如图5所示,上述步骤s103包括:
71.s1031、对目标dts文件进行编译以得到dtb文件。
72.dtc(device tree compiler)是设备树的编译器,是用来编译设备树的工具,使用dtc将目标dts文件编译为dtb文件,最后生成一个可执行程序。
73.s1032、基于dtb文件得到dtb文件对应的dtb镜像文件。
74.内核启动过程中还需要dtb文件对应的dtb镜像文件,基于现有技术即可得到dtb文件对应的dtb镜像文件,此处就不在赘述。
75.以linux系统为例,在系统启动的时候,引导程序(例如bootloader,启动装载)在启动linux系统镜像前将dtb文件读到内存中,跳转到linux系统镜像执行的同时将dtb起始地址传给系统镜像。linux系统镜像通过起始地址就可以根据dtb的结构解析整个设备树,完成硬件驱动的初始化,设备树的引入减少了系统镜像为支持新硬件而需要的改变,提高代码重用,加速了linux系统支持包的开发,使得单个linux系统镜像能支持多个系统。
76.在进行linux产品开发时,通常一个产品最后生成的操作系统映像(os image)通常由三个文件打包而成:一个系统镜像文件(uimage或zimage),一个dtb文件和一个根文件系统文件(rootfs)。由于设备树文件的不同,每个产品的打包文件都各不相同,因此,在得到dtb文件后,还需要得到dtb文件对应的dtb镜像文件,将dtb镜像文件和包含同一个linux系统镜像版本下的所有产品驱动的linux系统镜像,打包成linux系统镜像文件。
77.s1033、将dtb文件和dtb镜像文件传递至系统的内核,以使内核基于dtb文件实现对系统的启动优化。
78.在系统启动之前,通过bootloader将dtb文件和包括dtb镜像文件在内的linux系统镜像文件传递至系统的内核,以便于系统的正常启动,进而实现对系统的启动优化。
79.本实施方式的基于设备树的启动优化方法,通过对dts文件和overlay dts文件合并后得到的目标dts文件进行编译得到了dtb文件,并得到dtb镜像文件,从而在系统启动前,将dtb文件和dtb镜像文件传递至系统的内核,以便于系统的正常启动,优化了系统启动过程,减少了待编译文件的数量,缩短了编译过程所需的时长,从而达到减少版本产物大小、减少启动时长的效果。
80.实施例2
81.本实施例提供一种基于设备树的启动优化系统,如图6所示,基于设备树的启动优化系统包括获取模块1,用于获取目标对象对应的dts文件和overlay dts文件;合并模块2,用于基于预设规则对dts文件和overlay dts文件进行合并,以得到目标对象对应的目标dts文件;启动模块3,用于基于目标dts文件启动系统,以实现对系统的启动优化。
82.在一可选的实施方式中,合并模块2具体用于对dts文件和overlay dts文件中具
有相同属性名且不同属性值的相同节点,将overlay dts文件中的属性值覆盖dts文件中的属性值,以更新得到目标dts文件。
83.在一可选的实施方式中,合并模块2具体用于对dts文件和overlay dts文件中具有不同属性名且不同属性值的相同节点,将overlay dts文件中的属性名和属性值增加至dts文件中,以更新得到目标dts文件。
84.在一可选的实施方式中,合并模块2具体用于将存在于overlay dts文件但不存在于dts文件中的独有节点,及独有节点对应的属性名和属性值增加至dts文件中,以更新得到目标dts文件。
85.在一可选的实施方式中,启动模块3包括编译单元31,用于对目标dts文件进行编译以得到dtb文件;镜像单元32,用于基于dtb文件得到dtb文件对应的dtb镜像文件;启动装载单元33,用于将dtb文件和dtb镜像文件传递至系统的内核,以使内核基于dtb文件实现对系统的启动优化。
86.本实施例中的基于设备树的启动优化系统,通过系统内各个模块和单元的相互配合,对dts文件和overlay dts文件合并后得到的目标dts文件进行编译得到了dtb文件,并得到dtb镜像文件,从而在系统启动前,将dtb文件和dtb镜像文件传递至系统的内核,以便于系统的正常启动,优化了系统启动过程,减少了待编译文件的数量,缩短了编译过程所需的时长,从而达到减少版本产物大小、减少启动时长的效果。
87.关于本实施例提供的基于设备树的启动优化系统具体可以是单独的芯片、芯片模组或电子设备,也可以是集成于电子设备内的芯片或者芯片模组。
88.关于本实施例中描述的基于设备树的启动优化系统包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。
89.实施例3
90.本实施例提供一种电子设备,图7为本实施例提供的一种电子设备的结构示意图。电子设备包括存储器、处理器及存储在存储器上并可在处理器上执行的计算机程序,处理器执行程序时实现如上实施例1中的基于设备树的启动优化方法。图7显示的电子设备80仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
91.如图7所示,电子设备80可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备80的组件可以包括但不限于:上述至少一个处理器81、上述至少一个存储器82、连接不同系统组件(包括存储器82和处理器81)的总线83。
92.总线83包括数据总线、地址总线和控制总线。
93.存储器82可以包括易失性存储器,例如随机存取存储器(ram)821和/或高速缓存存储器822,还可以进一步包括只读存储器(rom)823。
94.存储器82还可以包括具有一组(至少一个)程序模块824的程序/实用工具825,这样的程序模块824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
95.处理器81通过执行存储在存储器82中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明如上实施例1中的基于设备树的启动优化方法。
96.电子设备80也可以与一个或多个外部设备84(例如键盘、指向设备等)通信。这种
通信可以通过输入/输出(i/o)接口85进行。并且,模型生成的设备80还可以通过网络适配器86与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图7所示,网络适配器86通过总线83与模型生成的设备80的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备80使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
97.应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
98.实施例4
99.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现如上实施例1中的基于设备树的启动优化方法中的步骤。
100.其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
101.在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上执行时,程序代码用于使终端设备执行实现如上实施例1中的基于设备树的启动优化方法中的步骤。
102.其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
103.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1