1.編譯配置
$ DISTRO=<distro name> MACHINE=<machine name> source fsl-setup-release.sh -b <build dir>
DISTRO如下:
MACHINE=imx8qmmek
-b imx8-build編譯生成檔案路徑
$ DISTRO=fsl-imx-x11 MACHINE=imx8qmmek source ./fsl-setup-release.sh -b imx8-build
注意以下兩個檔案:
2.選擇yocto項目編譯選項
$ bitbake fsl-image-validation-imx
3.bitbake選項
4.u-boot配置
uboot一般配置UBOOT_CONFIG選項,它在local.conf檔案中,預設配置是sd boot,配置選項如下:
EMMC啟動則配置如下:
$ echo "UBOOT_CONFIG = \"emmc\"" >> conf/local.conf
5.重新打開終端需要再次運作環境變量
$ source setup-environment imx-buiild
編譯生成路徑:imx-yocto-bsp\imx8-build\tmp\deploy\images\imx8qmmek
6.代碼的位置
Linux的kernel的源代碼在:
imx-yocto-bsp\imx8-build\tmp\work\imx8qmmek-poky-linux\linux-imx\4.9.51-r0\git
git是一個連結檔案,實際的源代碼在:
imx-yocto-bsp\imx8-build\tmp\work-shared\imx8qmmek\kernel-source
u-boot的源代碼的位置在
imx-yocto-bsp\imx8-build\tmp\work\imx8qmmek-poky-linux\u-boot-imx\2017.03-r0\git
7. 編譯出來的image的位置
編譯出來的image在 imx-yocto-bsp\imx8-build\tmp\deploy\images\imx8qmmek目錄下
包括的u-boot zImage rootfs
8. 編譯的log資訊
在我們編譯的過程中,在Terminal中是看不到編譯的log資訊的,那麼我們怎麼直到編譯的時候我們的代碼有沒有編譯到,有沒有警告呢?
其實yocto已經幫我們儲存了編譯的log資訊。
Linux kernel的編譯的log就在
imx-yocto-bsp\imx8-build\tmp\work\imx8qmmek-poky-linux\linux-imx\4.9.51-r0\temp
目錄下。
例如 log.do_compile就是編譯核心的log資訊 。
u-boot的編譯的log就在\imx-yocto-bsp\imx8-build\tmp\work\imx8qmmek-poky-linux\u-boot-imx\2017.03-r0\temp目錄下
其他的也類似在對應的目錄的temp目錄下。
9. 如何單獨編譯kernel和u-boot
我們修改了kernel或者u-boot的源代碼,直接運作bitbake fsl-image-qt5是不會編譯我們修改的源代碼的。是以就需要我們單獨編譯源代碼。
配置menuconfig
bitbake -c menuconfig -v linux-imx
單獨編譯kernel
bitbake -c compile -f -v linux-imx
bitbake linux-imx -c compile_kernelmodules -f -v
bitbake -c deploy -f -v linux-imx
bitbake fsl-image-validation-imx
執行上面的指令将重新編譯核心、裝置樹、子產品。并且重新生成rootfs 。
實際上我們修改了核心,實際上往往不需要更新rootfs的,而我們 執行bitbake fsl-image-validation-imx時會重新生成rootfs,這個操作會耗費很長的時間。
是以我們也可以隻執行
bitbake -c compile -f -v linux-imx
bitbake linux-imx -c compile_kernelmodules -f -v
bitbake -c deploy -f -v linux-imx
這兩個指令,然後再自己把zImage和裝置樹檔案拷出來。
執行上面個三個指令編譯出來的zImage和裝置樹在
imx-yocto-bsp\imx8-build\tmp\work\imx8qmmek-poky-linux\linux-imx\4.9.51-r0\deploy-linux-imx
目錄下。
單獨編譯u-boot
bitbake -c compile -f -v u-boot-imx
bitbake -c deploy -f -v u-boot-imx
bitbake fsl-image-validation-imx
同樣單獨編譯完u-boot,執行bitbake fsl-image-validation-imx時會重新生成rootfs,會耗費很長的時間。
是以我們也可以隻執行
bitbake -c compile -f -v u-boot-imx
bitbake -c deploy -f -v u-boot-imx
然後把u-boot拷出來
編譯出來的u-boot在
imx-yocto-bsp\imx8-build\tmp\work\imx8qmmek-poky-linux\u-boot-imx\2017.03-r0\deploy-u-boot-imx目錄下。