By: fu linux
E-mail: fulinux@sina.com
Blog: https://blog.csdn.net/fulinus
喜欢的盆友欢迎点赞和订阅!
你的喜欢就是我写作的动力!
OpenEmbedded构建系统概念
继续上一篇的内容
Distro Layer
Distro Layer为自己的发行版提供策略配置。最好的做法就是在自己的Layer中定义相关类型的配置,起到隔离的作用。比如bitbake工具可以在conf/local.conf配置文件中找到与meta-poky/conf/distro/distro.conf文件中同名的参数设置时会重载后面的配置,意思是build/conf/local.conf配置优先meta-poky/conf/distro/distro.conf文件中的配置。
build]$ ls ../meta-poky/
classes conf README.poky recipes-core
- 1
- 2
下面是Distro Layer中一些代表性目录的解释和参考:
- classes: 类文件(.bbclass)包含可在发行版中共享的公共功能。当自己的recipes继承某个类时,该类中的设置和函数就会生效;
- conf: 这个目录包含层conf/layer.conf、conf/distro/distro.conf和其他一些文件。
- recipes-*: recipes和*.bbappend文件会影响整个发行版的通用功能。此目录可以包括 recipes和*.bbappend文件,以添加特定于发行版的配置、初始化脚本、自定义image recipes等。recipes- 目录的示例是recipes-core和recipes-extra。recipes- 目录中的层次结构和内容可能会有所不同。通常,这些目录包含recipes文件( .bb)、recipe附加文件( .bbappend)、配置文件的特定发行版目录,等等。
BSP Layer
BSP层提供针对特定硬件的machine配置, 就是与硬件体系相关联的Layer,例如包含bootloader、kernel和驱动等。此层中的所有内容都为特定的machine生成images或SDK。为BSP层定义了一个通用的结构或形式。为BSP Layer定义了一套通用的结构或形式。
BSP层的配置目录包含machine的配置文件(conf/machine/${machine}.conf),当然也还有conf/layer.conf)。比如下面的:
meta-yocto-bsp]$ tree
.
├── conf
│ ├── layer.conf
│ └── machine
│ ├── beaglebone-yocto.conf
│ ├── edgerouter.conf
│ ├── genericx86-64.conf #machine的conf文件
│ ├── genericx86.conf #machine的conf文件
│ └── include
│ └── genericx86-common.inc
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
例如meta-qcom高通相关的BSP Layer:
poky]$ cd meta-qcom/
meta-qcom]$ tree
.
├── classes
│ └── qcom-firmware-mount.bbclass
├── conf
│ ├── layer.conf
│ └── machine
│ ├── dragonboard-410c-32.conf
│ ├── dragonboard-410c.conf
│ ├── dragonboard-600c.conf
│ ├── dragonboard-820c.conf
│ ├── dragonboard-845c.conf
│ ├── evb4k-qcs404.conf
│ ├── ifc6410.conf
│ ├── include
│ │ ├── qcom-apq8016.inc
│ │ ├── qcom-apq8064.inc
│ │ ├── qcom-apq8096.inc
│ │ ├── qcom-qcs404.inc
│ │ ├── qcom-sdm845.inc
│ │ └── qcom-sm8250.inc
│ ├── qrb5165-rb5.conf
│ ├── sd-600eval.conf
│ └── sm8250-mtp.conf
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
该Layer其他目录按功能划分,用于特定的recipes:recipes-bsp、recipes-core、recipes-graphics、recipes-kernel等等。
Software Layer
软件Layer为构建期间使用的其他软件包提供元数据。此层不包括特定发行版或machine的元数据,即平台无关性的软件,比如busybox/Qt等第三方软件包。
此层包含项目所需的recipes、append文件和patches文件。