谷动谷力

 找回密码
 立即注册
查看: 5845|回复: 0
打印 上一主题 下一主题
收起左侧

【i.MX6】 Yocto 项目编译uboot Linux 内核及文件系统

[复制链接]
跳转到指定楼层
楼主
发表于 2022-5-7 08:58:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【i.MX6】 Yocto 项目编译uboot Linux 内核及文件系统



本文是关于 i.MX6 平台搭建 Yocto 项目环境,主机环境是 Ubuntu16.04 ,硬件环境为 i.MX6ULEVK 。
ps:一个 Yocto 项目至少需要 120GB 的储存大小,所以在创建虚拟机时需要注意相关参数的设定。内存建议设定为 4GB。

一、Yocto 环境搭建
1. 安装 repo工具。
    repo 是基于 git 的仓库管理工具,本质是一个python脚本。 repo 可使用的命令有很多,如初始化命令“repo init”,可用的参数有“-u”指定连接到的 manifest 仓库地址,“-m”选择仓库中的某个 manifest 文件,“-b”选择一个 manifest 仓库的某一分支。可以通过“repo help”对所有命令进行查看了解。
    如下 repo 工具下载方法需要登录外网:

$ mkdir ~/bin
$ PATH=~/binPATH
$ chmod a+x ~/bin/repo
   
    ps:若无法登录外网,则可选择国内下载网址:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

2. 安装必要工具包。
    Yocto 项目的编译过程是根据已编写好的 Makefile 文件自动进行的,在编译过程中需要调用很多工具,且编译所花费的时间通常比较长,所以在准备阶段需要将工具包安装完备,减少不必要的纠错补正工作。本文对工具的具体使用方法暂不做详细描述。
    安装命令如下:
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential \
chrpath socat libsdl1.2-dev xterm sed cvs subversion coreutils texi2html \
docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils \
libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop \
asciidoc

3. 设定 git 账号。
    Yocto 项目的代码是从 git 仓库中下载下来的,因此对应需要为本地环境设置 git 账号:
$ git config --global user.name "your name"
$ git config --global user.email your@example.com

4. Yocto 项目设定:
$ cd ~
$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_ga.xml
$ repo sync

5. Yocto 项目生成后结果如下(链接文件自行用命令时“ln -s”创建):


二、Yocto BSP 编译


1. 设定编译参数和编译效能。
    ① DISTRO 是发行版的选择,有四种不同的选择“fsl-imx-x11”、“fsl-imx-wayland”、“fsl-imx-xwayland”及“fsl-imx-fb”,这里我们选择 fsl-imx-x11,只支持 X11 graphics。


    ② MACHINE 是对开发板型号的选择,这里我们使用的MX6ULEVK ,则对应设定 imx6ulevk。
    ③
source 指定需要执行的脚本。
    ④
参数“-b”指定了建立的新文件夹的名称。

$ DISTRO=fsl-imx-x11 MACHINE=imx6ulevk source fsl-setup-release.sh -b build-x11
$ cd ~/imx-yocto-bsp
$ vim build-x11/conf/local.conf
   
    ⑤ 文件 local.conf 增加如下参数的设定,参数设置越大越吃资源,但效能也越高,具体要根据电脑自身能力设定:
BB_NUMBER_THREADS = “12”
PARALLEL_MAKE = “-j 1”                        //该参数不要改

2. 开始编译。
    使用 bitbake 命令编译一个特定的项目,根据需要进行选择,这里选择不包含qt内容的GUI 编译 i.MX 镜像的“fsl-image-validation-imx”项目。
    执行编译命令:
$ bitbake fsl-image-validation-imx



3. 编译结果:会在路径 build-x11/tmp/deploy/images/imx6ulevk 下生成:
    uboot:u-boot-sd-optee-2018.03-r0.imx                                    
    Kernel:zImage--4.14.98-r0-imx6ulevk-DATE.bin
    File System:fsl-image-validation-imx-imx6ulevk-DATE.rootfs.tar.bz2
    *DATE:编译日期的年/月/日/时/分/秒

4. 执行编译工具链命令:

$ bitbake fsl-image-validation-imx -c populate_sdk



5. 编译结果:会在路径 build-x11/tmp/deploy/sdk 下生成工具链安装脚本:
    fsl-imx-x11-glibc-x86_64-fsl-image-validation-imx-corexa7hf-neon-toolchain-4.14-sumo.sh

6. 除了以上对一个完整 Yocto 项目进行编译外,bitbake 命令还可以对 Kernel 、 u-boot 等进行单独编译,命令的使用基本相同,以 Kernel 为例,
    可执行如下命令:

$ bitbake -c compile linux-imx
$ bitbake -c deploy linux-imx
   
    其中“-c compile”是对 Kernel 进行编译,“-c deploy”是将编译好的镜像文件 update 到deploy 文件夹下面。

【参考资料】
1. NXP 官网:《i.MX_Ycoto_Project_User's_Guide》


+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-11-18 08:15 , Processed in 0.447578 second(s), 40 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表