天天看點

imx8qm Linux L4.9.51 BETA2源碼下載下傳及編譯環境搭建

1.編譯配置

$ DISTRO=<distro name> MACHINE=<machine name> source fsl-setup-release.sh -b <build dir>

DISTRO如下:

imx8qm Linux L4.9.51 BETA2源碼下載下傳及編譯環境搭建

MACHINE=imx8qmmek

-b imx8-build編譯生成檔案路徑

$ DISTRO=fsl-imx-x11 MACHINE=imx8qmmek source ./fsl-setup-release.sh -b imx8-build

注意以下兩個檔案:

imx8qm Linux L4.9.51 BETA2源碼下載下傳及編譯環境搭建

2.選擇yocto項目編譯選項

imx8qm Linux L4.9.51 BETA2源碼下載下傳及編譯環境搭建

$ bitbake fsl-image-validation-imx

3.bitbake選項

imx8qm Linux L4.9.51 BETA2源碼下載下傳及編譯環境搭建

4.u-boot配置

uboot一般配置UBOOT_CONFIG選項,它在local.conf檔案中,預設配置是sd boot,配置選項如下:

EMMC啟動則配置如下:

imx8qm Linux L4.9.51 BETA2源碼下載下傳及編譯環境搭建

$ 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目錄下。