Yocto Overview

入门:YOCTO PROJECT®概述

在这里插入图片描述
Yocto项目是一个开源协作项目,旨在帮助开发者为嵌入式产品创建基于Linux的自定义系统,而不关心硬件体系架构。该项目提供灵活的工具集和平台,来自全球的嵌入式开发者可以在此共享技术、软件栈、配置和最佳实践,这些可以用来为嵌入式设备创建量身定制的Linux映像。

该项目提供一个用来发布硬件支持和软件栈的标准,允许更换软件配置和构建。该工具允许用户以一种可维护和可扩展的方式为多平台和软件栈的构建和定制化。

从历史上看,该项目起源于OpenEmbedded Project,并与之协作,OpenEmbedded Project是构建系统和一些元数据的来源。


Yocto项目包含、维护和验证三个关键开发元素:

  1. 一整套使嵌入式Linux成功运行的集成工具,包括自动构建和测试工具,板级支持和许可证合规性的流程,以及基于Linux的定制嵌入式操作系统的组件信息;
  2. 一个参考嵌入式发行版(Poky);
  3. 与OpenEmbedded Project共同维护的OpenEmbedded构建系统。


在这里插入图片描述
Yocto项目伞下有许多不同开源组件和工具。

Poky – 参考嵌入式OS,实际上是一个有效的构建实例,它将使用包含的构建系统(BitBake,构建引擎和OpenEmbedded-Core,核心构建系统元数据)构建一个小嵌入式系统。

使用称为配方和层(定义如下)的Poky构建指令“文件”下载构建系统。你可以以任何你需要的方式去更改、拷贝或使用Poky构建细节,来创建你的定制嵌入式Linux。

层模型 - 定制的关键

Yocto Project具有用于嵌入式和IOT Linux创建的开发模型,该模型与其他简单的构建系统是有区别的。它称为层模型。

层模型旨在同时支持协作和定制。层是包含相关指令集的存储库,这些指令集告诉构建系统该做什么。用户可以协作,共享和重用层。层可以随时包含对先前指令或设置的更改。

强大的覆盖功能使您可以自定义以前的协作层或社区提供的层,以适应您的产品需求。

使用不同的层在逻辑上分离构建中的信息。例如,您可能具有BSP层,GUI层,发行版配置,中间件或应用程序。将您的整个构建放到一个层会使将来的自定义和重用受到限制且变得复杂。另一方面,将信息隔离到层中有助于简化将来的自定义和重用。尽可能使用来自芯片供应商的BSP层。

熟悉策划(经过测试)的YOCTO PROJECT兼容层索引。还有一个OpenEmbedded层索引,它包含更多的层,但是内容上缺乏普遍验证。

Yocto Project成员组织可以提供有关特定BSP的信息。有关详细信息,请访问Yocto Project成员BSP页面

Yocto 项目维护的组件和工具

在这里插入图片描述
(Yocto)项目使用了一组组件和工具集来维护和更新实际的项目。也有那些被项目本身直接使用的。最后,开发人员使用其他组件和工具来创建其自定义OS。这些组件和工具本身就是开源项目或元数据(metadata)。他们与参考发行版和构建系统是区分开的,并且大多数可以单独下载。

更多关于组建和工具的信息

