Yocto学习笔记(二)下载IMX Yocto

一、说在前面

上一节介绍了关于Yocto相关的概念,这一节讲述如何下载编译Yocto。几乎每个芯片厂商都会基于Yocto开发一套适配自家芯片的Linux构建方法,我以NXP提供的IMX系列Yocto作为参考。学习一下下载编译Yocto。值得特别说明的是,经过我的实操,我感觉在国内下载Yocto源码并非易事,原因你懂的~不爬点梯子还真看不见外面的世界…

二、下载Yocto

  1. 首先安装repo
sudo apt install repo
  1. 通过repo下载
curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo
  1. 下载NXP Yocto
    NXP Yocto的官方地址是https://github.com/nxp-imx/meta-imx
$ ./repo init -u https://github.com/nxp-imx/imx-manifest.git -b imx-linux-nanbield -m imx-6.6.3-1.0.0.xml
$ repo sync

然后经过漫长的等待吧…同步完成如下
在这里插入图片描述

三、文件结构

可以看一下source文件夹结构,有很多的meta-xxx文件夹
在这里插入图片描述
这些以 meta 开头的文件夹通常是指 Yocto Layer(Yocto 层)。Yocto Layer 是 Yocto 构建系统中用于组织和管理软件包、配置和元数据的一种方式。
Yocto 构建系统采用分层的设计模式,允许用户将不同的软件包、配置和功能组织到各个层中,以实现更灵活、可定制和可维护的构建流程。每个 Yocto Layer 通常包含了一组相关的软件包、配置文件、类文件、补丁等,以及一些额外的元数据信息,用于描述该层的特性和功能。
常见的 Yocto Layer 包括:
IMX版本层

  • meta-imx
    — meta-bsp:meta-freescale, poky 和 metaopenembedded 层的更新
    — meta-sdk:meta-freescale-distros 的更新
    — meta-ml:机器学习recipe
    — meta-v2x:仅供 i.MX 8DXL 使用的 V2X recipe
    — meta-cockpit:i.MX 8QuadMax 使用的驾驶舱recipe

Yocto Project 社区层

  • meta-freescale:为 base 和 i.MX Arm® 参考设计板提供支持
  • meta-freescale-3rdparty:为第三方的和合作伙伴的电路板提供支持
  • meta-freescale-distro:辅助电路板开发和实现功能的额外内容
  • fsl-community-bsp-base:经常重命名为 base。为 FSL 社区 BSP 提供 base 配置
  • meta-openembedded:针对 OE-core 环境的层的集合
  • poky:Poky 中的基础 Yocto 项目内容。详情请见 Poky README
  • meta-browser:提供几种浏览器
  • meta-qt6:提供 Qt 6
  • meta-timesys:提供 Vigiles 工具,用于监控和通知 BSP 漏洞

通过添加和管理不同的 Yocto Layer,用户可以定制化地构建适用于各种嵌入式系统的软件栈

四、Imx-setup-release.sh脚本

i.MX 提供了一个脚本 imx-setup-release.sh,可以简化 i.MX 机器的设置。要使用此脚本,需要指定被构建的机器的名称以及所需的图形后端。脚本会为指定的机器和后端设置目录和配置文件。
在 meta-imx 层,i.MX 提供了新的或更新的机器配置,它们会覆盖 meta-freescale 机器配置。imx-setup-release.sh 脚本会将这些文件复制到 meta-freescale/conf/machine 目录中。
每个 build 文件夹必须配置为只使用一个 distro(发行版)。每次DISTRO_FEATURES 变更时,都需要新建一个 build 文件夹。每个图形后端帧缓冲区(Frame Buffer)、Wayland 和 XWayland 都有一个 distro 配置。如果未指定 distro 文件,则默认设置为XWayland distro。distro 配置保存在 local.conf 文件中的 distro setting 中,并在 bitbake 运行时显示。
运行该脚本

DISTRO=fsl-ims-fb MACHINE=imx6ull14x14evkk source imx-setup-release.sh -b build

脚本会创建build文件夹,包含两个重要文件:

  • /conf/bblayers.conf: 定义构建嵌入式LINUX系统发行版所需使用的metalayers
  • /conf/local.conf: 定义了MACHINE和DISTRO的配置项

总的来说,该脚本主要实现以下三个重要功能,用于配置所需构建的Linux发行版:

  • 创建Yocto工作环境,新建build文件夹
  • 将layers, machine, distro等信息写入配置文件:
    ○ /conf/bblayers.conf: 定义构建嵌入式LINUX系统发行版所需使用的metalayers
    ○ /conf/local.conf: 定义了MACHINE和DISTRO的配置项
  • 根据DISTRO和MACHINE这两个参数,找到相应路径下的配置文件.conf,这些配置文件定义了需构建的Linux的功能和状态

五、关于DISTRO和MACHINE

DISTRO

DISTRO是Distrobution(发行版)的缩写。一个典型的Linux发行版包括: Linux内核,一些GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。但是对于嵌入式Linux发行版来说,会根据实际需求进行相应的裁剪,例如,对于大多数嵌入式Linux发行版,就不需要桌面环境、办公套件、编译器等软件工具。
在使用imx-setup-release.sh脚本初始化Yocto构建目录时,会使用到DISTRO参数,用于指定嵌入式Linux的发行版本。实际上,在source路径下,有一些distro的文件夹,在distro文件夹下,有对应的.conf文件,这些.conf的文件名与DISTRO参数值一致,换句话说, imx-setup-release.sh脚本会根据DISTRO的值,在source路径下,找到DISTRO值所对应的.conf文件,例如: DISTRO= fsl-imx-fb,则会找到sources/meta-imx/meta-sdk/conf/distro路径下的fsl-imx-fb.conf文件,在该文件中定义了一些变量,用于配置嵌入式Linux发行版。

MACHINE

Linux系统需要运行在相应的硬件平台上,相应的,对于嵌入式Linux系统也有对应的嵌入式硬件平台,不同的嵌入式硬件平台之间硬件配置不同,因此,采用MACHINE,用于配置不同的硬件平台。
和DISTRO一样,在使用imx-setup-release.sh脚本初始化Yocto构建目录时,会使用到MACHINE参数,用于指定嵌入式Linux运行的硬件平台。实际上,在source路径下,有一些machine的文件夹,在machine文件夹下,有对应的.conf文件,这些.conf的文件名与MACHINE参数值一致,换句话说,imx-setup-release.sh脚本会根据MACHINE的值,在source路径下,找到MACHINE值所对应的.conf文件,例如: MACHINE=imx6ull14x14evk,则会找到sources/meta-imx/meta-bsp/conf/machine路径下的imx6ull14x14evk.conf文件,在该文件中定义了一些变量,用于配置嵌入式Linux运行的硬件平台。

关于如何配置这些文件,后续继续更新…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值