使用Yocto进行嵌入式Linux开发1 Yocto简介

这篇具有很好参考价值的文章主要介绍了使用Yocto进行嵌入式Linux开发1 Yocto简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 Yocto简介

1.1 什么是Yocto项目?

Yocto项目是Linux基金会的一个工作组,它是一个开源协作项目,帮助开发人员创建基于Linux的定制系统,这些系统专为嵌入式产品而设计,与产品的硬件架构无关。Yocto项目提供了一个灵活的工具集和开发环境,使世界各地的嵌入式设备开发人员能够通过共享技术、软件栈、配置和最佳实践来创建这些定制的Linux映像。

全球数以千计的开发人员发现,Yocto项目在系统和应用程序开发、存档和管理以及用于速度、占用空间和内存利用率的定制方面都具有优势。该项目是提供嵌入式软件栈的标准。该项目允许针对多个硬件平台进行软件定制和构建交换,并允许维护和扩展软件栈。

Yocto提供模板、工具和方法,帮助我们为嵌入式产品创建基于Linux的定制系统,而无需考虑硬件架构。它可以根据glibc和 musl C 标准库以及实时操作系统 (RTOS Real-Time Operating System) 工具链生成定制的 Linux 发行版,用于裸机开发,如Zephyr项目所做的那样。

该项目由Linux基金会成员管理,独立于成员组织,成员组织以多种方式参与该项目并为其提供资源。

该项目成立于2010年,由众多硬件制造商、开源操作系统、供应商和电子公司合作完成,旨在减少重复工作,并为新老用户提供资源和信息。这些资源包括OpenEmbedded项目提供的核心系统组件OpenEmbedded Core。

Yocto项目汇集了多家公司、社区、项目和工具,其目的都是一样的--构建基于Linux的嵌入式产品。这些利益相关者同舟共济,在社区需求的驱动下携手合作。

为了便于我们理解Yocto项目的职责和成果,我们可以用计算器来进行类比。输入是一组描述我们所需的数据,也就是我们的规范。
输出则是我们想要的基于Linux的嵌入式产品。输出由操作系统的各个部分组成。它包括Linux内核、引导加载器和根文件系统(rootfs),它们被捆绑在一起并组织在一起工作。

Yocto项目的工具可用于所有中间步骤,以生成rootfs捆绑包和其他可交付成果。先前构建的软件组件可在不同的构建过程中重复使用(应用程序、库或任何软件组件)。

如果无法重复使用,则按照正确的顺序和所需的配置构建软件组件,包括从各自的源代码库(如Linux内核档案库(www.kernel.org)、GitHub、BitBucket 和 GitLab)获取所需的源代码。

Yocto项目的工具会准备好构建环境、实用程序和工具链,从而减少对主机软件的依赖。这些实用程序、版本和配置选项与主机Linux发行版无关,在产生相同结果的同时,最大限度地减少了需要依赖的主机实用程序的数量。它大大提高了确定性,减少了对构建主机的依赖,同时提高了首次构建的成功率。

BitBake和OpenEmbedded Core属于OpenEmbedded项目,而Poky等一些项目则属于Yocto项目。它们互为补充,在系统中发挥着特定的作用。我们将在本章和本书中详细了解它们是如何协同工作的。

1.2 OpenEmbedded项目与Yocto项目的联盟

OpenEmbedded项目是在2003年1月左右创建的,当时来自OpenZaurus项目的一些核心开发人员开始使用新的构建系统。从一开始,OpenEmbedded构建系统就是一个受 Gentoo Portage软件包系统启发并基于该系统的任务调度程序,名为BitBake。因此,项目的软件集和支持的机器列表迅速增加。

由于开发过程混乱且不协调,在需要更稳定、更完善代码库的产品中使用OpenEmbedded十分具有挑战性,因此Poky发行版应运而生。Poky最初是OpenEmbedded构建系统的一个子集,在有限的体系结构中拥有更完善、更稳定的代码库。此外,由于规模缩小,Poky还能开发一些亮点技术,如集成开发环境插件和快速模拟器 (QEMU) 集成,这些技术目前仍在使用中。

Yocto项目和OpenEmbedded项目在名为 OpenEmbedded Core的核心构建系统上进行了整合。它采用了Poky和OpenEmbedded的精华,强调更多使用附加组件、元数据和子集。2010年11月左右,Linux基金会宣布Yoct 项目将在Linux基金会赞助的项目下继续这项工作。

