我移植的板子是讯为i.MX8MM开发板,参考板为官方 8MMINILPD4-EVK开发板。

  1. iMX8MM uboot2021.04 linux5.15.32移植
  2. iMX8MM启动流程
  3. iMX8MM u-boot2021.04移植
  4. iMX8MM linux5.15.32移植
  5. iMX8MM buildroot-2022.02.5构建根文件系统

1. 资料和工具获取

和前面iMX6ULL的基本相似,从NXP官网获取相关资料,资料里有详细说明怎么获取源码和工具,以及环境搭建。

1.1 官方源码资料

Embedded Linux for i.MX Applications Processors是NXP专门针对i.MX系列维护的uboot和linux等源码,有不同的版本和分支。截至文章发布官方最新版本Linux 5.15.52_2.1.0,为了和之前的iMX6ULL维护一份代码我这里选择Linux 5.15.32_2.0.0​这个版本。下载文档资料和官方demo板的镜像包,可以参考使用。
在这里插入图片描述
文档包:L5.15.52_2.1.0_LINUX_DOCS.zip
镜像包:LF_v5.15.52-2.1.0_images_IMX8MMEVK.zip

1.2 uuu工具获取

uuu全称是Universal Update Utility,是nxp通用的下载工具,类似于STM32CubeProgrammer。非常好用,开发必不可少。但是uuu是命令行操作的,需要学习一下才能上手,下面有pdf文档可以参考。Linux上可以通过命令$ sudo apt install uuu直接安装uuu,Windows上需要下载下面的uuu.exe。
在这里插入图片描述
地址:https://github.com/NXPmicro/mfgtools/releases/tag/uuu_1.5.4

2. 源码获取

阅读上面下载的文档i.MX_Linux_Users_Guide.pdf,利用git获取源码。

2.1 atf

执行下列命令获取源码,我选择的分支是lf_v2.6,可根据自己的需要选择合适的分支下载。

$ git clone https://source.codeaurora.org/external/imx/imx-atf -b lf_v2.6

# 或者下载主线然后切换分支
$ git clone https://source.codeaurora.org/external/imx/imx-atf
$ git checkout lf_v2.6

$ git branch              # 查看当前分支
$ git branch -a           # 列出所有分支
$ git branch -d master    # 删除主线分支

2.2 uboot

执行下列命令获取源码,我选择的分支是lf_v2021.04,可根据自己的需要选择合适的分支下载。

$ git clone https://source.codeaurora.org/external/imx/uboot-imx -b lf_v2021.04

# 或者下载主线然后切换分支
$ git clone https://source.codeaurora.org/external/imx/uboot-imx
$ git checkout lf_v2021.04

$ git branch              # 查看当前分支
$ git branch -a           # 列出所有分支
$ git branch -d master    # 删除主线分支

2.3 linux

执行下列命令获取源码,我选择的分支是lf-5.15.y,可根据自己的需要选择合适的分支下载。

$ git clone https://source.codeaurora.org/external/imx/linux-imx -b lf-5.15.y

# 或者下载主线然后切换分支
$ git clone https://source.codeaurora.org/external/imx/linux-imx
$ git checkout lf-5.15.y

$ git branch              # 查看当前分支
$ git branch -a           # 列出所有分支
$ git branch -d master    # 删除主线分支

3. 准备环境

3.1 安装交叉编译工具链

执行以下命令,在Linux下安装arm64交叉编译工具链。iMX8MM是64位的ARM处理器,所以需要安装64位的交叉编译工具链。

$ sudo apt install gcc-aarch64-linux-gnu

在这里插入图片描述

3.2 uuu

设置开发板为USB串行启动,连接OTG到电脑。Linux下执行$ uuu -lsusb,识别到片子则环境正常。
在这里插入图片描述

Windows下执行可以将uuu.exe放到一个系统的环境变量目录下,也可以将uuu.exe放到任意目录下在本目录下运行,按住Shift键在uuu.exe目录下右击,选择在此处打开Powershell窗口打开命令行窗口。执行命令.\uuu.exe -lsusb,识别到片子则环境正常。
在这里插入图片描述

4. 总结

下载好所需文件,准备好环境。uboot和linux一套代码是可以同时支持多个板子的,本文将用之前iMX6ULL移植代码移植iMX8MM。下载的最新版本与本文使用的版本不一致是没有太大关系的,只要下载相应的分支保证大版本一致即可。后面就在讯为i.MX8MM开发板上进行移植,最终生成生产所用的镜像。本文仅供学习参考,如有问题欢迎指正。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