参考条目(术语)

  • Configuration Files(配置文件):包含变量的全局定义、用户定义的变量和硬件配置信息的文件。它们告知构建系统需要构建什么,并放入映像(image)中以支持特定平台。
  • Recipe(食谱):元数据(metadata)的最常见形式。一个recipe包含一个用于构建程序包的设置和任务(说明)列表,这个包后续会用于构建二进制映像。食谱描述将从哪里获取源码,以及应用哪些补丁。这些食谱描述了库或其他食谱的依赖关系,以及配置和编译选项。它们存储在层(layer)中。
  • Layer(层):相关食谱的集合。层允许您合并相关的元数据以自定义构建,并隔离多个体系结构构建的信息。层在覆盖先前规范方面具有层次结构。您可以从Yocto Project中包含任意数量的可用层,并通过在它们之后添加你自己的层来自定义构建。可以在“ Yocto项目”中的“The Layer Index(层索引)”中搜索层。
  • Metadata(元数据):元数据是Yocto项目的关键元素,用于构建Linux发行版。元数据包含在一些文件中,当构建映像时构建系统会去解析它们。通常,元数据包括食谱、配置文件和其他引用构建指令本身的信息,以及用于控制要构建的事物和影响构建方式的数据。元数据还包括:1) 用于指示被使用软件的版本和来源信息的命令和数据; 2) 对软件本身(补丁或辅助文件)进行的更改或添加,用于修复错误或自定义特定情况下使用的软件。OpenEmbedded Core是一组重要的经过验证的元数据集合。
  • OpenEmbedded-Core:oe-core是由基础配方,类和关联文件组成的元数据,在许多不同的OpenEmbedded派生系统(包括Yocto Project)中,它们都是共有的。它是OpenEmbedded社区开发的原始仓库的精选子集,该原始仓库已被精简为一组较小的,经过持续验证的食谱核心,从而形成了受到严格控制且质量保证的食谱核心。
  • Poky:一个参考嵌入式发行版和参考测试配置,用于:1)提供基本级别的功能发行版,用来说明如何自定义发行版;2)测试Yocto Project组件,用于验证Yocto Project;3)作为用户下载Yocto Project的工具。Poky不是产品级别的发行版,而是自定义的好起点。Poky是oe-core之上的集成层。
  • 构建系统 - Bitbake:解析指令(食谱)和配置数据的调度程序和执行引擎。它会创建一个依赖关系树来对编译进行排序,安排所包含代码的编译,最后执行指定的定制Linux映像(发行版)的构建。BitBake是一个类似make的构建工具。BitBake recipes指定如何构建特定的程序包。包括所有软件包依赖,源代码位置,配置,编译,构建,安装和删除指令。Recipes还将程序包的元数据存储在标准变量中。相关的recipes合并为一个层。在构建过程中,跟踪依赖关系,并对程序包执行本机或交叉编译。作为交叉构建设置的第一步,框架将尝试创建适合目标平台的交叉编译器工具链(可扩展SDK)。
  • Packages(程序包):构建系统的输出,用来创建最终的映像。
  • 可扩展软件开发套件(ESDK):面向应用程序开发者的自定义SDK,允许开发者将其库和程序更改合并回映像中,以使其他开发人员可以使用其代码。
  • Image(映像):二进制格式的Linux发行版(操作系统),可用于装载到设备。

常规的“工作流程” - 一切如何工作

在这里插入图片描述

  • 首先,开发者指定体系结构,策略,补丁和配置详细信息。
  • 然后,构建系统从指定的位置获取并下载源代码。该项目支持标准方法(例如tarball)或源代码仓库系统(例如git)。
  • 下载后,将源码提取到本地工作区中,在该工作区中将应用补丁,执行配置和编译软件的常见步骤。
  • 然后,将软件安装到临时暂存区,在该区域中,您选择的二进制软件包格式(deb,rpm或ipk)将被汇总到软件中。
  • 在整个构建过程中都会运行不同的质量检查和健全性检查。
  • 创建二进制文件后,将生成一个二进制程序包提要,然后将其用于创建最终的根文件映像。
  • 生成文件系统映像。

在使用Yocto项目的过程中,这个工作流将会随着实际使用的组建和工具而改变。

开发环境 - 主机设置

在这里插入图片描述
1). 大多数开发者使用 Yocto Project Quick Build 所述的Linux开发主机

2). 对于其他操作系统,Yocto项目提供了CROPS – 利用Docker容器的开源、跨平台开发框架。CROPS提供了易于管理,可扩展的环境,允许开发人员在Windows或macOS上为Linux主机之外的各种体系结构构建二进制文件。有关更多信息,请参见《开发任务手册》。

3). 第三种选择是使用toaster,这是一个实用但功能有限的Web界面,允许您配置和运行构建,并提供有关构建过程的信息和统计信息。请参阅《Toaster 手册》。

开发主机设置用于Yocto项目后,Eclipse IDE也是可用的。

参考嵌入式发行版(Poky)

“Poky”是Yocto项目参考发行版或者说参考系统套件的名字。它包含构建系统(BitBake和OpenEmbedded Core)以及一组元数据,可帮助你开始构建自己的发行版。

要使用Yocto项目的工具,你可以下载Poky,并且用它来引导你自己的发行版。值得注意的是,Poky不包含二进制文件–它是一个工作实例,用来告诉你如何从源代码构建自己的定制Linux发行版。

更多关于参考发行版的信息。

Yocto项目功能(features)

除了固有功能外,Yocto项目还具有项目功能,这些功能在一个发行版中引入,并且通常在几个发行版的过程中进行扩展和完成。有关这些功能的深入信息,可以在发行版和工具相关的“readme”文件中找到。该区域提供了对3个最新版本的功能更新以及常规项目功能的高级概述。

高级功能表。


新用户文档 - YOCTO PROJECT快速构建

发布了60 篇原创文章 · 获赞 27 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xiaosaerjt/article/details/103392378