iMX8M学习--MYZR-i.MX8MEVK内核编译烧录(二)

i.MX8M编译烧录

  • 为开发板烧录Linux系统
  • 为开发板编译固件
    • 安装MY-i.MX8M交叉编译工具
  • 编译源码
    • 编译内核文件
      • 编译内核目标文件
      • 编译内核模块包
    • 编译u-boot文件
    • 编译BootLoader

MYZR-IMX8M-EVK开发板
iMX8M学习--MYZR-i.MX8MEVK内核编译烧录(二)_第1张图片
从官方处获取了烧录工具,linux镜像,内核源码包和交叉编译等资料,需要的东西都很齐全了,开始今天的学习。

为开发板烧录Linux系统

官方为我准备了UUU-MYIMX8M-L4.14.98-Patch.*.rar,UUU-MYIMX8M-L4.14.98烧录工具压缩包,烧录工具中已拥有官方配置好的镜像。

把 “UUU-MYIMX8M-L4.14.98-Patch.*.rar” 解压到 “UUU-MYIMX8M-L4.14.98” 目录。

为开发板断电, 用 USB Type-C 线连接开发板和 PC, 并把开发板的 “Boot Mode” 拨到 “OFF ON”,再给开发板上电。

双击运行 “myimx8mevk-8mq-uuu.bat”,这时候 Windows 命令行窗口会看到如下信息:

iMX8M学习--MYZR-i.MX8MEVK内核编译烧录(二)_第2张图片
烧录完成后, Windows 命令行窗口信息如下:
iMX8M学习--MYZR-i.MX8MEVK内核编译烧录(二)_第3张图片
把开发板断电, “Boot Mode” 拨到 “ON OFF”, 并为开发板上电, 开发板即可正常启动。

为开发板编译固件

在官方配置好的ubuntu中编译开发板linux会比较方便。且下载内核源码包linux-4.14.98..tar.bz2,uboot源码包u-boot-2018.03..tar.bz2及bootloader源码包mkimage-imx4.14.98.*.tar.bz2。

安装MY-i.MX8M交叉编译工具

创建工具目录,在工具目录下下载gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz交叉编译工具包
在这里插入图片描述
下载完毕解压交叉编译工具:在这里插入图片描述
创建交叉编译工具配置脚本,
给予脚本执行的权限,
配置交叉编译环境。
iMX8M学习--MYZR-i.MX8MEVK内核编译烧录(二)_第4张图片
最后检查安装输入:
${CROSS_COMPILE}gcc -v
回复:
。。。。。。
gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05)
或者输入echo ${CROSS_COMPILE}gcc
ubuntu打印:
aarch64-linux-gnu-gcc

编译源码

创建工作目录,将内核源码包linux-4.14.98..tar.bz2,uboot源码包u-boot-2018.03..tar.bz2及bootloader源码包mkimage-imx4.14.98.*.tar.bz2复制到该目录下,并且解压所有包
iMX8M学习--MYZR-i.MX8MEVK内核编译烧录(二)_第5张图片

编译内核文件

编译前,首先配置交叉编译环境变量
myzr@u14045:source ~/my-work/03_toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.env

编译内核目标文件

myzr@u14045:cd ~/my-work/02_source/linux-4.14.98
生成目标.config:
myzr@u14045:make myimx8mq_defconfig
ubuntu打印->configuration written to .config时代表成功生成目标.config。

编译内核镜像
myzr@u14045:make Image -j4
编译结束后
myzr@u14045:cp arch/arm64/boot/Image ./

完成编译内核

编译内核模块包

myzr@u14045:myzr@u14045:make modules
创建内核模块的保存目录
myzr@u14045:mkdir modules
安装内核模块到指定目录
myzr@u14045:make modules_install headers_install INSTALL_MOD_PATH=./modules
打包内核模块文件

Image、 *.dtb 和 kernel-modules.tar.bz2 即编译得到的目标文件, 保存这三个文件

编译u-boot文件

myzr@u14045:cd ~/my-work/02_source/u-boot-2018.03
编译前,首先配置交叉编译环境变量
myzr@u14045:source ~/my-work/03_toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.env

然后又是编译三部曲
生成目标 .config 文件
myzr@u14045:make myimx8mevk-8mq_defconfig
编译u-boot目标文件
myzr@u14045:make
复制u-boot目标文件
myzr@u14045:cp arch/arm/dts/myimx8mevk-8mq.dtb ./myimx8mevk.dtb

myimx8mevk.dtb、 u-boot-nodtb.bin 和 u-boot-spl.bin 即编译得到的目标文件, 保存这三个文件, 在下一步的 bootloader 编译需要用到

编译BootLoader

myzr@u14045:cd ~/my-work/02_source/mkimage-imx_4.14.98
复制依赖文件 把u-boot编译得到的三个文件复制过来。
myzr@u14045:cp …/u-boot-2018.03/u-boot-nodtb.bin ./iMX8M/
myzr@u14045:cp …/u-boot-2018.03/u-boot-spl.bin ./iMX8M/
myzr@u14045:cp …/u-boot-2018.03/myimx8mevk.dtb ./iMX8M/
编译BootLoader目标文件
myzr@u14045:make SOC=iMX8M myimx8mevk OUTIMG=myimx8mevk-8mq.bin
复制BootLoader目标文件
myzr@u14045:cp ./iMX8M/myimx8mevk-8mq.bin ./

myimx8mevk-8mq.bin 即编译得到的目标文件, 保存这个文件。

你可能感兴趣的:(iMX8M学习--MYZR-i.MX8MEVK内核编译烧录(二))