iMX6Ull采用Yocto构建嵌入式Linux系统之初始化Yocto构建目录 上

通过repo获取了Yocto项目源码(NXP官方的index: imx-manifest.git项目的imx-linux-zeus分支)之后,还需要初始化Yocto构建目录,用于Yocto构建嵌入式Linux系统的工作环境(实际上是创建一些文件夹、初始化一些变量值,得到的配置文件,用于构建特定的嵌入式Linux发行版本)。

在repo获取的Yocto项目源码路径(/home/jason/Linux/Yocto/fsl-release-yocto)下,Freescales提供了imx-setup-release.sh脚本。该脚本用于初始化Yocto构建目录,该脚本语法如下:

例如:

Windows下通过SecureCRT采用SSH方式登录Ubuntu,在SecureCRT终端中运行上面的命令,表示创建了一个基于imx6ull14x14evk硬件平台,嵌入式Linux系统发行版为fsl-imx-fb的Yocto构建环境,位于/home/jason/Linux/Yocto/fsl-release-yocto/build路劲下。

imx-setup-release.sh脚本运行

运行imx-setup-release.sh脚本之前,需要给imx-setup-release.sh脚本使用chmod 777分配可执行权限:

然后在imx-setup-release.sh所在路劲下输入以下命令,执行imx-setup-release.sh脚本:

imx-setup-release.sh脚本运行后,会先让阅读一些EULA许可:

阅读完成后(也可以按"q"退出阅读,按”y“接受EULA),即完成了Yocto构建目录的初始化。

该脚本运行结束后,会自动生成build文件夹,并自动切换至build路劲,后续系统的构建过程就是在该build文件夹下完成的。同时,在build文件夹下,还会生成一个conf文件夹:

该conf文件夹中有两个重要的文件:bblayers.conf和local.conf两个配置文件,后面将会详细解析:

  • <build dir>/conf/bblayer.conf:该配置文件定义了构建嵌入式Linux系统发行版所需要使用的metalayers。

  • <build dir>/conf/local.conf:该配置文件定义了MACHINE和DISTRO的配置项。

imx-setup-release.sh脚本解析

imx-setup-release.sh脚本运行时,需要输入3个主要参数:

  • DISTRO=fsl-imx-fb

  • MACHINE=imx6ull14x14evk

  • -b build

总体来说,imx-setup-release.sh脚本通过这3个参数来确定了构建环境,其中,-b build生成了一个build文件夹,用于存放Yocto在构建系统过程中产生的临时文件、构建日志以及最终生成的安装文件等。同时,Yocto根据DISTRO和MACHINE这两个参数,找到相对应的配置文件(.conf),这些配置文件定义了所需构建的嵌入式Linux系统的功能和状态。

imx-setup-release.sh脚本是通过如下命令执行的:

在imx-setup-release.sh脚本中,有如下几个地方需要了解:

第22行,设置了变量PROGNAME为“setup-environment”,在imx-setup-release.sh脚本所在的路劲下,有一个名叫“setup-environment”的shell脚本,在imx-setup-release.sh脚本中,会调用setup-environment脚本。

第59行,通过脚本参数-b build,设置变量BUILD_DIR为build,用于创建工作目录。

第119行,通过脚本参数 DISTRO=fsl-imx-fb,设置变量DISTRO为fsl-imx-fb,用于设置嵌入式Linux系统的发型版本设置,在移植部分会详细讲解DISTRO。

第156行,通过DISTRO和MACHINE两个参数,调用PROGNAME脚本,即setup-environment脚本。关于setup-environment脚本,下一小节中会进行描述。

第169~195行,比较重要的部分,将使用到的Layers写入build/conf/bblayers.conf文件中,用于设置构建嵌入式Linux系统所使用到的Layers。关于Layers的概念,后续章节会详细描述。

setup-environment脚本解析

在imx-setup-release.sh脚本中,会通过DISTRO=$FSLDISTRO MACHINE=$MACHINE . ./$PROGNAME $BUILD_DIR调用setup-environment脚本。输入 ./setup-environment -h命令,查看setup-environment脚本帮助信息,该信息列出了Yocto路径下支持的MACHINE。

在setup-environmet脚本中,第92行,通过MACHINE变量值找到相应的.conf文件,该.conf文件用来配置嵌入式Linux发行版。在/home/jason/Linux/Yocto/fsl-release-yocto/sources路径下,有很多的meta-xxx文件夹,在这些文件夹中有各种不同的machine和distro文件夹,在这两个文件下下面有不同的配置文件。通过imx-setup-release.sh脚本,就能确定所使用的是哪个machine、distro下的配置文件,用于配置所需构建的嵌入式Linux发行版。

总的来说,imx-setup-release.sh脚本,主要实现了一下三个重要功能,用于配置所需构建的嵌入式Linux系统的发行版:

  • 创建Yocto构建工作环境,新建build文件夹

  • 将layers、machine、distro等信息写入配置文件:

    • <build dir>/conf/bblayer.conf:该配置文件定义了构建嵌入式Linux系统发行版所需要使用的metalayers。

    • <build dir>/conf/local.conf:该配置文件定义了MACHINE和DISTRO的配置项。

  • 根据DISTRO和MACHINE这两个参数,找到相应路径下的配置文件(.conf)。这些配置文件定义了需要构建的嵌入式Linux的功能和状态。

后续在根据不同的硬件板卡及软件需求定义相应的嵌入式Linux发行版时,会详细的描述如何修改imx-setup-release.sh脚本,以及相关的MACHINE、DISTRO对应的.conf文件的修改。

DISTRO

DISTRO是Distrobution(发行版)的缩写。一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。但是对于嵌入式Linux发行版来说,会根据实际需求进行相应的裁剪,例如,对于大多数嵌入式Linux发行版,就不需要桌面环境、办公套件、编译器等软件工具。

在使用imx-setup-release.sh脚本初始化Yocto构建目录时,会使用到DISTRO参数,用于指定嵌入式Linux的发行版本。实际上,在/home/jason/Linux/Yocto/fsl-release-yocto/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运行的硬件平台。实际上,在/home/jason/Linux/Yocto/fsl-release-yocto/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运行的硬件平台 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值