一、YOCTO編譯環境的搭建
參照《freescale_imx6_yocto.pdf》文檔P14-P16頁構建yocto編譯環境。同時可參考https://linux.cn/article-8268-1.html?amputm_medium=rss。
具體操作步驟如下(有些命令需要su權限,視具體情況而定):
以下操作基於ubuntu 16.04 64bit系統,預留至少120G硬盤空間,推薦2G內存。
1、apt-get update
2、apt-get install wget git-core unzip make gcc g++ build-essentialsubversion sed autoconf automake texi2html texinfo coreutils diffstatpython-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-devlibglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawkfop
3、copy poky 的 morty 穩定分支:
git clone -b mortygit://git.yoctoproject.org/poky.git
4、進入poky目錄,然后運行下面的命令為 Yocto 開發環境設置(設置/導出)一些環境變量:
source oe-init-build-env
5、若正常,則如下圖所示,會自動進入build目錄:
6、修改build/conf/local.conf文件,如提供的local.conf文件所示。
7、編譯:
bitbake core-image-minimal
一般要編譯幾個小時,電腦配置不高時,有可能要編譯一天。
8、編譯完成后,
runqemu qemux86-64為運行新的基於 Yocto 的 Linux 發行版的 qemu 打開一個新屏幕,則表示安裝完成。
二、YOCTO BSP編譯:
參考http://blog.csdn.net/wince_lover/article/details/51456745來編譯yocto的BSP。具體步驟如下:
1、 下載repo:
mkdir ~/bin (this step may not be needed if the bin folderalready exists)
curlhttp://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2、設置搜索路徑:
export PATH=~/bin:$PATH
3、設置用戶名和郵箱
gitconfig --global user.name "Your Name"
gitconfig --global user.email "Your Email"
gitconfig –list
4、獲取linux BSP:
mkdir fsl-release-bsp
cd fsl-release-bsp
repo init -ugit://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.52-1.1.0_ga
repo sync
說明:
reposync 將會是一個漫長的等待過程,中間可能會出錯。如果出錯了就重新repo sync,直到成功為止。另外有的時候可能會很長時間不動了,看下載的流量也一直是0,也可以ctrl+C終止,然后重新repo sync。
注意在yocto下,我們下載BSP實際上只是一些配置文件,實際編譯的時候邊編譯邊下載的,所以在我們下載的BSP里面是找不到代碼的。
5、編譯BSP前的准備工作:
格式:
DISTRO=<distro name>MACHINE=<machine name> source fsl-setup-release.sh -b <build dir>
distro name有下面4個值
fsl-imx-x11 說明只支持X11 graphics
fsl-imx-wayland 說明只支持Wayland weston graphics
fsl-imx-xwayland 說明支持 Wayland graphics 和 X11.
fsl-imx-fb 說明只支持Frame Buffer graphics 不支持 X11 和 Wayland
machine name 對應我們的開發板的類型,有下面的值
imx6qpsabreauto 、 imx6qpsabresd、 imx6ulevk 、imx6dlsabreauto
imx6dlsabresd 、 imx6qsabreauto 、 imx6qsabresd 、 imx6slevk 、 imx6solosabreauto
imx6solosabresd 、 imx6sxsabresd 、 imx6sxsabreauto 、 imx7dsabresd
build dir 是編譯的目錄,我們可以任意指定一個目錄名,編譯的時候將在當前目錄下新建這個目錄。
例如我是這樣設置的
MACHINE=imx6qsabresd DISTRO=fsl-imx-x11 source ./fsl-setup-release.sh -bimx6q-x11
首次運行這個命令的時候會提示時候遵循EULA協議,我們選y就好了。
6、編譯BSP:
設置好后開始編譯。
我們用bitbake來編譯的。
格式是 bitbake <project name>
project name有下面的選項
core-image-minimal 這個是構建一個能啟動的最小的系統
core-image-base 這個是構建一個只有命令行的系統
core-image-sato 這個是一個支持X11圖形界面的系統
fsl-image-machine-test 這個imx內核的只有命令行的系統
fsl-image-gui 這個是IMX內核的不支持qt的圖形界面的系統
fsl-image-qt5 這個是支持qt5的圖形界面的系統
例如我運行的命令是
bitbake fsl-image-qt5
7、
編譯過程中,有可能會產生錯誤,產生錯誤的時候先嘗試再次編譯,如果還有相同的錯誤,再解決。
編譯完成后,在fsl-release-bsp/imx6q-x11/tmp/deploy/images/imx6qsabresd目錄下會產生uboot,zImage,rootfs等映象文件。
三、工具鏈的制作:
1、 GCC工具鏈安裝包的制作:
bitbakemeta-toolchain
編譯完成后,在imx6q-x11/tmp/deploy/sdk/目錄下生成一個可執行的sh文件。在別的PC上安裝即可。
2、 QT工具鏈安裝包的制作:
bitbakemeta-toolchain-qt5
注意事項:
1、使用ubuntu 16.04 64bit,不要使用ubuntu12.04,避免出現一些無法解決的錯誤。
2、在編譯過程中,有可能有些錯誤,一般在NXP論壇上都能找到解決方法,視具體問題而定。