首页 > 解决方案 > uboot中的fatload mmc和bootm是什么意思?

问题描述

我无法理解这些命令,例如

fatload mmc 0 0x3000000 uImage
fatload mmc 0 0x2A00000 devicetree.dtb
bootm 0x3000000 - 0x2A00000

#fatload mmc 0 0x3000000 uImage. 它在做什么?是否将uImage加载为胖分区并加载到RAM地址0x3000000?

bootm 0x3000000 - 0x2A00000- ?这是否意味着从 RAM 地址 0x3000000 引导到 0x2A00000?

标签: embedded-linuxu-boot

解决方案


U-Boot 运行放置在(处理器的)RAM 中的代码,尽管它也可以从其他媒体读取数据。引导过程通常分两步进行:

  1. 将操作系统映像从媒体(以太网、闪存、USB、MMC)读入 RAM
  2. 跳转到 RAM 中图像的第一条指令

uImage是(很可能是 Linux)内核。

xxx.dtb 是编译形式的设备树。它包含硬件信息,因此可以将信息与内核分开保存。

现在,要从 FAT 格式的 MMC 卡中读取图像,命令是:

fatload mmc <dev>[:partition] <loadAddress> <bootfilename>

因此,这 2 个fatload命令正在将 MMC 卡中的 2 个文件加载到处理器的内存/RAM 中。

现在,关于bootm: 此命令启动内核映像运行。语法是:

bootm <address of kernel> <address of ramdisk> <address of dtb>

如果内核被配置在不需要它/它们的地方,则可以省略ramdisk和/或的地址。dtb

在您的情况下,您没有使用中间ramdisk的破折号-


推荐阅读