这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 迅为-i.MX6Q开发板Yocto环境搭建

共2条 1/1 1 跳转至

迅为-i.MX6Q开发板Yocto环境搭建

助工
2019-07-19 10:53:49     打赏
Yocto Project简介

Yocto Project™ 是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和嵌入+式产品,而无需关心硬件体系。适合嵌入式Linux开发人员使用。查看Yocto Project Quick Start 

 

相关术语

Poky

Poky是Yocto Project的参考发布版本。它包括OpenEmbedded构建系统(BitBake and OpenEmbedded Core)和一系列metadata,帮助开发者构建自己的distro。你可以下载Poky和使用它去逐步搭建自己的发布版本。需要注意的是Poky不包括二进制文件,它是一个关于搭建编译你自己制定的Linux发布版本的一个源代码用例。

Bitbake

一种软件组建自动化工具程式,像所有的build工具一样(比如make,ant,jam)控制如何去构建系统并且解决构建依赖。但是又区别于功能单一的工程管理工具(比如make),bitbake不是基于把依赖写死了的makefile,而是收集和管理大量之间没有依赖关系的描述文件(这里我们称为包的配方),然后自动按照正确的顺序进行构建。oe代表OpenEmbedded,而openembedded是一些用来交叉编译,安装和打包的metadata(元数据)。会获取*.bb文件中包的依赖关系的命令格式。

OpenEmbedded-Core

是一些脚本(shell和Python脚本)和数据构成的自动构建系统。

Metadata

Recipes(配方):(.bb/.bbappend)组件的逻辑单元的构建规范,用来获取源代码、构建和打包组件; 
Class:(.bbclass)包括各个recipes之间共享的相同的功能; 
Configuration:(.conf)定义Poky如何的各种配置文件; 
Layers:一系列相同的recipes,就像meta-fsl-arm。

i.MX 基于Yocto Project 环境搭建

下记内容主要基于 i.MX_Yocto_Project_User’s_Guide.pdf进行整理。

Ubuntu下载编译Yocto所需要的工具包

设置repo工具

 

下载recipe layers

下载之后,在fsl-release-bsp/sources目录下会有meta文件如下: 
base meta-browser meta-fsl-arm meta-fsl-arm-extra meta-fsl-bsp-release meta-fsl-demos meta-openembedded meta-qt5 poky

每个文件夹里面存放着各个layers所需的文件来源信息。bitbake命令就是通过解析里面的文件来获取并下载编译所需的源代码。

配置环境

1. DISTRO=fsl-imx-x11 MACHINE=imx6dlsabresd source fsl-setup-release.sh -b build-x11

DISTRO指定的内容标记要生成的distribution,固定为以下内容的一个: 

fsl-setup-release.sh脚本会根据MACHINE指定的内容从sources/meta-fsl-arm/conf/machine里面的文件选择对应的.conf进行编译。

-b选项指定配置和编译的内容存放的路径放在build-x11。 

当执行该脚本之后,会在build-x11/ 目录下生成配置文件。

在build-x11/conf/local.conf会指定DL_DIR的内容,该路径用于下载并保存编译所需要的包。在bitbake在编译的时候会先去该路径

查看有没有所需的包,如果没有,就从网上下载到该目录下。一般情况下这些包都是固定的,在团队开发中可由一人先下载,之

后共享出来,然后每个人将DL_DIR指定到该共享文件夹就可以省去网上下载的麻烦。

Build-x11/conf/bblayers.conf会指定所需要的layers。

bitbake在启动时会执行bitbake.conf,bitbake.conf会装载用户提供的local.conf。然后根据用户在local.conf

中定义的硬件平台MACHINE和发布目标DISTRO装载machine子目录和distro子目录的配置文件。machine子

目录里是硬件平台相关的配置文件。distro子目录里是与发布目标相关的配置文件。配置文件负责设置

bitbake内部使用的环境变量。这些变量会影响整个构建过程。

每次新打开一个窗口,都要进行一次source操作。
#source setup-environment <build-dir>

编译

执行编译之前,先要在/home/VictorHuang/work/downloads执行脚本./mk-empty-dir创建git关联空的目录。正

常使用 DL_DIR 下载到的包都是包括 .git 的目录的,编译的时候会去检查 .git的内容。但是我们使用git管理并

共享downloads/的内容,这里将 .git 相关的内容给忽略掉。所以编译之前要创建 .git 相关的空目录。

执行#bitbake image-name

其中image-name的内容为以下的一个: 

 

执行完毕之后会在build-x11/tmp/work-shared/imx6dlsabresd/kernel-source看到kernel的源代码和 
tmp/work/imx6dlsabresd-poky-linux-gnueabi/linux-imx/4.1.15-r0/git

在build-x11/tmp/deploy/images目录下会有编译生成的所有images文件。 
在build-x11/tmp目录下常见的目录为:

http://blog.csdn.net/rocky_zhm/article/details/48266657 

U-Boot所在路径

通用路径为: 
<builddirectory>/tmp/work/<machine>-poky-linuxgnueabi/u-boot-imx/<version>/git 
比如为: 
build-x11/tmp/work/imx6dlsabresd-poky-linux-gnueabi/u-boot-imx/2016.03-r0/git

单独编译某一模块

#bitbake -c compile -f module-name

-f是为了强制编译

module-name 是模块的名称,这个名称可以在 tmp/work/imx6dlsabresd-poky-linux-gnueabi/目录下看。

例如:想单独编译一下kernel,可以用以下命令。

#bitbake -c compile -f linux-imx

编译后重新发布:

#bitbake -c deploy module-name

例如:

#bitbake -c deploy linux-imx

查看列表

#bitbake -c listtasks linux-imx

mk-empty-dir脚本




工程师
2019-07-19 13:21:57     打赏
2楼

学习一下


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]