iMX8MM uboot2021.04 linux5.15.32移植


我移植的板子是讯为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开发板上进行移植,最终生成生产所用的镜像。本文仅供学习参考,如有问题欢迎指正。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: imx8mm是一款由恩智浦公司(NXP)推出的处理器系列,其使用了U-Boot(统一引导加载器)作为启动引导程序。在imx8mm上,U-Boot的起始地址取决于该处理器系统的内存布局和配置参数。 一般情况下,imx8mm的U-Boot起始地址在Flash存储器中的某个分区或特定的Flash地址空间。具体的起始地址在开发板的硬件设计和BSP(板级支持软件)中定义。这样做是为了确保U-Boot可以正确地加载到内存中,以便引导操作系统的运行。一种常见的配置方式是将U-Boot放置在Flash存储器的起始扇区,通常是第一个扇区。 当系统上电或重启时,处理器会根据其引导设备设置读取Flash存储器的起始扇区,获得U-Boot的镜像文件。接着CPU会将U-Boot加载到系统内存的指定位置。一旦U-Boot被加载并在内存中运行,它将负责初始化硬件及软件环境,并继续引导操作系统的启动流程。 需要注意的是,具体的imx8mm板级支持软件版本和开发板设计可能会有所不同,因此U-Boot的起始地址可能会因此而有所变化。为了确保正确的U-Boot引导,应该查阅官方文档或相关的开发者指南,以获取准确的U-Boot起始地址信息。 ### 回答2: i.MX8MM U-Boot的起始地址是根据具体的硬件设计和启动设置而定的。一般情况下,i.MX8MM使用的U-Boot起始地址是在内存的前几M处,以确保在系统上电后能够正常引导。 在硬件设计中,通常会为U-Boot分配一个固定的内存地址,将U-Boot的二进制文件加载到该地址处。这个地址可以通过硬件手册或者开发板的设计文档来确定。对于不同的硬件设计,这个地址可能有所不同。 启动过程中,Boot ROM会从固定的存储介质(如闪存、SD卡或者NAND Flash)中加载U-Boot二进制文件到内存中的起始地址。然后,Boot ROM会将控制权交给U-Boot,从而启动整个系统。 在U-Boot启动后,它会进行一系列初始化操作,如设置寄存器、初始化外设等,然后加载操作系统或者其他应用程序。因此,U-Boot的起始地址是整个系统启动的重要标志,确保了系统的正常引导和运行。 总之,i.MX8MM U-Boot的起始地址是根据具体的硬件设计和启动设置而定的,一般位于内存的前几M处。这个地址是通过硬件设计和开发板的文档确定的,系统的引导过程依赖于正确设置和加载U-Boot二进制文件到内存中的起始地址。 ### 回答3: imx8mm芯片的U-Boot启动地址在该芯片的参考手册中有详细说明。U-Boot是一种用于嵌入式系统的开源引导加载程序,负责初始化硬件设备并加载操作系统。具体的起始地址会根据所使用的UBOOT版本以及硬件平台而有所不同。 一般情况下,U-Boot的起始地址通常位于该芯片的内存的低地址区域,比如0x80000000。这个地址是在U-Boot的配置文件中定义的。 在i.MX 8M Mini芯片系列中,例如imx8mm-evk开发板,U-Boot的起始地址可以在其配置文件imx8mm_evk_2019.dts中找到。在该配置文件中,U-Boot的起始地址定义为: chosen { bootargs = "console=ttymxc0,115200 " "root=/dev/mmcblk2p2 rootwait rw"; linux,usable-memory-range = <0x80000000 0x7fffffff>; }; 其中,0x80000000就是U-Boot的起始地址。 总结起来,imx8mm芯片的U-Boot的起始地址是根据硬件平台和UBOOT版本来确定的,并且通常位于内存的低地址区域。具体的起始地址可以在配置文件中找到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sonboy哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值