i.MX8QM Standalone 方式搭建开发环境

关键字 :i.MX8NXP

一、交叉编译环境搭建

1. 安装软件包


sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm

 

2. 下载 repo


mkdir ~/bin

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo

chmod a+x ~/bin/repo

export PATH=~/bin:$PATH

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

 

3. 设置 yocto 工程


git config --global user.name ipual        

git config --global user.email ipual@wpi.com

git config --list

mkdir imx-yocto-bsp

cd imx-yocto-bsp

repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_ga.xml

repo sync

 

4. 编译 yocto 工具链


DISTRO=fsl-imx-wayland MACHINE=imx8qmmek source fsl-setup-release.sh -b build-wayland

bitbake meta-toolchain

 

编译完成会在 build-wayland-imx8qmmek/tmp/deploy/sdk 目录下生成如下文件

fsl-imx-wayland-glibc-x86_64-meta-toolchain-aarch64-toolchain-4.14-sumo.sh

 

5. 安装工具链


cd ./tmp/deploy/sdk

chmod +x fsl-imx-wayland-glibc-x86_64-meta-toolchain-aarch64-toolchain-4.14-sumo.sh

./fsl-imx-wayland-glibc-x86_64-meta-toolchain-aarch64-toolchain-4.14-sumo.sh


注:工具链安装目录可自行选择,eg:/home/host/imx8qm/linux/build_wayland/sdk

 

二、编译 uboot

1. 新建一个目录


mkdir standalone

 

2. 获取 uboot 源码


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

cd uboot-imx

ls

 

 

3. 选择编译版本


git tag |grep rel_imx_4.14.

 


git checkout rel_imx_4.14.98_2.0.0_ga

git status

 


4. 设置编译环境


source /home/host/imx8qm/linux/build_wayland/sdk/environment-setup-aarch64-poky-linux

 

ls configs |grep imx8qm


 

 

make imx8qm_mek_defconfig

make

 

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


u-boot.bin

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

 


三、编译 kernel


1. 进入目录


cd standalone

 

2. 获取源码


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

cd linux-imx

ls

 

 

git tag |grep rel_imx_4.14

 

 

git checkout rel_imx_4.14.98_2.0.0_ga

git status

 


3. 配置环境编译


source /home/host/imx8qm/linux/build_wayland/sdk/environment-setup-aarch64-poky-linux

make defconfig

LDFLAGS="" CC="$CC" make

LDFLAGS="" CC="$CC" make dtbs clean

LDFLAGS="" CC="$CC" make dtbs

 

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

arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dtb

arch/arm64/boot/Image


 

四、编译 SCfirmware


1. 进入目录


cd standalone

 

2. 下载 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

 

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


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

 

4. 下载编译工具链


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,不建议使用最新的工具链。

 

cd ..

mkdir toolchain

 

5. 拷贝前面下载的工具链到 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 一下)




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




五、编译 ATF


1. 进入目录


cd standalone

 

2. 下载 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

 

 

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


./build/imx8qm/release/bl31.bin

 

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


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

 

1. 进入目录


cd standalone

 

2. 下载 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 的交叉编译变量。

 

3. 使用 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

 

4. 将 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/

 



5. 运行 imx-mkimage 脚本生成 flash.bin 镜像


make SOC=iMX8QM flash_b0

 

6. 结束后生成 flash.bin


./iMX8QM/flash.bin

 

七、参考资料


《MX8X_4.14.98_ga_kernel_V3-20190903_内核定制》

《i.MX_Linux_User's_Guide》

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

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

评论