1.3 了解Poky

Poky是默认的Yocto项目参考发行版,使用OpenEmbedded构建系统技术。它由一系列工具、配置文件和配方数据(称为元数据)组成。它与平台无关,使用BitBake工具、OpenEmbedded Core和默认元数据集执行交叉编译,如下图所示。此外,它还提供了一种机制,用于构建和组合成千上万的分布式开源项目,从而形成一个完全可定制的、完整的、连贯的 Linux 软件栈。

Poky的主要目标是提供嵌入式开发人员所需的所有功能。

使用Yocto进行嵌入式Linux开发1 Yocto简介

1.3.1 BitBake

BitBake是一个任务调度器和执行系统,可解析Python和Shell脚本代码。解析后的代码会生成并运行任务,这些任务是根据代码的依赖关系排序的一系列步骤。

BitBake会评估所有可用的元数据,管理动态变量扩展、依赖关系和代码生成。此外,它还会跟踪所有任务以确保其完成,从而最大限度地利用处理资源,缩短构建时间并提高可预测性。BitBake 的开发在 https://lists.openembedded.org/g/bitbake-devel 邮件列表中进行,源代码在Poky的bitbake子目录中。

1.3.2 OpenEmbedded Core

OpenEmbedded Core元数据集提供了Poky构建系统的引擎。它提供核心功能,并力求通用和尽可能精简。它支持七种不同的处理器架构(ARM、ARM64、x86、x86-64、PowerPC、PowerPC 64、MIPS、MIPS64、RISC-V32 和 RISC-V 64),仅支持QEMU模拟的平台。
开发工作集中在 https://lists.openembedded.org/g/openembedded-
core (mailto:openembedded-core@lists.openembedded.org) 邮件列表,并将其元数据存放在Poky的meta子目录中。

1.3.2元数据

元数据(Metadata)包括配方和配置文件。它由Python和Shell Script文本文件混合组成,提供了非常灵活的工具。Poky利用它来扩展 OpenEmbedded Core,并包含两个不同的层,即其他元数据子集,如下所示:

  • meta-poky

该层提供默认和支持的发布策略、可视化品牌和元数据跟踪信息(维护者、上游状态等)。该层将作为一个精心策划的模板,供发行版构建者用于为其自定义发行版提供种子。

  • meta-yocto-bsp

提供板级支持包(BSP),作为 Yocto 项目开发和质量保证(QA)过程的参考硬件。
第9章 "使用 octo项目开发"将更详细地探讨元数据,并在我们编写配方时作为参考。

参考资料

  • 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
  • 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
  • python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
  • Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html

1.4 Yocto项目的发布Yocto

项目每六个月发布一次版本,分别在四月和十月。这种发布周期确保了持续的开发流程,同时提供了更多的测试点,并注重稳定性。只要一个版本准备就绪,它就会成为稳定版或长期支持 (LTS) 版。

稳定版和长期支持版的支持期有很大不同。稳定版的支持期为7个月,每个稳定版有1个月的重叠支持期。LTS版本的最低支持期为2年,可选择延长。官方支持期结束后,转为社区支持,最后达到生命周期结束(EOL)。

官方发布支持期结束后,如果有社区成员加入成为社区维护者,发布版本就可以转为社区支持版本。最后,当源代码在两个月内没有任何变化,或者社区维护者不再是活跃成员时,发布版本就会转为EOL。

下图显示了两个发布周期:
使用Yocto进行嵌入式Linux开发1 Yocto简介

下表提供了 Yocto 项目的版本、代号、发布日期和当前支持级别,如下所示。更新后的表格见 https://wiki.yoctoproject.org/

使用Yocto进行嵌入式Linux开发1 Yocto简介

使用Yocto进行嵌入式Linux开发1 Yocto简介文章来源地址https://www.toymoban.com/news/detail-709545.html

