用YOCTO构筑你的嵌入式系统

各个嵌入式开发团队出于不同的原因,都希望构建适合自己开发需求的嵌入式系统。Yocto正是这样一个工具,任何一个厂商都可以根据Yocto定制属于自己的系统。 

Yocto ,是一个开源社区。它通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 bit)硬件体系架构。

可帮助开发人员创建基于Linux的定制系统,这些系统专为嵌入式产品而设计,无论产品的硬件架构如何。

Yocto Project提供灵活的工具集和开发环境,允许全球的嵌入式设备开发人员通过共享技术,软件堆栈,配置和用于创建这些定制的Linux映像的最佳实践进行协作。

首先我们需要关注几个YOCTO项目相关的名词,理解这些对于我们学习YOCTO项目非常有帮助。

01 Poky

Poky有两个含义。第一个含义是用来构建Linux的构建系统,值得注意的该Poky仅仅是一个概念,而非一个实体:它包含了 BitBake工具、编译工具链、BSP、诸多程序包或层,可以认为Poky即是Yocto的本质;此外Poky还有另外一层意思,使用Poky系统得到的默认参考 Linux 发行版也叫Poky(当然,我们可以对此发行版随意命名)。Poky的两个含义千万不能混淆。

02 元数据集

元数据集按层 进行排列,这样一来每一层都可以为下面的层提供单独的功能。基层是 OpenEmbedded-Core 或 oe-core,提供了所有构建项目所必需的常见配方、类和相关功能。然后您可以通过在 oe-core 之上添加新层来定制构建。

OpenEmbedded-Core 由Yocto Project和 OpenEmbedded 项目共同维护。将Yocto Project 与 OpenEmbedded 分开的层是 meta-yocto 层,该层提供了 Poky 发行版配置和一组核心的参考 BSP。

OpenEmbedded 项目本身是一个独立的开源项目,具有可与 Yocto Project 交换的配方(大部分)以及与 Yocto Project 类似的目标,但是两者具有不同的治理和范围。

03 板卡支持包

BSP 包含为特定板卡或架构构建 Linux 必备的基本程序包和驱动程序。这通常由生产板卡的硬件制造商加以维护。BSP 是 Linux 操作系统与运行它的硬件之间的接口。注意,您也可以为虚拟机创建 BSP。

04 BitBake

BitBake 是一个构建引擎。它读取配方并通过获取程序包来密切关注它们、构建它们并将结果纳入可引导映像。BitBake 由 Yocto Project 和 OpenEmbedded 项目共同维护。

总结:假如用烹饪一桌酒席来形容构建发行版,则Yocto就是饭店名,Poky就是厨房(以及提供作为参考的菜的搭配套餐),Metadata就是烹饪资源(.bb/.bbappend表示配方/配方上的贴士,.conf表示厨房里的管事的小组长),Layers就是菜谱的分类(如川菜谱、粤菜谱),Bitbake就是厨师,Output就是得到的一桌酒席。

Yocto项目开发环境介绍

开发人员指定体系结构,策略,补丁和配置详细信息。

构建系统从指定位置获取并下载源代码。构建系统支持标准方法,如tarball或源代码存储库系统,如Git。

下载源代码后,构建系统将源提取到应用修补程序的本地工作区,并运行配置和编译软件的常用步骤。

然后,构建系统将软件安装到临时暂存区域,在该区域中,您选择的二进制包格式(DEB,RPM或IPK)用于汇总软件。

在整个构建过程中运行不同的QA和健全性检查。

创建二进制文件后,构建系统会生成二进制包源,用于创建最终的根文件映像。

构建系统生成文件系统映像和用于并行应用程序开发的自定义可扩展SDK(eSDSK)


介绍了这么多的概念,肯定被绕晕了,大家不如动手实践一下,命令很简单通过git(需要有耐心哦,大家要慢慢等待下载的过程)

     $ git clone git://git.yoctoproject.org/poky

     $ cd poky

     $ git checkout -b zeus origin/zeus

如果大家需要参考更多信息,可以访问如下网站。

https://www.yoctoproject.org/docs/3.0.2/overview-manual/overview-manual.html


Yocto 是什么 

Yocto 是一种伞式项目,侧重于通过开放式嵌入内核,打造嵌入式系统 Linux 发行版,而不受硬件架构的限制。Yocto 本身并非发行版,而是帮助您构建Linux发行版的框架。Yocto 已然成为必可不少的首选工具。开发人员和嵌入式系统制造商可以根据其自身硬件和软件限制以及实际应用程序,量身打造最适合自己的 Linux 版本。

更重要的是,Yocto 内置各种现有工具,拥有大量的开源支持,以灵活多变的特点而闻名。丰富的工具、维护、模板和社区产品,可以帮助您完成各种无与伦比的特殊构建任务。

可复制此链接详细了解Yocto :https://www.yoctoproject.org/

 

Yocto 三大关键组件

  • BitBake ——实质上就是 Yocto 的构建系统引擎。它负责创建配方——构建特定系统所需的任务列表——以及解析元数据和执行配方。

  • OpenEmbedded-Core ——元数据。它保存了创建系统所需的基本配方、相关文件和类。构建时设定为通用,以便适用于各种基于 OpenEmbedded 的系统。

  • Poky ——包含一个基于 Linux 的全平台构建工具和各种其他技术,帮助各大团队以可靠的方式快速地开发新系统。Poky 基于各种架构生成文件系统镜像。其中的典型示例就是 QEMU全系统仿真,一种极其出色的嵌入式软件测试平台。

         Yocto 构建工作流程

Yocto 也支持其他关键组件(例如 QT、Chromium、LLVM 等)内置到嵌入式发行版中,这也是它极受欢迎的原因之一。

为什么选择 Yocto

尽管 Yocto 操作有点复杂,但它有很明显的优势:

  • 用户群体广泛,开发社区活跃,由Linux基金会出资扶持

  • 可以实现曾层级,用于各种任务,高度定制化,可添加特殊功能,自定义浏览器等

  • 在同类项目中,可以兼容的设备最多,可以添加大量的 SDK、工具和功能。

正是有了这些要素,Yocto 实现了高度可定制,同时还拥有强劲的支持,对于希望定制构建嵌入式系统的开发人员来说非常友好。

Yocto的缺点

Yocto 也有一些缺点。一方面,入门时的学习曲线稍微有点陡峭。对于时间有限的小型单个项目或小型团队来说,使用这个工具可能意义不大。另一方面,Yocto 的构建时间很长。这就降低了迭代频率,如用在时间紧迫的项目中,效果可能会不太理想,但借助类似 Incredibuild这样的加速工具便可大幅提速开发进程。

在Yocto体系中BitBake是非要重要的概念,另外由于Yocto项目构建且复杂,如何正确运用sstate缓存尤为重要。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值