使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统

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

2 第一个基于Poky的系统

2.1 构建主机系统

  • Ubuntu:
$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm python3-subunit mesa-common-dev zstd liblz4-tool

  • Fedora

$ sudo dnf install gawk make wget tar bzip2 gzip python3 unzip perl patch diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath ccache perl-Data-Dumper perl-Text- perl-Thread-Queue perl-bignum socat python3-pexpect findutils which file cpio python python3-pip xz python3-GitPython python3-jinja2 SDL-devel xterm rpcgen mesa-libGL-devel perl-
FindBin perl-File-Compare perl-File-Copy per-locale zstd lz4

2.2 下载Poky 代码

在我们的开发主机系统上安装了所需的软件包后,我们可以使用 Git 下载当前 LTS 版本的 Poky 源代码,命令如下:


$ git clone https://git.yoctoproject.org/poky -b kirkstone

下载完成后,poky 目录中的内容如下:

使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统

2.3 准备构建环境

在poky目录中存在oe-init-build-env脚本,用于设置构建环境。


$ source oe-init-build-env [build-directory]

这里,[build-directory] 是一可选参数,用于指定配置环境的目录名称。如果为空,则默认为 build。

使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统

2.4 local.conf

初始化构建环境时,它会创建build/conf/local.conf文件。这个配置文件功能强大,几乎可以配置构建过程的方方面面。我们可以为自定义跨工具链设置目标机器和工具链主机架构,优化选项以最大限度地缩短构建时间等等。build/conf/local.conf文件内的注释是极好的文档,也是可能的变量及其默认值的参考。我们可能需要更改默认值的最小变量集如下:

MACHINE ??= "qemux86-64"

通过 MACHINE 变量,我们可以确定要构建的目标机器。在撰写本文时,Poky的参考BSP支持以下机器:

  • beaglebone-yocto

BeagleBone,是 32 位 ARM 的参考平台

  • genericx86

这是对基于x86的32位机器的通用支持

  • genericx86-64

这是对基于x86的64位机器的通用支持

  • edgerouter

这是 EdgeRouter Lite,是64位MIPS 的参考平台。

除了这些机器外,OpenEmbedded Core在meta目录中还提供了对以下快速仿真 (QEMU) 机器的支持:

  • qemuarm: QEMU ARMv7 仿真
  • qemuarmv5:这是 QEMU ARMv5 仿真
  • qemuarm64:这是 QEMU ARMv8 仿真
  • qemumips: 这是 QEMU MIPS 仿真
  • qemumips64: 这是 QEMU MIPS64 仿真
  • qemuppc: 这是 QEMU PowerPC 仿真
  • qemuppc64: 这是 QEMU PowerPC 64 仿真
  • qemux86-64: 这是 QEMU x86-64 仿真
  • qemux86: 这是 QEMU x86 仿真
  • qemuriscv32:这是 QEMU RISC-V 32 仿真
  • qemuriscv64: 这是 QEMU RISC-V 64 仿真

一些供应商提供的额外BSP层为其他机器提供支持。使用额外BSP层的过程参见第11章 "探索外部层"。

注意local.conf文件是覆盖整个Yocto项目工具中若干全局默认配置的便捷方法。基本上,我们可以更改或设置任何变量,例如在映像文件中添加额外的软件包。更改 build/conf/local.conf文件非常方便,但源代码管理系统通常不会跟踪此目录中的临时更改。

build/conf/local.conf 文件可以设置多个变量。值得花些时间阅读生成的文件注释,以便大致了解可以设置哪些变量。
构建目标映像Poky提供了几种预先设计好的映像配方,我们可以用它们来构建二进制映像。我们可以在 poky 目录下运行以下命令来查看可用图像列表:

