iMX8QXP BSP Standalone Building Up

关键字 :iMX8BSPNXP

如今,一般的 iMX量产项目使用的是 Yocto 工程。而真正的设计过程中常常是对部分进行更改设定,此时若仍对整个项目进行编译,操作时间过长,不方便。尤其针对 i.MX8 系列,在 Bootloader 中加入了一些组件,若要修改这些组件,使用 Standalone 方式创建 BSP

会更加简单。本文针对 iMX8QXP,介绍了整个 BSP的创建,并着重讲述了 Bootloader的生成方式。

 

一.获取交叉工具链:

  1. 通过yocto 创建 SDK 先
  2. 执行 DISTRO=fsl-imx-wayland MACHINE=imx8qxpmek source fsl-setup-release.sh –b imx8qxpmek_toolchain
  3. Bitbake core-image-mininal –c populate_sdk
  4. Cp fsl-imx-wayland-glibc-x86_64-core-image-minimal-aarch64-toolchain-4.14-sumo.sh 到主机
  5. 执行之,安装交叉工具链





二.Bootloader

       iMX8QXP 的bootloader 由 U-boot、SCFW、ATF、SECO以及OPTEE 组成

  • uboot
  1. git clone https://source.codeaurora.org/external/imx/uboot-imx
  2. git checkout rel_imx_4.14.98_2.0.0_ga
  3. 执行下图命令编译u-boot



  • scfw: system controller firmware for imx8quadmax & imx8quadxplus ref boad
  1. 下载14.98_2.0.0_scfwkit-1.2.tar.gz

https://www.nxp.com/support/developer-resources/embedded-software/linux-software-and-development-tools/embedded-linux-for-i.mx-applications-processors:IMXLINUX?&tab=Design_Tools_Tab

 

       2.执行以下命令


        3.从如下网址下载  gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2

           https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

        4.解压tar.gz ,如下图执行命令,生成 scfw_tcm.bin 文件





  • ATF(bl31.bin) :ARM trusted FW
  1. git clone https://source.codeaurora.org/external/imx/imx-atf

            git checkout rel_imx_4.14.98_2.0.0_ga

  1. 依次执行下图命令,在 imx-atf/imxqx/release 路径下生成bin 文件



  • SECO:firmware container image
  1. wget https://www.nxp.com/lgfiles/NMG/MAD/TOCTO/firmware-imx-8.1.bin
  2. 执行下图命令,获取 mx8qx-ahab-container.img





  • OPTEE:不使用该组件,如需使用,详见参考资料。

 

 

  • Bootloader(flash.bin) 生成
  1. git clone https://source.codeaurora.org/external/imx/imx-mkimage

           git checkout –b master rel_imx_4.14.98_2.0.0_ga

  1. Copy u-boot.bin from u-boot/u-boot.bin to imx-mkimage/iMX8QX/.

            Copy scfw_tcm.bin from SCFW porting kit to imx-mkimage/iMX8QX/.

            Copy bl31.bin from ARM Trusted Firmware (imx-atf) to imx-mkimage/iMX8QX/.

            Copy the SECO firmware container image (ahab-container.img) to imx-mkimage/iMX8QX/.

            Run  make SOC=iMX8QX flash to generate flash.bin.

            If using OPTEE, copy tee.bin to imx-mkimage/iMX8QX/ and copy u-boot/spl/u-boot-spl.bin to imx-mkimage/

            iMX8QX/. Run  make SOC=iMX8QX flash_spl to generate flash.bin.

 

note:imx-mkimage 是一个主机工具,确保使用时的环境变量, 建议使用echo $CC 检查

 

三.kernel

  1. git clone https://source.codeaurora.org/external/imx/linux-imx
  2. git checkout imx_4.14.98_2.0.0.0_ga
  3. make defconfig
  4. LDFLAGS=”” CC=”$CC” make
  5. Then you will find

            Arch/arm64/boot/dts/freescale/fsl-imx8qxp-mek.dtb

            Arch/arm64/boot/Image

 

 

四.Boot from SD Card

  1. SD 卡分区

            $sudo fdisk /dev/sdb  //根据实际设备节点

            P

            d

            n

            p

            1

            20480

            102400

            P

            n

            p

            2

           1228800

            Default  (enter)

           P

           w

 

  1. 格式化分区:

           Mkfs.vfat  -n boot   /dev/sdb1

           Mkfs.ext3  -L rootfs  /dev/sdb2

 

 

  1. 烧写镜像:

         sudo dd if=???/ flash.bin  of=/dev/sdb  seek=32 bs=1K conv=fsync

         cp arch/arm64/boot/dts/freescale/fsl-imx8qxp-mek.dtb /media/user/boot

         cp arch/arm64/boot/Image  /media/user/boot

         tar zxvf  rootfs.tar.gz  -C  /media/user/rootfs

 

参考资料:

  1. i.MX_Linux_User's_Guide
  2. i.MX_Porting_Guide
  3. i.MX_Reference_Manual
  4. i.MX_Linux_Release_Notes

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论