使用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日
    浏览(33)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

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

    2024年02月12日
    浏览(35)
  • 【嵌入式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日
    浏览(48)
  • 【嵌入式Qt开发入门】如何使用Qt进行文本读写——QFile读写文本

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

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

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

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

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

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

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

    2024年02月07日
    浏览(68)
  • 在嵌入式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日
    浏览(32)
  • 【嵌入式】Linux开发工具arm-linux-gcc安装及使用

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

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

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

    2024年01月15日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包