到了这里,关于使用Yocto进行嵌入式Linux开发1 Yocto简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • IMX6ULL采用YOCTO构建嵌入式Linux系统

    切换至工程项目文件夹,如:/home/user/Linux/Yocto/fsl-release-yocto,在该文件夹下使用如下命令: 在本地环境变量中指定repo服务器地址,可以使用清华的镜像源进行更新,即将如下内容复制到你的~/.bashrc里: 切换至Yocto工作路径/home/user/Linux/Yocto/fsl-release-yocto,然后使用如下repo命

    2024年02月02日
    浏览(12)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

    【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

            绘图与图表在嵌入式里有的比较多,尤其是图表,我们常在股票里看到的“图表折线/曲线 图/饼状图等”都可以用 Qt 的图表来实现。绘图和图表的内容本章主要介绍绘图和图表的基本操作,以简单的例子呈现绘图与图表的用法,目的就是快速入门绘图与图表,关

    2024年02月12日
    浏览(16)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘制实时图表——QChart 图表

    【嵌入式Qt开发入门】如何使用Qt进行绘制实时图表——QChart 图表

            要想使用 Qt Charts,我们的 Qt 版本得使用 Qt 5.7 之后的版本。其实 Qt Charts 并不是 Qt 5.7 才有的,是在 Qt 5.7 以前只有商业版本的 Qt 才有 Qt Charts。我们能免费下载的 Qt 版本都是社区(开源)版本。         Qt Charts 很方便的绘制我们常见的曲线图、折线图、柱状

    2024年02月12日
    浏览(15)
  • 【嵌入式Qt开发入门】如何使用Qt进行文本读写——QFile读写文本

    【嵌入式Qt开发入门】如何使用Qt进行文本读写——QFile读写文本

            在很多时候我们需要读写文本文件进行读写,比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本,比如修改了一个 txt 文件后保存,就需要对这个文件进行读写操作。本文介绍简单的文本文件读写,内容精简,让大家了解文本读写的基本操作。         QFile 类提

    2024年02月12日
    浏览(14)
  • 嵌入式 Linux 安全简介

    嵌入式 Linux 安全简介

    安全就是降低风险。 一方面所有者,即产品或服务的受益者(用户、制造商、企业主等)。所有者希望保护资产,即产品或服务中任何有价值的东西(数据、代码、声誉等)。 另一方面威胁行为者,即能够表现出威胁的人或事物(恶意黑客等),即任何能够以可能造成伤害

    2024年02月08日
    浏览(10)
  • 使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装

    使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装

    受限于每篇文章最多只能贴9张图的限制,这个教程被拆分成了多篇文章连载发布,完整目录结构如下图x所示。后续会发布完整教程的pdf文件,敬请期待。 图x 完整教程文档的目录 LVGL是一个开源免费(MIT许可)的嵌入式GUI组件(https://lvgl.io/),支持触摸屏操作,移植简单方

    2024年02月13日
    浏览(18)
  • 掌握嵌入式Linux编程0简介

    多年来,Linux一直是嵌入式计算的主流。然而,涵盖这一主题的书籍却少之又少:本书旨在填补这一空白。术语 \\\"嵌入式Linux \\\"没有很好的定义,可以应用于从恒温器到Wi-Fi路由器到工业控制单元等各种设备内部的操作系统。然而,它们都是建立在相同的基本开源软件上。这些就

    2024年02月07日
    浏览(10)
  • 在嵌入式Linux设备上使用Flutter开发图形界面(试水)

    在嵌入式Linux设备上使用Flutter开发图形界面(试水)

    链接: https://www.bilibili.com/video/BV1qE411N7aC/?spm_id_from=333.880.my_history.page.clickvd_source=0c443477abedebf2fdf7abecef55405d 我是跟着这个视频安装 Docker Desktop for Windows + 启用k8s k8s网址 https://github.com/AliyunContainerService/k8s-for-docker-desktop 主要步骤参照 https://www.toradex.com/zh-cn/blog/zai-qian-ru-shi-linux-sh

    2024年02月21日
    浏览(14)
  • 【嵌入式】Linux开发工具arm-linux-gcc安装及使用

    【嵌入式】Linux开发工具arm-linux-gcc安装及使用

    宿主机 执行编译、链接嵌入式软件的计算机 目标机 运行嵌入式软件的硬件平台 “本地”编译器 用来生成在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,例如 Windows 环境生成 Windows 目标代码。 交叉编译器 用来生成在其它平台上运行的目标代

    2024年01月17日
    浏览(26)
  • 嵌入式Linux 开发经验:platform_driver_register 的使用方法

    嵌入式Linux 开发经验:platform_driver_register 的使用方法

    嵌入式Linux 设备驱动开发时,经常遇到平台驱动 platform_driver_register 的注册,最近深入了看了驱动开发为何使用平台驱动 开发一个设备驱动时,为了实现 设备的 打开、关闭、控制等操作,可以注册为 Linux misc 设备,不过在这之前,可以先使用 platform_driver_register 注册平台驱动

    2024年01月15日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包