【问题标题】:what's the difference between 'load mmc' and 'load addr'?'load mmc' 和 'load addr' 有什么区别?
【发布时间】:2020-08-27 05:46:29
【问题描述】:

这是我的 u-boot

## Booting kernel from Legacy Image at 42000000 ...
   Image Name:   Linux-4.1.8
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3458160 Bytes = 3.3 MiB
   Load Address: 70008000
   Entry Point:  70008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

然后卡住了。

42000000和70008000有什么区别?两者应该一样吗?

【问题讨论】:

  • 你真的认为你的问题的答案会解决“卡住”的真正问题吗?为什么不提供您的电路板的详细信息、典型的引导顺序以及它现在失败的不同之处? FWIW 您在 0x42000000 加载的 uImage 似乎无法解压缩(假设该 uImage 中有一个 zImage,这是 ARM 内核的典型特征)。

标签: linux-kernel u-boot


【解决方案1】:
Booting kernel from Legacy Image at 42000000 ...
  • 第一个地址是 u-boot 查找(可能是压缩的)Linux 内核映像的地址。

加载地址:70008000

  • 是u-boot复制解压后的linux内核镜像的地址

入口点:70008000 - linux内核入口点地址

  • 一旦 linux 映像被解压并复制到 加载地址 位置,入口点就是开始执行内核映像的地址,在这种情况下正是内存的开始内核被复制的区域。

您可以在下面的链接中找到更多详细信息:

http://lists.denx.de/pipermail/u-boot/2007-March/020043.html

https://balau82.wordpress.com/2010/04/12/booting-linux-with-u-boot-on-qemu-arm/

【讨论】:

  • 这让我很困惑:uImage 在文件系统上,为什么 u-boot 试图在内存中的某个位置找到它? 42000000 是内存地址吧?
  • “第一个地址是 u-boot 寻找(可能是压缩的)linux 内核映像的地址。” -- U-Boot 不是“寻找”的为了任何东西。该输出行 "## Booting kernel from Legacy Image at 42000000 ..."bootm 0x42000000 命令的直接结果。换句话说,您(或 bootcmd 环境变量)明确告诉 U-Boot 它应该 boot uImage在那个特定的内存地址。
猜你喜欢
  • 2014-08-05
  • 2011-07-08
  • 2010-11-29
  • 2016-10-13
  • 2013-07-02
  • 2012-01-13
  • 2015-11-05
  • 2015-05-08
相关资源
最近更新 更多