【MYD-JX8MMA7】 (七)YOCTO介绍
简述:
在最近的接触,发现JX8MMA7的软件开发过程中有一些区别,与以往linuxRAM开发思路有很大差别,所以个人重点了解了下Yocto的基本常识和开发区别。
一、简介
1、百度百科介绍
Yocto ,是一个开源社区。它通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 bit)硬件体系架构。 [1]
Yocto Project™是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和嵌入式产品,而无需关心硬件体系。适合嵌入式Linux开发人员使用。极大地简化你的开发过程,因为你不用再从头裁剪一个完整的Linux发布版本,后者通常包括许多你并不需要的软件。
Yocto项目通过Poky来构建一个系统,并提供了一个开放源码的开发环境,针对目标为ARM,MIPS,PowerPC和x86架构,而平台包括x86-64和模拟器。
你可以使用Yocto项目的组件来设计,开发,构建,调试,仿真和对使用了Linux, X windows系统, 基于移动设备的GNOME应用框架和Qt框架的完整的软件堆栈进行测试.
Yocto兼容OpenEmbedded项目,你可以简单可靠地进行编译和开发.完全支持通过QEMU模拟器的广泛的硬件和设备的仿真.
Yocto项目可以为多种设备生成映像.
通过Yocto项目开发出来的映像可以在一个QEMU模拟器中进行引导,开发环境可以作为一个开发嵌入式软件的良好的测试平台.
2、Yotco官方介绍
yocto项目。它不是嵌入式Linux发行版,而是为您创建一个自定义发行版。Yocto项目(YP)是一个开源协作项目,帮助开发人员创建自定义的基于linux的系统,而不考虑硬件架构。该项目提供了一套灵活的工具和空间,让全世界的嵌入式开发人员可以共享技术和软件堆栈。配置,以及可用于为嵌入式和物联网设备或任何需要定制Linux操作系统的地方创建定制的Linux映像的最佳实践。
yocto项目。它不是嵌入式Linux发行版,而是为您创建一个自定义发行版。Yocto项目(YP)是一个开源协作项目,帮助开发人员创建自定义的基于linux的系统,而不考虑硬件架构。该项目提供了一套灵活的工具和空间,让全世界的嵌入式开发人员可以共享技术和软件堆栈。配置,以及可用于为嵌入式和物联网设备或任何需要定制Linux操作系统的地方创建定制的Linux映像的最佳实践。
“Poky”是Yocto项目的参考发行版或参考操作系统工具包的名称。它包含构建系统(BitBake和OpenEmbedded Core)以及一组元数据,让你开始构建自己的发行版。要使用Yocto项目工具,您可以下载Poky并使用它引导您自己的发行版。请注意,Poky不包含二进制文件——它是一个如何从源代码构建自己的自定义Linux发行版的工作示例。
二、主要元件
Yocto 项目的主要元件(其他可用工具属于选用性),条列如下:
BitBake
OpenEmbedded-Core
Poky
BSP 层(meta-raspberry、meta-fsl-arm、meta-ti、meta-intel、meta-sunxi 等等)
下图列出将会介绍的所有层级,后续章节会透过各种各样的范例,逐一学习其中各项工具,让读者能充分掌握。
何谓 Poky?
Poky 是 Yocto 项目官方提供的参考建置系统,包含一些 OpenEmbedded 的基本元件(称为建置系统),以及一组用来建立嵌入式发行版的后设资料,支持好几种目标架构。Poky 是独立的平台,使用 BitBake 工具(任务排程器)、OpenEmbedded-Core 与预设的后设资料组合来进行交叉编译,如下图所示。Poky 提供一整套机制,能构建并整合数以千计的开源软件包。
Poky 构建系统将会成为工业领域的参考标准,各大业界领袖,如 Win River、Intel、Montavista 和 Mentor Graphics 都已表态支持。
Angstrom 是另一套以 OpenEmbedded-Core 为基础所打造出来的系统,你可以把 Angstrom 和 Poky 想象成表兄弟,因为 Poky 也同样基于 OpenEmbedded-Core。
三、Yocto 三大关键组件
•BitBake ——实质上就是 Yocto 的构建系统引擎。它负责创建配方——构建特定系统所需的任务列表——以及解析元数据和执行配方。
对如何分解并加速BitBake构建进程感兴趣的开发者,可预约Incredibuild最新活动
•OpenEmbedded-Core ——元数据。它保存了创建系统所需的基本配方、相关文件和类。构建时设定为通用,以便适用于各种基于 OpenEmbedded 的系统。
•Poky ——包含一个基于 Linux 的全平台构建工具和各种其他技术,帮助各大团队以可靠的方式快速地开发新系统。Poky 基于各种架构生成文件系统镜像。其中的典型示例就是 QEMU全系统仿真,一种极其出色的嵌入式软件测试平台。
Yocto 构建工作流
Yocto 也支持其他关键组件(例如 QT、Chromium、LLVM 等)内置到嵌入式发行版中,这也是它极受欢迎的原因之一。
为什么选择 Yocto
尽管 Yocto 操作更复杂,但它也有很明显的优势。
用户群体广泛,开发社区活跃,由Linux基金会出资扶持。
可以实现曾层级,用于各种任务,高度定制化,可添加特殊功能,自定义浏览器等。
在同类项目中,可以兼容的设备最多,可以添加大量的 SDK、工具和功能。
正是有了这些要素,Yocto 实现了高度可定制,同时还拥有强劲的支持,对于希望定制构建嵌入式系统的开发人员来说非常友好。
Yocto的缺点
即便如此,Yocto 也有一些缺点。一方面,入门时的学习曲线稍微有点陡峭。对于时间有限的小型单个项目或小型团队来说,使用这个工具可能意义不大。另一方面,Yocto 的构建时间很长。这就降低了迭代频率,如用在时间紧迫的项目中,效果可能会不太理想,但借助类似 Incredibuild这样的加速工具可大幅提速开发进程。
四、openembedded,poky和yocto的关系
1.OpenEmbedded包含核心元数据层和BitBake构建工具
BitBake是任务执行程序和调度程序,它是OpenEmbedded构建系统的核心。
OpenEmbedded-Core(OE-Core)元数据,其中包括共享配置,全局变量定义,共享类,包装和配方。其中,类定义了构建逻辑的封装和继承。配方是要构建的软件和图像的逻辑单元。
2.Poky既是Yocto的构建示例也是一套构建工具,Poky是位于OE-Core之上的集成层。
meta-poky,这是特定于Poky的元数据。
meta-yocto-bsp,这是Yocto项目特定的basic支持包(BSP)。
五、BitBake 是什么
BitBake是一个通用的任务执行引擎,它允许Shell和Python任务在复杂的任务间相关性约束内工作时高效且并行地运行。BitBake的主要用户之一OpenEmbedded以此内核为基础,并使用面向任务的方法构建嵌入式Linux软件堆栈。从概念上讲,BitBake在某些方面类似于GNU Make,但有很大的区别:
1.BitBake根据提供的构成任务的元数据执行任务。
元数据存储在配方(.bb)和相关的配方“追加”(.bbappend)文件,配置(.conf)和基础包含(.inc)文件以及类(.bbclass)文件中。
2.元数据向BitBake提供有关要运行哪些任务以及这些任务之间的依赖关系的说明。
BitBake包含一个提取程序库,用于从各个地方(例如本地文件,源代码控制系统或网站)获取源代码。
3.每个要构建的单元的指令(例如,一个软件)被称为“配方”文件,其中包含有关该单元的所有信息(依赖项,源文件位置,校验和,描述等)。
4.BitBake包括客户端/服务器抽象,可以从命令行使用,也可以通过XML-RPC用作服务,并且具有多个不同的用户界面。
六、yocto的工作流程
了解Yocto Project工作流非常重要,因为它可以帮助您查明发生问题的位置以及构建的中断方式。工作流分为以下步骤:
1.开发人员指定架构,策略,补丁和配置详细信息。
2.构建系统从指定的位置获取并下载源代码。该项目支持标准方法(例如tarball)或源代码存储库系统(例如git)。
3.将源提取到本地工作区中,在该工作区中将应用补丁,并且将运行用于配置和编译软件的常见步骤。
4.将软件安装到临时暂存区域,在该区域中,您选择的二进制软件包格式(deb,rpm或ipk)将用于汇总软件。
5.在整个构建过程中都会运行不同的质量检查和健全性检查。
6.创建二进制文件后,将生成二进制程序包提要,然后将其用于创建最终的根文件映像。生成文件系统映像。
参考文献:
https://blog.csdn.net/lu_embedded/article/details/116565933
https://blog.csdn.net/Ciellee/article/details/124503582
https://baike.baidu.com/item/YOCTO/6281227?fr=aladdin
更多回帖