$ ls meta*/recipes*/*images/*.bb 

所有配方提供的镜像都是一组解包和配置好的软件包,生成的文件系统可用于硬件或受支持的 QEMU 机器之一。
接下来,我们可以看看最常用的镜像列表:

  • core-image-minimal 镜像: 这是一个允许设备启动的小型镜像。它便于内核和引导加载器的测试和开发。
  • core-image-base: 该图像仅用于控制台,为目标设备提供基本硬件支持。
  • core-image-weston: 该镜像提供 Wayland 协议库和参考 Weston 合成器。
  • core-image-x11:这是一个带有终端的基本 X11 映像。
  • core-image-sato:这是一个支持 Sato 的镜像,为使用 X11 的移动设备提供移动环境。它提供终端、编辑器、文件管理器、媒体播放器等应用程序。
  • core-image-full-cmdline: 纯控制台镜像,安装了功能更全面的 Linux 系统功能。

社区还提供其他参考镜像。有几种镜像支持实时、initramfs 和 MTD(闪存工具)等功能。最好查看源代码或《Yocto 项目参考手册》(https://docs.yoctoproject.org/4.0.4/ref-manual/index.html )以获取完整的最新列表。

为目标构建镜像的过程很简单。但首先,在使 BitBake 之前,我们需要使用源代码 oe-init-build-env [build-directory] 来设置构建环境。要构建镜像,我们可以使用下面命令中的模板:

$ bitbake core-image-full-cmdline

使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统

  • 软件测试精品书籍文档下载持续更新 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

2.5 在QEMU中运行映像

我们可以使用硬件模拟来加快开发进程,因为它可以在不涉及任何实际硬件的情况下进行测试运行。幸运的是,大多数项目只有很小一部分依赖于硬件。
QEMU是一款免费的开源软件包,可执行硬件虚拟化。基于QEMU的机器允许在没有实际硬件的情况下进行测试和开发。目前支持 ARMv5、ARMv7、ARMv8、MIPS、MIPS64、PowerPC、PowerPC 64、RISC-V 32、RISC-V 64、x86 和 x86-64 仿真。我们将在 "通过仿真加速产品开发 - QEMU "一文中详细介绍QEMU的使用。

OpenEmbedded Core提供了runqemu脚本工具,它是一个封装工具,能让QEMU的使用更简单。运行脚本工具的方法如下:

$ runqemu <machine> <zimage> <filesystem>
$ runqemu qemux86-64 core-image-full-cmdline

这里, 是要用作 qemux86-64 的机器/架构,或任何其他受支持的机器。此外, 是内核的路径(例如,bzImage-qemux86-64.bin)。
最后, 是ext4 映像的路径(例如,filesystem-qemux86-64.ext4)或NFS目录的路径。前面调用 runqemu 时的所有参数都是可选的。只需运行runqemu 足以在设置了构建环境的 shell 中启动映像,因为它会自动获取构建环境时的默认设置。
因此,举例来说,如果我们运行runqemu qemux86-64 core-image-full-cmdline,就会看到与下面截图类似的内容:
使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统
在完成 Linux 启动后,你会看到登录提示:
使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统

我们可以使用空密码登录root账户。即使在QEMU内执行,系统也会像普通机器一样运行。在实际硬件中部署映像的过程各不相同,这取决于所使用的存储类型、引导加载程序等。不过,生成镜像的过程是相同的。我们将在第15章"启动自定义嵌入式 Linux"中探讨如何在真实硬件中构建和运行映像。

2.6 小结

在本章中,我们学习了设置Poky和构建第一个映像所需的步骤。然后,我们使用runqemu运行了映像,这让我们对可用功能有了很好的概览。文章来源地址https://www.toymoban.com/news/detail-709772.html

到了这里,关于使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索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日
    浏览(48)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

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

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

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

    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日
    浏览(54)
  • 在嵌入式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日
    浏览(37)
  • 【嵌入式】Linux开发工具arm-linux-gcc安装及使用

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

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

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

    2024年01月15日
    浏览(33)
  • 关于嵌入式开发的一些信息汇总:嵌入式C开发人员、嵌入式系统Linux

    这篇文章是关于嵌入式开发的一些基本信息,供想入行的人参考。有一些作者本人的想法,以及来自外网的大拿的文章翻译而来,原文链接在此Learning Linux for embedded systems,再次感谢,支持原创。 普通C开发人员和嵌入式C开发人员之间的 基本区别在于 ,因为嵌入式C程序被设

    2024年02月03日
    浏览(48)
  • 嵌入式开发:单片机嵌入式Linux学习路径

    SOC(System on a Chip)的本质区别在于架构和功能。低端SOC如基于Cortex-M架构的芯片,如STM32和NXP LPC1xxx系列,不具备MMU(Memory Management Unit),适用于轻量级实时操作系统如uCOS和FreeRTOS。高端SOC如基于Cortex-A架构的芯片,如三星、高通、飞卡、全志和瑞芯微等,具备MMU,支持虚拟内

    2024年02月15日
    浏览(43)
  • 嵌入式Qt 开发一个音乐播放器

    上篇文章:RK3568源码编译与交叉编译环境搭建,进行了OK3568开发板软件开发环境搭建,通过编译RK3568的源码,可以得到Qt开发的交叉编译相关工具。 本篇,就来在搭建好的软件开发中,进行Qt软件的开发测试。由于Qt是支持跨平台的,因此本篇的音乐播放器,先在Windows上编写

    2024年02月02日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包