应用yocto构建自己的针对于ARM开发板的文件系统

对于嵌入式开发(驱动和应用都涉及),需要经常编译u-boot,kernel,dtb,rootfs。

编译方法,我常用的有两种:

1 部署交叉编译工具链,单独编译(构建rootfs时,复杂一点)

2 应用yocto构建,至于什么是yocto参见官网 https://www.yoctoproject.org/

以下在ubuntu os 下说明通过yocto的编译方法。

一 部署yocto :

  • 1 需要装一些必要的软件工具:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \  build-essential chrpath  socat  libsdl1.2-dev 
sudo apt-get install 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 

ubuntu 14.04以上:
sudo apt-get install u-boot-tools 

  • 2 设置repo utility

mkdir ~/bin 
curl https://storage.googleapis.com/git-repo-downloads/repo  > ~/bin/repo 这个可能不成功,需要*
chmod a+x ~/bin/repo 
export PATH=~/bin:$PATH

可以将export PATH=~/bin:$PATH 放置到.bashrc的末尾。

  • 3 Yocoto Project Setup

git config --global user.name "Your Name" 
git config --global user.email "Your Email" 
git config --list

  • 4 创建目录名称 

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 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-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
repo sync

执行成功后:所包含内容如下

应用yocto构建自己的针对于ARM开发板的文件系统

  • 5 开始编译

DISTRO=fsl-imx-fb MACHINE=imx6ull14x14evk source fsl-setup-release.sh -b build-fb
bitbake fsl-image-qt5-validation-imx
重开一个终端或是机器reboot后重新编译需要:
source setup-environment <build-dir>
----
bitbake core-image-minimal -c populate_sdk

note:上述build-fb是唯一可执行bitbake(a python script)的地方

----

  • 6 定制kernel

1) 通过工具链编译

首先通过yocto环境编译出一个可用工具链,为了节省时间编译一个最小的文件系统

如:DISTRO=fsl-imx-fb MACHINE=mx6ull14x14evk bitbake core-image-minimal -c populate_sdk

编译成功之后会生成一个用于部署工具链的脚本,执行即可部署工具链到/opt目录***意,环境变量指在当前shell生效,可以添加到bashrc中。

安装toolchain:

source <toolchain install directory>/environment-setup-<toolchain script>

获得linux sourcecode

git clone https://source.codeaurora.org/external/imx/linux-imx -b imx_4.14.98-2.0.0_ga

git checkout -b rel_imx_4.14.98-2.0.0_ga

make menuconfig

make

2)通过yocto

首先编译一个目标开发板的kernel如下:

MACHINE=<> bitbake linux-imx

创建一个用户定制层

应用yocto构建自己的针对于ARM开发板的文件系统

应用yocto构建自己的针对于ARM开发板的文件系统

  • 7 定制uboot

1)部署工具链单独编译

2)通过yocto构建

类似kernel步骤

  • 8定制自己的rootfs

1)部署工具链单独编译(针对单独应用)

2)通过yocto构建

类似kernel步骤

DISTRO=fsl-imx-fb  MACHINE=imx6ull14x14evk source fsl-setup-release.sh -b build-custom

未完待续......

这里指记录通过yocto步骤:

应用yocto构建自己的针对于ARM开发板的文件系统

example:

在已部署的bsp环境下cd sources

参考meta-fsl-release/imx/meta-sdk这一层结构创建定制层。

有几点需要注意:

在编译目录下 conf中的bblayers.conf中加入meta-<custom>

加速编译步骤:几个编译目录共享cache

应用yocto构建自己的针对于ARM开发板的文件系统