【问题标题】:U-boot start address?and u-boot.imx file contains?U-boot起始地址?和u-boot.imx文件包含?
【发布时间】:2017-08-12 08:26:44
【问题描述】:

我正在尝试了解嵌入式 Linux 原理,但无法确定 u-boot 输出的地址。

如何找到U-boot的起始地址?

例如,我有基于 i.MX6 四核处理器的 MX6-SabreSD 板,我从 U-Boot 得到以下输出:

U-Boot 2015.10-rc3 (Aug 10 2017 - 13:33:34)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: MX6-SabreSD
DRAM:  1 GiB
MMC:   FSL_SDHC: 0
No panel detected: default to LDB-WVGA
Display: LDB-WVGA (800x480)
In:    serial
Out:   serial
Err:   serial
Net:   using phy at 6
FEC [PRIME]
Warning: FEC MAC addresses don't match:
Address in SROM is         00:c0:08:88:a5:e6
Address in environment is  00:c0:08:88:9c:ce

Hit any key to stop autoboot:  0 
Booting from mmc ...
4788388 bytes read in 303 ms (15.1 MiB/s)
## Booting kernel from Legacy Image at 12000000 ...
   Image Name:   Linux-3.0.35
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4788324 Bytes = 4.6 MiB
   Load Address: 10008000
   Entry Point:  10008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

【问题讨论】:

  • 你要uboot在RAM中的执行地址吗?
  • 是的,我需要找出内存中u-boot地址的执行情况,你能帮帮我吗?
  • uboot 存储在哪里?是flash吗?
  • 在我的例子中 uboot 存储在 SDCARD...
  • uboot 重定位将在启动顺序中发生。我们必须在那里放置调试打印以找出 RAM 位置。

标签: linux-kernel u-boot


【解决方案1】:

U-boot起始地址?

U-Boot 的起始地址使用符号 CONFIG_SYS_TEXT_BASE 指定,该符号通常在板的配置头文件中定义,即 include/configs/.h
对于 i.MX6 板,此值通常为 0x17800000。
但可执行文件会将自身重新定位到上层 RAM。
如果您有构建文件,则可以通过查看 System.mapu-boot.map 文件来确认起始地址。

而u-boot.imx文件包含?

u-boot.imx 文件是 i.MX SoC 的 ROM 启动代码使用的二进制映像。
它由标准的 u-boot.bin 可执行文件组成,但前面带有 0xC00 字节标头。
详细信息在 U-Boot 文档文件doc/README.imximage 中,描述了如何构建二进制文件并将其写入媒体。

如何找到U-boot的起始地址?

起始地址似乎存储在 u-boot.imx 文件的偏移量 0x4(加载地址为 0x14)处(虽然我无法找到确认)。

u-boot.imx 文件存储在您的 SD 卡上,从第三个扇区开始(即字节偏移 0x400)。
请参阅embedded linux ARM booting address 与将二进制文件写入 SD 卡相关的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 2019-12-07
    • 2019-01-19
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多