應用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

執行成功後:所包含內容如下

  • 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

創建一個用戶定製層

  • 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步驟:

example:

在已部署的bsp環境下cd sources

參考meta-fsl-release/imx/meta-sdk這一層結構創建定製層。

有幾點需要注意:

在編譯目錄下 conf中的bblayers.conf中加入meta-<custom>

加速編譯步驟:幾個編譯目錄共享cache

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章