天天看點

應用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開發闆的檔案系統