Yocto Project(简称YP),帮助开发者创建基于linux的嵌入式系统,此过程忽略硬件架构。YP是开源的。YP提供灵活的工具、还有社区为开发者裁剪构建系统服务。
YP提供标准的硬件支持和软件栈(指YP对不同的硬件提供统一的接口interface)。
可参考如下网站(OpenEmbedded Project),了解开源嵌入式
https://www.openembedded.org/wiki/Main_Page
YP由三个关键部分构成:
1、一些集成工具,包括自动building、testing、bsp(板间支持的处理)、license、组件信息(关于 custom Linux-based embedded operating system)
2、一个供参考的embedded发布系统(一般叫做Poky)
3、开源嵌入式构建系统(The OpenEmbedded build system),被OpenEmbedded Project维护
组成如下图:
参考嵌入式OS——Poky,实际上是一个构建例子,它包含构建系统(BitBake,the build engine and OpenEmbedded-Core,the core build system metadata)。
定制化(裁剪)的关键——THE LAYER MODEL
YP对于嵌入式和IOT linux系统有专用的模型,是通过一个叫THE LAYER MODEL,来区别其它的系统。
用户可以分享、重用LAYER,LAYER包含之前的设置。
在构建系统时,最好利用不同的LAYER来逻辑化信息。例如,可以构建一个BSP LAYER,
GUI layer, a distro configuration, middleware, or an application。利于之后的裁剪以及重用。
更多参考信息:
1、熟悉层
https://www.yoctoproject.org/software-overview/layers/
2、更多的层的内容(开源嵌入式层索引)
http://layers.openembedded.org/layerindex/branch/master/layers/
3、YP提供的专用的BSP层
https://www.yoctoproject.org/software-overview/layers/bsps/
维护YP的组件和工具可参考https://www.yoctoproject.org/software-overview/project-components/
本文参考如下网址:https://www.yoctoproject.org/software-overview/,图片来源于网络,侵权请通知。
参考术语:
- Configuration Files:这些文件包含全局变量,用户定义变量和硬件配置信息。这些信息告诉bulid system 去构建什么、并把映像放入支持的特殊的平台
- Recipe:metadata的最通用的格式。recipe包含building packages的一系列设置和任务,building packages用来构建binary image。recipe说明你将从哪获得源代码、哪些补丁需要使用。recipes说明需要哪些依赖库和需要依赖哪些其他的recipes,同时说明配置和编译的选项。这些都保存在layers中。
- Layer:是相关的recipes的一个集合,layers允许你把相关的metadata加入到你的自定义构建系统中,并和其他的多个架构bulids相隔离。layers是分层的,可以重新它之前的信息说明。你可以从YP中包含许多的layers,并且可以通过加入你的layers来构建你自己的自定义构建系统。LayerIndex用来在YP中进行搜索。
- Metadata:Meta-data是YP的一个关键的元素,meta-data用来构建一个linux发布版本,本包含在files中,当构建一个image的时候,用来解析build systems。通常,metadata包含recipe、配置文件、和一些构建指令的信息、还有一些数据用来控制哪些东西需要构建和如何去构建。Metadata也包含一些命令和数据来说明软件版本、从哪可以获取、变更历史、bug信息、在特殊的环境下如何自定义系统。OpenEmbeded Core是一个重要的metadata。
- OpenEmbedded-Core:简称oe-core ,它是一个metadata,由基本的recipes、classes、一些相关文件组成,是一些不同的OpenEmbedded系统(包含YP)的公共体。它由OpenEmbedded community发布,它是一个消减的系统,严格控制核心、高可靠的核包含一系列recipes。
- Poky:是一个参考的embedded发布系统,一个参考的测试配置,目的是:
- 1、提供一个基本的功能性的发布版本,用来说明如何自定义自己的发布版本
- 2、测试YP的组件,Poky来验证YP
- 3、作为一个工具,使用户来下载YP。Poky不是一个产品级的发布版本,但是是定制化的一 个好的开始。
- 4、Poky是oe-core顶层的一个layer。
- Build System - "Bitbake":一个调度和执行引擎,用来解析recipes和配置数据。它来创建一个有序的树,用来有序进行编译、调度代码包含的编译,最好来执行用户的特别的image(发布版本)。Bitbake想make工具。BitBake recipes说明一个特殊的软件包(package)是如何构建的。这包含包依赖、源码的位置、配置信息、编译信息、构建、安装并且删除指令。recipes也同样用来存储变量(standard variables)。Layer中相关的recipes。在构建过程中,跟踪依赖项、本地化、交叉编译包的执行。第一步建立交叉编译环境、framework会创建合适的cross-compiler toolcharin(交叉工具编译链,Extensial SDK)来适合目标平台。
- Packages:是构建系统的输出,用来创建最后的image。
- Extensible Software Development Kit (ESDK):是一个用户的SDK,作用是使应用开发者可以联合他们的库、对image的修改,使代码有效。让另一个开发者使用。类似有代码管理、协作开发。
- Image:Linux发布版本的二进制格式,用来下载到指定的设备中。