imx8独立编译

本文详细介绍了在iMX8QM平台上编译uboot、kernel、SCfirmware和ATF的步骤,包括源码获取、版本选择、环境配置、编译过程及最终生成的镜像文件。通过这个流程,开发者可以为iMX8QM设备构建完整的固件系统。
摘要由CSDN通过智能技术生成

一.编译 uboot

  1. 获取 uboot 源码

git clone https://source.codeaurora.org/external/imx/uboot-imx

cd uboot-imx

2.选择编译版本 

git tag |grep rel_imx_4.14.

git checkout rel_imx_4.14.98_2.0.0_ga

git status

3. 设置编译环境

source /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux

前面安装的编译器路径

ls configs |grep imx8qm

make imx8qm_mek_defconfig

make

4.编译结束后的输出镜像

u-boot.bin

arch/arm/dts/fsl-imx8qm-mek.dtb

二、编译 kernel

1.获取源码

git clone https://source.codeaurora.org/external/imx/linux-imx
cd linux-imx
2.选择版本下载
git tag |grep rel_imx_4.14

git checkout rel_imx_4.14.98_2.0.0_ga

git status

3.配置编译环境

source /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux

make defconfig

make

make dtbs clean
make dtbs //生成dtb文件
4.编译结束后的输出镜像
arch/arm64/boot/dts/freescale/imx8qxp-mek.dtb, i.mx8dx-mek.dtb
arch/arm64/boot/Image

三、编译 SCfirmware

  1. 下载 scfw tool:imx-scfw-porting-kit-1.2.tar.gz
wget https://cache.nxp.com/lgfiles/bsps/imx-scfw-porting-kit-1.2.tar.gz

2.将下载的文件拷贝到当前目录解压

tar xzvf imx-scfw-porting-kit-1.2.tar.gz

cd ./packages

chmod a+x ./imx-scfw-porting-kit-1.2.bin

sh ./imx-scfw-porting-kit-1.2.bin

cd imx-scfw-porting-kit-1.2/src

tar xzvf scfw_export_mx8qm_b0.tar.gz

3.下载编译工具链

wget -P ./gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2?revision=2cc92fb5-3e0e-402d-9197-bdfc8224d8a5?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,6-2017-q2-update

(E.g. Linux 64-bit File:gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 (95.90 MB) )

注意最新验证过的工具链版本是 2017-q2,不建议使用最新的工具链。

4.拷贝前面下载的工具链到 toolchain 目录下

mv gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 toolchain/

cd toolchain

tar jxvf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2

cd ../src/scfw_export_mx8qm_b0

export TOOLS=../../toolchain/

make qm B=mek R=B0

 (如果需要看串口调试信息就增加 M=1 参数,U=2 表示使用 SCU 本身串口,注意重新编译之前要 make clean-qm 一下)

5.生成的 scfw 镜像在 imx-scfw-porting-kit-1.2/src/scfw_export_mx8qm_b0/build_mx8qm_b0/

四、编译 ATF

  1. 下载 ATF

git clone https://source.codeaurora.org/external/imx/imx-atf

cd imx-atf

git checkout rel_imx_4.14.98_2.0.0_ga

git status

source /home/host/imx8qm/linux/build_wayland/sdk/environment-setup-aarch64-poky-linux LDFLAGS="" make PLAT=imx8qm

 

2.编译结束后的输出镜像

./build/imx8qm/release/bl31.bin

五、运行 imx-mkimage 脚本生成 flash.bin

另打开一个终端,不要与编译 uboot&kernel 同用一个终端

  1. 下载 imx-mkimage

git clone https://source.codeaurora.org/external/imx/imx-mkimage

cd imx-mkimage

git tag

git checkout rel_imx_4.14.98_2.0.0_ga

git status

 imx-mkimage 需要调用 host PC 的 GCC 工具,所以需要退出之前的 terminal。重新进入,从而退出之前 source 的交叉编译变量。

2.使用 wget 命令获得 mx8qm-ahab-container.img

wget http://www.freescale.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.1.bin

chmod +x firmware-imx-8.1.bin && ./firmware-imx-8.1.bin --auto-accept

 mx8qm-ahab-container.img 位于 firmware-imx-8.1/firmware/seco/mx8qm-ahab-container.img

3.将 mx8qm-ahab-container.img, sc firmware bin, atf 和 uboot 拷贝至对应 iMX8QM 目录

cp firmware-imx-8.1/firmware/seco/mx8qm-ahab-container.img ./iMX8QM/

cp ../packages/imx-scfw-porting-kit-1.2/src/scfw_export_mx8qm_b0/build_mx8qm_b0/scfw_tcm.bin ./iMX8QM/

cp ../imx-atf/build/imx8qm/release/bl31.bin ./iMX8QM/

cp ../uboot-imx/u-boot.bin ./iMX8QM/

ls ./iMX8QM/

 
  1. 运行imx-mkimage 脚本生成 flash.bin 镜像
make SOC=iMX8QM flash_b0

  1. 结束后生成 flash.bin

./iMX8QM/flash.bin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值